Linux on Apple MacBook

Yep, I now own a MacBook .. Core 2 Duo one, and the primary reason I choose is that it’s a great hardware to run Linux (and it’s relatively cheaper). I did some research to convince myself that Linux run well on this notebook. I could tell you that ‘now’ is the right time to have Linux running on MacBook since all hardware components are now well supported. Even better, newer distribution such as Ubuntu 7.04, which officially use 2.6.20, supports most parts of MacBook out-of-the-box. :)

Installation

You may completely overwrite OSX by Linux, but I think it is still a good idea to leave OSX on MacBook at least to upgrade firmware. So, the set up will be dual boot (or even triple boot with .. err .. MS Windows XP/Vista). Next, installation steps.

In Mac OS X, make sure you update all firmware available. Upgrading software is also preferred.

Download the latest version of rEFIt and follow its instruction to install rEFIt in your OSX volume. rEFIt is an EFI boot menu and EFI GPT utilities.

Download Boot Camp from Apple’s web site, run and follow its instruction, burn a Windows Driver CD (you will need it), and make sure you partition the disk so that available space is large enough for Linux. My choice would be that largest possible for Linux, smallest possible for OSX. After partitioning the disk, reboot.

Alternatively to Boot Camp, you may use ‘diskutil’, a command line to partition your disk. Just make sure that you know exactly what you are doing.

Install Linux. I’d recommend Ubuntu 7.04 Feisty Fawn. Good news is that Feisty uses the Linux kernel version 2.6.20, which includes several supports for MacBook (and other Apple machines). So, just boot up the live CD. If it produces a kernel panic, try boot option of

lpj=8000000

for MacBook 2.0 GHz, or

lpj=7330000

for MacBook 1.8 GHz.

Double click “Install”, at disk partition step, choose “Manually edit partition”. Do NOT touch sda1 and sda2, they are EFI GPT and Mac OS X, respectively. Make sure your root partition is sda3 or sda4. The others can be sda5 and beyond.

Okay, a lecture, MacBook uses Extensible Firmware Interface (EFI) instead of BIOS, and EFI uses GUID Partition Table (GPT) to describe partitions. There is no notion of ‘extended’ or ‘logical’ partition in GPT, and you are no longer limit to 4 (primary+extended) partitions. GPT allows up to 128 partitions, but for backward compatible with legacy BIOS mode, bootable partition(s) should be one of the first 4 partitions. Don’t worry, Linux knows EFI for quite some time and GNU Parted is capable to handle GPT quite well.

After reboot, you should see Tux sitting in the beautiful menu of rEFIt. Choosing Tux will bring you to GRUB boot loader. If not, reboot to rEFIt menu and choose ‘Partition Tool’ to sync GPT and MBR. GRUB should work after sync.

Things that work out-of-the-box and without additional configurations are

  • Intel HD Audio (snd_intel_hda)
  • Marvell 88E8053 10/100/1000BASE-T Gigabit Ethernet (sky2)
  • USB Controller (uhci_hcd, ehci_hcd) .. noted that build-in keyboard, AppleTouch, Infrared, and iSight are hardwired to USB.
  • Bluetooth
  • Agere FireWire (ohci_1394)
  • Suspend-to-Disk (hibernate) and Suspend-to-RAM (suspend)
  • Special keys (brightness, volume, eject)

Display

MacBook is equipped with Intel GMA 950 Integrated Graphics processor and 1280×800 13.3-inch glossy TFT display. X.org’s i810 driver + i915 DRM work well for this. However, it is 1024×768. To get native resolution of 1280×800, ‘915resolution’ helps.

# aptitude install 915resolution

Restart X .. done.

Apple PowerBook Keyboard

Okay, keyboard works, but I don’t like default mode, i.e, Fn + F1 = F1. I just want F1 to be F1 and use Fn to get special keys (backlight, volume, etc.) To do so, append the following to /etc/modprobe.d/options

options hid pb_fnmode=2

PowerBook Keyboard mode can be controlled via /sys/module/hid/parameters/pb_fnmode. 1 = OS X-ish, 2 = PC-ish

AppleTouch

Again, it works via X.org’s synaptics touchpad driver, but the default config sucks (sorry ..). Additionally, only one button may not be enough. Synaptics driver is very powerful and flexible if you know how to deal with. Try

$ man synaptics

You’ll see all available options. My config for synaptics is the following:

Section "InputDevice"
        Identifier      "Synaptics Touchpad"
        Driver          "synaptics"
        Option          "SendCoreEvents"        "true"
        Option          "Device"                "/dev/psaux"
        Option          "Protocol"              "auto-dev"
        Option          "LeftEdge"              "20"
        Option          "RightEdge"             "1200"
        Option          "TopEdge"               "20"
        Option          "BottomEdge"            "370"
        Option          "FingerLow"             "15"
        Option          "FingerHigh"            "30"
        Option          "MinSpeed"              "0.79"
        Option          "MaxSpeed"              "0.88"
        Option          "AccelFactor"           "0.015"
        Option          "MaxTapTime"            "100"
        Option          "MaxTapMove"            "80"
        Option          "MaxDoubleTapTime"      "95"
        Option          "TapButton1"            "1"
        Option          "TapButton2"            "3"
        Option          "TapButton3"            "2"
        Option          "VertTwoFingerScroll"   "true"
        Option          "VertScrollDelta"       "10"
        Option          "HorizScrollDelta"      "10"
        Option          "ClickTime"             "100"
        Option          "SHMConfig"             "on"
EndSection

You may use ‘synclient‘ to fine tune edges, pressure, timing, etc.

AirPort Extreme

MacBook C2D uses relatively new WiFi chip from Atheros that supports up to 802.11n. You have two options here: ndiswrapper or madwifi. Ubuntu provides ndiswrapper and should works out-of-the-sbox. Anyway, newer versions of ndiswrapper fixed many issues occurred in MacBook. First, install additional packages

# aptitude install linux-headers-generic
# aptitude install build-essential

Then, download ndiswrapper, unpack, build, and install

$ tar xzf ndiswrapper-1.44.tar.gz
$ cd ndiswrapper-1.44
$ make
$ sudo make install

Next, you’ll need the proprietary driver written for MS Windows. It is in the disk burned during Boot Camp.

$ mkdir atheros-driver
$ cd atheros-driver
$ unrar x atherosxpinstaller.exe

Install the driver, and insert ndiswrapper module. The wlan0 interface will be up.

# ndiswrapper -i /path/to/atheros-driver/net5416.inf
# modprobe ndiswrapper

If things go well, you may want to append the following in /etc/modules

ndiswrapper

Now, ndiswrapper will be inserted automatically during boot up your system.

For madwifi, you need snapshot version of 0.9.30.13 or newer. Download, unpack, build, and install.

$ tar xzf madwifi-hal-0.9.30.13-current.tar.gz
$ cd madwifi-hal-0.9.30.13-r2351-20070519
$ make
$ sudo make install

Just replace existing files if there exist. Now, it’s ready to use

# modprobe ath_pci

The wireless LAN device wifi0 should be ready, and the ath0 interface should also be created automatically. Since madwifi is multiband driver, it can create multiple network interfaces, running different mode, from a single wireless device. Although ndiswrapper 1.44 is more stable, I’d prefer madwifi mainly because it is open source, and it supports monitor mode.

iSight

This does not work out-of-the-box. You’ll need a patched version of uvcvideo 0.1.0-e. Download, unpack, make, and install

$ tar xzf linux-uvc-0.1.0-e.tar.gz
$ cd linux-uvc-0.1.0-e
$ make
$ sudo make install

The module will be installed in /lib/modules/<kernel-version>/usb/media, and should be moved to /lib/modules/<kernel-version>/misc/. A utility named ‘extract’, provided with uvcvideo, to load Mac OS X firmware of iSight.

# mount /dev/sda2 /mnt
# extract /mnt/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/AppleUSBVideoSupport
# modprobe uvcvideo

Alternatively, download isight-extract utility. This utility will extract iSight firmware from AppleUSBVideoSupport.

$ cd isight_extract
$ make
$ extract /mnt/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/AppleUSBVideoSupport

The file named ‘isight.fw’ will be created in the current directory. Put this file to /lib/firmware/<kernel-version> iSight firmware should be loaded automatically when uvcvideo is inserted. Try ekiga with V4L2 driver to test iSight camera.

iRemote

To use iRemote, install inputlirc

# aptitude install inputlirc

Now, iRemote will be able to control volume :D .. Additionally, install lirc and lirc-x and get more fun

# aptitude install lirc lirc-x

The two packages provides many utilities, including ircat, irexec, irxevent. Consult manpages for more information. Also, this is <a href=files/lircrc>my ~/.lircrc</a> to control a number of applications via iRemote.

Not test yet

  • FireWire

Seem to work though.

ฆาตกรรมในโรงเรียน

มาจิโกะกำลังจะย้ายจากโอซาก้าไปอยู่โตเกียวตามครอบครัว เย็นวันนี้เธออยากไปเดินเล่นดูโรงเรียนเป็นครั้งสุดท้าย และเป็นวันนี้เองที่เพื่อนของเธอฆ่าตัวตายต่อหน้าเธอ …

ยังไม่ทันที่เธอจะรู้จักเพื่อนใหม่ในโรงเรียนแห่งใหม่ในโตเกียวได้ดีนัก หนึ่งในเพื่อนร่วมห้องของเธอก็ประสบอุบัติเหตุ ซึ่งภายหลังเธอบังเอิญได้รู้ความจริงว่าเป็นการฆาตกรรม … ไม่ทันจะได้คลี่คลายคดีเดิม คดีใหม่ก็เกิดตามมาอีก .. ด้วยรู้ว่าการตายของเพื่อนเธอไม่ใช่อุบัติเหตุ เธอจึงแอบสืบหาฆาตกรอย่างลับๆ โดยมีเพื่อนชายของเธอคอยช่วยเหลือ .. ไม่นานเธอก็พบว่าการตายของเพื่อนร่วมห้องของเธอเกี่ยวข้องกับโรงเรียน และฆาตกรก็เป็นคนในโรงเรียนนี้เอง … เรื่องเหมือนจะคลี่คลายและจบได้โดยง่าย แต่ความจริงไม่ใช่ … ไม่ใช่แค่นั้น …

“ฆาตกรรมในโรงเรียน” แปลมาจากเรื่อง Shisha no Gakuensai ของ อาคากะวา จิโร ผู้แต่งซีรีส์แมวสามสีและซายะกะนั่นเอง เรื่องนี้แปลโดยคุณ ปัญจารีย์ จารีธนารักษ์ นักแปลหน้าใหม่ฝีมือไม่แพ้รุ่นพี่ๆ .. สำหรับ ฆาตกรรมในโรงเรียน อาจจะมีอารมณ์ขันน้อยไปสักนิดและบรรยากาศค่อนข้างจริงจังเมื่อเทียบกับซีรีส์ดังทั้งสองเรื่อง อย่างไรก็ตามความสนุกสนานและเงื่อนปมต่างๆ ยังคงไว้ลาย อาคากะวา จิโร เรื่องนี้ยังถูกนำไปเขียนเป็นการ์ตูนและทำเป็นภาพยนตร์ด้วย .. แต่เวอร์ชันหนังสือน่าจะหนุกสุดแล้ว :)

/offtopic .. อ่อ วันนี้สองพรรคใหญ่ คงวุ่นๆ สินะ …

Nodame Cantabile

หนึ่งหนุ่มหนึ่งสาวบังเอิญได้มาอยู่ห้องข้างๆ กัน ทั้งคู่เหมือนกันตรงรักดนตรีคลาสสิคและเป็นคนมีพรสวรรค์ทางดนตรี ฝ่ายชายสุดหล่อพ่อรวยเก่งรอบด้านเพอร์เฟคจนไม่รู้ตัวว่าขาดสิ่งสำคัญที่จะทำให้ตัวเองก้าวไปสู่ความสำเร็จในฐานะวาทยกร ในขณะที่ฝ่ายสาวตรงข้ามกับชายหนุ่มแทบทุกอย่าง เพ้อฝัน ซกมก ตะกละ และมั่วนิ่มไปทุกเรื่อง แต่ด้วยพรสวรรค์ระดับหูเทพ เธอสามารถเล่นเปียโนตามได้ด้วยการฟังครั้งเดียวโดยไม่ต้องดูสกอร์ จริงๆ แล้วเธอชอบเล่นตามใจตัวเองมากกว่าตามสกอร์ ถึงจะไพเราะและสร้างความประหลาดใจอยู่บ่อยครั้ง แต่ดนตรีของเธอออกจะมั่วๆ หากวัดตามบรรทัดฐานที่เคร่งครัดของดนตรีคลาสสิค

ด้วยเหตุผลบางประการชายหนุ่มโคตรเพอร์เฟคไม่สามารถเดินทางออกนอกญี่ปุ่นได้ เขาจึงท้อแท้เพราะคิดว่าเก่งแค่ไหนก็ไม่มีทางโกอินเตอร์ได้ และบังเอิญอีกว่า เป็นวาทยกรระดับโลกที่สังเกตเห็นพรสวรรค์ของทั้งสองคน เขาตัดสินใจสอนให้ทั้งสองคนรู้จักดนตรีมากขึ้นไปอีก และผลักดันให้ทั้งสองก้าวไปให้ไกลกว่าที่เป็นอยู่ และคงไม่ได้สอนอย่างมีแบบแผนแน่ๆ เพราะอีกด้านหนึ่งของวาทยกรระดับโลกนี้เป็นตาแก่จอมลามกสุดๆ ด้วย ..

สรุปแล้ว เรื่องนี้เจ๋งมากๆ เจ๋ง 360 องศา ความสนุกสนาน แรงบันดาลใจ ดนตรีคลาสสิคเพราะๆ .. และ ฮาโคตรๆ :D

Nodame Cantabile ตัวต้นฉบับเป็นการ์ตูนในชื่อเดียวกันนี้แต่งโดย Tomoko Ninomiya เป็นการ์ตูนที่ได้รางวัล Kodansha Manga Award ในปี 2004 นอกจากเวอร์ชัน manga แล้วยังมี anime และซีรีส์ live action ที่เพิ่งออกอากาศเมื่อปลายปีที่แล้ว ในมุมหนึ่ง Nodame Cantabile มักได้รับการเปรียบว่าเป็น Swing Girls ที่ใช้ดนตรีคลาสสิคแทนแจ๊ส พอทำเป็นซีรีส์หลายตอน มิติมันก็ได้ละเอียดลึกกว่า มีมุมที่รอบด้านกว่า Swing Girls ที่เป็นภาพยนตร์ … ที่ต้องให้เครดิตทั้งสองเรื่องคือไม่ใช่แค่เอาดนตรีมาเป็นเครื่องมือในการสร้างโครงของบทแล้วโดนองค์ประกอบอื่นเบียดจนจมหาย ทั้งสองเรื่องใส่ใจกับแก่นของดนตรีอย่างพอเหมาะ แม้จะฮา ก็มีดนตรีดีๆให้ฟังได้อิ่มพอ มีสาระดนตรีที่ทำให้ผู้ชมอินไปกับมันได้ ประกอบกับได้นักแสดงฝีมือดี ผลคือ Nodame Cantabile และ Swing Girls กวาดรางวัลมาเพียบ

สำหรับคนชอบดนตรีคลาสสิค ตัวอย่างเพลงเด่นๆ เท่าที่จำได้ (ก่อนจะเพลินจนลืม) ก็มี

  • Symphony No.7 และ No.9 ของ Ludwig Van Beethoven
  • Rhapsody in Blue ของ George Gershwin
  • Piano Concerto No.2 ของ Sergei Rachmaninoff
  • Fantasies Impromptu ของ Frederic Francois Chopin
  • Violin Concerto ของ Felix Mendelssohn
  • Symphony No.1 ของ Johannes Brahms
  • Caprice No. 24 ของ Niccolo Paganini … เวอร์ชันในเรื่องน่าจะเป็น Paganini Variations Op.35 ของ Brahms สำหรับเดี่ยวเปียโน

ถ้าจำไม่ผิด น่าจะมีของ Mozart กับ Massenet ปนๆ อยู่ แถมด้วยเวอร์ชันออร์เคสตร้าของเพลง Love of My Life ในอัลบัม Supernatural ของ Carlos Santana .. :P

หามาดูนะท่านๆ ทั้งหลาย … ถ้ายังไม่เคยดู Swing Girls ก็ไปหามาดูด้วยเหมือนกัน .. แนะนำๆ …

Credit to น้องฝ้าย (เจ้าลัทธิ)

Zenoss on Debian

เพิ่งมีโอกาสได้ลง Zenoss บน Debian เพราะเครื่องที่ลง Cacti ไว้ดิสก์มันเจ๊งไปแล้ว .. อ่าน doc แล้วเหมือนจะยาก จริงๆ แล้วลงไม่ยากนะ เขียนแปะไว้ในห้องทดลองสักหน่อย

Zenoss 1.1 on Debian

Zenoss 1.1 on Debian

ขั้นตอนอย่างง่ายๆ

สร้าง user สำหรับ zenoss

# adduser --system --shell /bin/bash --home /opt/zenoss --ingroup src --disabled-password zenoss

ถ้า adduser ไม่สร้าง directory และตั้ง permission ให้ก็ดำเนินการตามนี้

# mkdir /opt/zenoss
# chown zenoss /opt/zenoss

su เป็น zenoss แล้วก็สร้างไฟล์ ~/.bashrc ตามนี้

export ZENHOME=/opt/zenoss
export PYTHONPATH=$ZENHOME/lib/python
export PATH=$ZENHOME/bin:$PATH

เพิ่ม user zenoss ใน /etc/sudoers ตามนี้

Defaults    env_reset
Defaults    env_keep = "PYTHONPATH ZENHOME"
zenoss ALL=(ALL) NOPASSWD: /opt/zenoss/bin/python,/usr/bin/kill

ลงแพ็คเกจที่จำเป็นอื่นๆ

# aptitude install mysql-server-5.0 python-dev libmysqlclient-dev g++ make patch bzip2 autoconf swig

โหลด & untar & ติดตั้ง zenoss

$ tar xzf zenoss-1.1.2.tar.gz
$ cd zenoss-1.1.2
$./install.sh

รอ รอ ….

และแล้ว

เย้ .. จริงๆ แล้วจะติดตั้ง zenoss โดยใช้ไลบรารีต่างๆ ที่มีอยู่แล้วในเดเบียนก็ได้ แต่ขั้นตอนจะยุ่งยากกว่านี้โข .. อีกหน่อย zenoss คงจะออก .deb ให้ติดตั้งง่ายๆ ล่ะน่า

Disk Usage Analyzer

สำรวจพื้นที่วันนี้ /home เหลือ 1 GB ..เฮือกๆ .. ต้องเก็บกวาดฮาร์ดดิสก์ซักหน่อยแล้ว

แต่ก่อนจะใช้ du -sk * | sort -nr หาดูว่าไฟล์มันไปปูดอยู่แถวไหนบ้าง เยอะผิดปกติหรือเปล่า ? .. มันก็พอได้ แต่เดี๋ยวนี้มีเครื่องมือช่วยแล้ว …

Disk Usage Analyzer หรือ Baobab นั่นเอง จริงๆ มันติดมากับ GNOME ตั้งแต่ 2.16 แล้วนะ (ใน Kitty Repo มี baobab ให้ใช้ตั้งแต่ Ubuntu 5.04 ยุค GNOME 2.10) แต่เพิ่งจะน่าใช้งานก็ในเวอร์ชัน 2.18 ที่แสดงการใช้พื้นที่ในแต่ละ directory เป็นวงๆ ดูแล้วเข้าใจง่ายดี

/me วันนี้ได้พื้นที่กลับมาใช้งานอีก 15 GB .. :D

แก้ไข: codename ของ Ubuntu 7.10 คือ Gutsy Gibbon ไม่มี ‘s’ อย่างที่บล็อกไว้วันก่อนโน้น ตามตารางจะรีลีส 18 ตุลาคม 2550 และใช้ codename ย่อยว่า Tribe

DOSBox 0.70

DOSBox 0.70 ออกมาตั้งแต่ 2 มีนาคม 2550 แต่ใน feisty fawn ยังเป็นเวอร์ชัน 0.65 อยู่เลย …ไม่รอแล้ว debuild เองก็ได้ (lintian บ่นๆ .. แต่ไม่สน ;p)

อยากเสี่ยงกับของสด ตามมาใช้ได้ที่ Kitty Repo. (ตอนนี้ของ feisty มีแค่สองแพ็คเกจ :P) หรือจะดาวน์โหลดไปลงด้วย gdebi ก็ได้

Download: dosbox_0.70-0kitty1_i386.deb

ATA over Ethernet again

วันนี้ลอง ATA over Ethernet อีกรอบ เครื่องเซ็ตเดิม แต่อัปเกรดจาก Edgy Eft เป็น Feisty Fawn

# hdparm -tT /dev/etherd/e0.0 

/dev/etherd/e0.0:
 Timing cached reads:   502 MB in  2.00 seconds = 250.51 MB/sec
 Timing buffered disk reads:   24 MB in  3.23 seconds =   7.42 MB/sec

อะฮะ .. 7.42 MB/s … เร็วกว่า การทดสอบครั้งก่อน ประมาณเท่าตัว :)

อาร์ทิมิส ฟาวล์ และ อาณาจักรที่สาปสูญ

อาร์ทิมิส ฟาวล์ อาชญากรอัจฉริยะวัย 14 ใช้เวลาศึกษาค้นคว้าจนพบเผ่าที่หายสาปสูญ “ชาวดีมอน” ผู้อยู่เหนือกาลอวกาศ ในโลกปกติไม่มีทางที่จะพบเห็นชาวดีมอนได้เลย แต่อาร์ทิมิสสามารถถอดสมการเพื่อหาตำแหน่งและเวลาที่ชาวดีมอนจะปรากฏตัวบนโลกได้ และเพื่อพิสูจน์ว่าเขาคิดถูก อาร์ทิมิสเดินทางไปทั่วโลกเพื่อดักรอการปรากฎตัวของชาวดีมอน แม้จะพลาดหลายครั้ง แต่ในที่สุด อาร์ทิมิส ก็ได้พบชาวดีมอน สมการของเขาสามารถทำนายการปรากฎตัวของเผ่าพันธุ์ที่สาปสูญได้จริง .. แต่ไม่ได้มีเพียงเขาคนเดียวที่สามารถทำนายได้ อาชญากรฝ่ายตรงข้ามผู้เป็นอัจฉริยะไม่น้อยกว่าอาร์ทิมิสก็ทำได้เช่นกัน และเป้าหมายของศัตรูผู้นี้คือการเข้าถึงดีมอนก่อนอาร์ทิมิส .. เรื่องยุ่งไปกว่านั้น เมื่ออารยธรรมของชาวดีมอนกำลังเข้าสู่วิกฤติครั้งใหญ่ หากแก้วิกฤติไม่ทันชาวดีมอนทั้งหมดจะหายไปตลอดกาล .. เป็นอีกครั้งที่ อาร์ทิมิส เป็นส่วนสำคัญในการกู้วิกฤติของชาวพีเพิล พร้อมกับ บัตเลอร์ ฮอลลี่ โฟลลี่ และ มัลช ในขณะที่ศึกอีกด้านเขาก็ต้องสู้กับศัตรูที่เปรียบเสมือนเป็นเงาของเขาเอง

อาร์ทิมิส ฟาวล์ และ อาณาจักรที่สาปสูญ แปลจาก Artemis Fowl and the Lost Colony ของ โอเวน โคลเฟอร์ (Eoin Colfer – Eoin ออกเสียงเป็น Owen) โดย คุณรชต ประชาเรืองวิทย์ เป็นเล่มที่ 5 ในซีรีส์อาร์ทิมิส ฟาวล์ สำหรับผู้ที่ชอบอาร์ทิมิส ฟาวล์ ได้อ่านแล้วไม่ผิดหวังแน่นอน ในเล่มนี้จะได้เห็นมิตรภาพที่อบอุ่น การผจญภัยในโลกแห่งจินตนาการที่สนุกสนาน ความเป็นอัจฉริยะของอาชญากรตัวน้อย พร้อมมุกขำๆ ตลอดเล่ม .. และถ้าสังเกตดูจะเห็นว่ามีเกมส์ให้เล่นสนุกๆ ด้วย

เล่มหน้าได้ชื่อตอนแล้วว่า The End of All Time คาดว่าจะเป็นเล่มสุดท้ายในซีรีส์นี้