Posted on Mon Mar 30 18:12:12 +0900 2009 by nabeken
この記事は obsolete 扱いになりました。MacBook で Linux を動かしたい人は簡潔にまとめ直した MacBook/Gentoo-Linux-on-MacBook-late-2008 をどうぞ。
(note: This article was marked as obsolete. New article is here; MacBook/Gentoo-Linux-on-MacBook-late-2008)
MacBook に Gentoo Linux をインストールしました。MacBook には以前からコストパフォーマンスの高い製品として注目していましたが、その外見を見るかぎり、購入にまでは至りませんでした。
しかし、店頭で新 MacBook を見た瞬間、その外見に惚れてしまい、かつ、そのコストパフォーマンスの高さで人生初の Apple 製品となりました。
スペックは以下の通り。
キーボードは US にしました。viを使う場合、USのほうがよいです。3年保証はひとまず見送りました。
約1週間というところでしょうか。店頭では US キーボードがないので、たぶんこのあたりが早いほうでしょう。
使用して数日ですが、いくつか。
普段は Gentoo Linux + X11 + awesome で生活しているので、の環境を構築しました。どちらかと言えば、ハードウェアに惚れたので、その中身、Mac OS X は私にとってはおまけです。
Mac OS X と Gentoo Linux のデュアルブートを構築しました。1ヶ月ほど経った今では、OS Xの使用頻度がほぼ0となったので、バックアップ後、再度ディスクのパーティションを構成しなおしました。
ディスクは Mac OS X に 20GB, grub 用に 100MB, のこりすべてを LVM 領域に割り当てました。
購入直後の場合は diskutil が便利です。
OS X に付属の diskutil コマンドを使うことで、既存のボリュームをリサイズすることができます。こんな感じ。
$ sudo diskutil resizeVolume disk0s2 60G "MS-DOS FAT32" "GentooLinux" 50G "MS-DOS FAT32" Virtualbox 35G
Linux 領域と Virtualbox 領域が FAT32 なのは、Leopard の制限によるものです。あとで、再度フォーマットし直します。
ディスクをすべて初期化した上で、パーティションを切り直したい場合は、OS Xのインストーラーを使うのが便利です。
まず Mac OS X のDVDから起動します。インストール先の選択になったら、一番上のバーのディスクユーティリティを起動させて、ここでパーティションを切り直します。何分割でも構いませんが、2分割にして、OS X用のみ用意します。(どうせあとで、OS X以外のために gparted で切り直します)
適当な Live CD で起動後、最初のパーティション(OS Xが入っている)以外を削除して、必要なパーティションを作ります。その後、rEFItで gptsync を実行すれば作業は完了です。(grubはhd0にインストール。)
Intel Mac ではブートプロセスが2通りあります。これまでの BIOS とそれに代わる EFI です。BootCampサポートが入る時に同時に BIOS エミュレーション機能も追加されました。ディスクのパーティション情報のスキームは前者は MBR, 後者は GPT となります。上の diskutil では、この MBR と GPT の同期を自動で行なってくれるわけですが、任意のタイミングではできません。(resizeする時だけ)
そこで、EFI のブートローダとして rEFlt を導入します。rEFlt で起動すると gptsync というツールが使えるようになります。これはその名の通り、 GPT スキームを MBR へ同期するツールです。したがって、GNU Parted で GPT でパーティションを操作し、最後に gptsync することで、BIOSからも、EFIからも矛盾なく操作できるようになります。
これだけでも rEFlt 導入の価値があります。
`c' を押しながら、MacBook を起動させると、CDからブートします。有線接続であれば、この状態で DHCP でアドレスが取得できました。
ひとまず、distccを入れてから、通常のインストール手順を踏みます。
ビルド中はさすがにファンが回っていますが、ラップトップはほんのり熱い程度でまったく問題ありません。以前使っていた Latitude X1 に比べれば雲泥の差です……。
2009/01/17現在、まとめると
まずは定番の dmesg から。
# uname -a Linux shiho.tokyo.tknetworks.org 2.6.29-rc3-macbook #1 SMP PREEMPT Thu Jan 29 12:02:26 JST 2009 x86_64 Intel(R) Core(TM)2 Duo CPU P7350 @ 2.00GHz GenuineIntel GNU/Linux # dmesg 00000040000000 (usable) BIOS-e820: 0000000040000000 - 0000000050000000 (reserved) BIOS-e820: 0000000050000000 - 000000007e878000 (usable) BIOS-e820: 000000007e878000 - 000000007e87c000 (ACPI NVS) BIOS-e820: 000000007e87c000 - 000000007e899000 (ACPI data) BIOS-e820: 000000007e899000 - 000000007ea9a000 (ACPI NVS) BIOS-e820: 000000007ea9a000 - 000000007fec6000 (ACPI data) BIOS-e820: 000000007fec6000 - 000000007fec8000 (ACPI NVS) BIOS-e820: 000000007fec8000 - 000000007fec9000 (ACPI data) BIOS-e820: 000000007fec9000 - 000000007fecb000 (ACPI NVS) BIOS-e820: 000000007fecb000 - 000000007fecd000 (ACPI data) BIOS-e820: 000000007fecd000 - 000000007fedf000 (ACPI NVS) BIOS-e820: 000000007fedf000 - 000000007fef9000 (ACPI data) BIOS-e820: 000000007fef9000 - 000000007feff000 (reserved) BIOS-e820: 000000007feff000 - 000000007ff00000 (ACPI data) BIOS-e820: 0000000093300000 - 0000000093301000 (reserved) BIOS-e820: 00000000f0000000 - 00000000f4000000 (reserved) BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) BIOS-e820: 00000000ffc00000 - 0000000100000000 (reserved) DMI 2.4 present. last_pfn = 0x7e878 max_arch_pfn = 0x100000000 init_memory_mapping: 0000000000000000-000000007e878000 0000000000 - 007e800000 page 2M 007e800000 - 007e878000 page 4k kernel direct mapping tables up to 7e878000 @ 8000-c000 last_map_addr: 7e878000 end: 7e878000 RAMDISK: 37ceb000 - 37fef0a7 ACPI: RSDP 000FE020, 0024 (r2 APPLE ) ACPI: XSDT 7FEEE1C0, 0074 (r1 APPLE Apple00 73 1000013) ACPI: FACP 7FEEC000, 00F4 (r3 APPLE Apple00 73 Loki 5F) FADT: X_PM1a_EVT_BLK.bit_width (16) does not match PM1_EVT_LEN (4) ACPI: DSDT 7FEE0000, 5908 (r1 APPLE MacBook 50001 INTL 20061109) ACPI: FACS 7FECD000, 0040 ACPI: HPET 7FEEB000, 0038 (r1 APPLE Apple00 1 Loki 5F) ACPI: APIC 7FEEA000, 0068 (r1 APPLE Apple00 1 Loki 5F) ACPI: MCFG 7FEE9000, 003C (r1 APPLE Apple00 1 Loki 5F) ACPI: ASF! 7FEE8000, 00A5 (r32 APPLE Apple00 1 Loki 5F) ACPI: SBST 7FEE7000, 0030 (r1 APPLE Apple00 1 Loki 5F) ACPI: ECDT 7FEE6000, 0053 (r1 APPLE Apple00 1 Loki 5F) ACPI: SSDT 7FEC8000, 04DC (r1 APPLE CpuPm 3000 INTL 20061109) ACPI: SSDT 7FEDF000, 00A5 (r1 SataRe SataPri 1000 INTL 20061109) ACPI: SSDT 7FECC000, 009F (r1 SataRe SataSec 1000 INTL 20061109) ACPI: Local APIC address 0xfee00000 (6 early reservations) ==> bootmem [0000000000 - 007e878000] #0 [0000000000 - 0000001000] BIOS data page ==> [0000000000 - 0000001000] #1 [0000006000 - 0000008000] TRAMPOLINE ==> [0000006000 - 0000008000] #2 [0000200000 - 00008a7d4c] TEXT DATA BSS ==> [0000200000 - 00008a7d4c] #3 [0037ceb000 - 0037fef0a7] RAMDISK ==> [0037ceb000 - 0037fef0a7] #4 [000009fc00 - 0000100000] BIOS reserved ==> [000009fc00 - 0000100000] #5 [0000008000 - 000000a000] PGTABLE ==> [0000008000 - 000000a000] [ffffe20000000000-ffffe20001bfffff] PMD -> [ffff880001200000-ffff880002dfffff] on node 0 Zone PFN ranges: DMA 0x00000000 -> 0x00001000 DMA32 0x00001000 -> 0x00100000 Normal 0x00100000 -> 0x00100000 Movable zone start PFN for each node early_node_map[3] active PFN ranges 0: 0x00000000 -> 0x0000009f 0: 0x00000100 -> 0x00040000 0: 0x00050000 -> 0x0007e878 On node 0 totalpages: 452631 DMA zone: 56 pages used for memmap DMA zone: 1804 pages reserved DMA zone: 2139 pages, LIFO batch:0 DMA32 zone: 7030 pages used for memmap DMA32 zone: 441602 pages, LIFO batch:31 ACPI: PM-Timer IO Port: 0x408 ACPI: Local APIC address 0xfee00000 ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0]) IOAPIC[0]: apic_id 1, version 0, address 0xfec00000, GSI 0-23 ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) ACPI: IRQ0 used by override. ACPI: IRQ2 used by override. ACPI: IRQ9 used by override. Using ACPI (MADT) for SMP configuration information ACPI: HPET id: 0x10de8201 base: 0xfed00000 SMP: Allowing 2 CPUs, 0 hotplug CPUs Allocating PCI resources starting at 98000000 (gap: 93301000:5ccff000) NR_CPUS:32 nr_cpumask_bits:32 nr_cpu_ids:2 nr_node_ids:1 PERCPU: Allocating 53248 bytes of per cpu data Built 1 zonelists in Zone order, mobility grouping on. Total pages: 443741 Kernel command line: root=/dev/ram0 real_root=/dev/main/root dolvm Initializing CPU#0 Preemptible RCU implementation. PID hash table entries: 4096 (order: 12, 32768 bytes) Extended CMOS year: 2000 Fast TSC calibration using PIT Detected 1990.134 MHz processor. spurious 8259A interrupt: IRQ7. Console: colour VGA+ 80x25 console [tty0] enabled Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes) Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes) Checking aperture... No AGP bridge found Calgary: detecting Calgary via BIOS EBDA area Calgary: Unable to locate Rio Grande table in EBDA - bailing! Memory: 1767988k/2073056k available (4154k kernel code, 262532k absent, 41912k reserved, 1210k data, 372k init) hpet clockevent registered HPET: 4 timers in total, 0 timers will be used for per-cpu timer Calibrating delay loop (skipped), value calculated using timer frequency.. 3980.26 BogoMIPS (lpj=1990134) Mount-cache hash table entries: 256 Initializing cgroup subsys ns Initializing cgroup subsys cpuacct CPU: L1 I cache: 32K, L1 D cache: 32K CPU: L2 cache: 3072K [ds] using core 2 configuration CPU: Physical Processor ID: 0 CPU: Processor Core ID: 0 CPU0: Thermal monitoring enabled (TM2) using mwait in idle threads. ACPI: Core revision 20081204 Setting APIC routing to flat ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 CPU0: Intel(R) Core(TM)2 Duo CPU P7350 @ 2.00GHz stepping 06 Booting processor 1 APIC 0x1 ip 0x6000 Initializing CPU#1 Calibrating delay using timer specific routine.. 3979.72 BogoMIPS (lpj=1989861) CPU: L1 I cache: 32K, L1 D cache: 32K CPU: L2 cache: 3072K [ds] using core 2 configuration CPU: Physical Processor ID: 0 CPU: Processor Core ID: 1 CPU1: Thermal monitoring enabled (TM2) CPU1: Intel(R) Core(TM)2 Duo CPU P7350 @ 2.00GHz stepping 06 checking TSC synchronization [CPU#0 -> CPU#1]: passed. Brought up 2 CPUs Total of 2 processors activated (7959.99 BogoMIPS). CPU0 attaching sched-domain: domain 0: span 0-1 level MC groups: 0 1 CPU1 attaching sched-domain: domain 0: span 0-1 level MC groups: 1 0 net_namespace: 1872 bytes NET: Registered protocol family 16 ACPI: bus type pci registered PCI: MCFG configuration 0: base f0000000 segment 0 buses 0 - 255 PCI: MCFG area at f0000000 reserved in E820 PCI: updated MCFG configuration 0: base f0000000 segment 0 buses 0 - 63 PCI: Using MMCONFIG at f0000000 - f3ffffff PCI: Using configuration type 1 for base access bio: create slabat 0 ACPI: EC: EC description table is found, configuring boot EC ACPI: EC: non-query interrupt received, switching to interrupt mode ACPI: BIOS _OSI(Linux) query ignored ACPI: Interpreter enabled ACPI: (supports S0 S3 S5) ACPI: Using IOAPIC for interrupt routing ACPI: EC: GPE = 0x3f, I/O: command/status = 0x66, data = 0x62 ACPI: EC: driver started in interrupt mode ACPI: No dock devices found. ACPI: PCI Root Bridge [PCI0] (0000:00) pci 0000:00:03.0: reg 10 io port: [0x2000-0x20ff] pci 0000:00:03.2: reg 10 io port: [0x2180-0x21bf] pci 0000:00:03.2: reg 20 io port: [0x2140-0x217f] pci 0000:00:03.2: reg 24 io port: [0x2100-0x213f] pci 0000:00:03.2: PME# supported from D3hot D3cold pci 0000:00:03.2: PME# disabled pci 0000:00:03.5: reg 10 32bit mmio: [0x93300000-0x9337ffff] pci 0000:00:04.0: reg 10 32bit mmio: [0x93388000-0x93388fff] pci 0000:00:04.0: supports D1 D2 pci 0000:00:04.0: PME# supported from D0 D1 D2 D3hot D3cold pci 0000:00:04.0: PME# disabled pci 0000:00:04.1: reg 10 32bit mmio: [0x93389200-0x933892ff] pci 0000:00:04.1: supports D1 D2 pci 0000:00:04.1: PME# supported from D0 D1 D2 D3hot D3cold pci 0000:00:04.1: PME# disabled pci 0000:00:06.0: reg 10 32bit mmio: [0x93387000-0x93387fff] pci 0000:00:06.0: supports D1 D2 pci 0000:00:06.0: PME# supported from D0 D1 D2 D3hot D3cold pci 0000:00:06.0: PME# disabled pci 0000:00:06.1: reg 10 32bit mmio: [0x93389100-0x933891ff] pci 0000:00:06.1: supports D1 D2 pci 0000:00:06.1: PME# supported from D0 D1 D2 D3hot D3cold pci 0000:00:06.1: PME# disabled pci 0000:00:08.0: reg 10 32bit mmio: [0x93380000-0x93383fff] pci 0000:00:08.0: PME# supported from D3hot D3cold pci 0000:00:08.0: PME# disabled pci 0000:00:0a.0: reg 10 32bit mmio: [0x93386000-0x93386fff] pci 0000:00:0a.0: reg 14 io port: [0x21e0-0x21e7] pci 0000:00:0a.0: reg 18 32bit mmio: [0x93389000-0x933890ff] pci 0000:00:0a.0: reg 1c 32bit mmio: [0x93389300-0x9338930f] pci 0000:00:0a.0: supports D1 D2 pci 0000:00:0a.0: PME# supported from D0 D1 D2 D3hot D3cold pci 0000:00:0a.0: PME# disabled pci 0000:00:0b.0: reg 10 io port: [0x21d8-0x21df] pci 0000:00:0b.0: reg 14 io port: [0x21ec-0x21ef] pci 0000:00:0b.0: reg 18 io port: [0x21d0-0x21d7] pci 0000:00:0b.0: reg 1c io port: [0x21e8-0x21eb] pci 0000:00:0b.0: reg 20 io port: [0x21c0-0x21cf] pci 0000:00:0b.0: reg 24 32bit mmio: [0x93384000-0x93385fff] pci 0000:00:10.0: PME# supported from D0 D1 D2 D3hot D3cold pci 0000:00:10.0: PME# disabled pci 0000:00:15.0: PME# supported from D0 D1 D2 D3hot D3cold pci 0000:00:15.0: PME# disabled pci 0000:00:09.0: transparent bridge pci 0000:00:09.0: bridge 32bit mmio: [0x93200000-0x932fffff] pci 0000:02:00.0: reg 10 32bit mmio: [0x92000000-0x92ffffff] pci 0000:02:00.0: reg 14 64bit mmio: [0x80000000-0x8fffffff] pci 0000:02:00.0: reg 1c 64bit mmio: [0x90000000-0x91ffffff] pci 0000:02:00.0: reg 24 io port: [0x1000-0x107f] pci 0000:02:00.0: reg 30 32bit mmio: [0x93000000-0x9301ffff] pci 0000:00:10.0: bridge io port: [0x1000-0x1fff] pci 0000:00:10.0: bridge 32bit mmio: [0x92000000-0x930fffff] pci 0000:00:10.0: bridge 64bit mmio pref: [0x80000000-0x91ffffff] pci 0000:03:00.0: reg 10 64bit mmio: [0x93100000-0x93103fff] pci 0000:03:00.0: supports D1 D2 pci 0000:03:00.0: PME# supported from D0 D3hot D3cold pci 0000:03:00.0: PME# disabled pci 0000:00:15.0: bridge 32bit mmio: [0x93100000-0x931fffff] pci_bus 0000:00: on NUMA node 0 ACPI: PCI Interrupt Routing Table [_SB_.PCI0._PRT] ACPI: PCI Interrupt Routing Table [_SB_.PCI0.IXVE._PRT] ACPI: PCI Interrupt Link [LNK1] (IRQs 5 7 10 11 14 15) *0, disabled. ACPI: PCI Interrupt Link [LNK2] (IRQs 5 7 10 11 14 15) *0, disabled. ACPI: PCI Interrupt Link [LNK3] (IRQs 5 7 10 11 14 15) *0, disabled. ACPI: PCI Interrupt Link [LNK4] (IRQs 5 7 10 11 14 15) *0, disabled. ACPI: PCI Interrupt Link [Z003] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z004] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z005] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z006] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z007] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z008] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z009] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00A] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00B] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00C] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00D] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00E] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00F] (IRQs 16 17 18 19 20 21 22 23) *10 ACPI: PCI Interrupt Link [Z00G] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00H] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00I] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00J] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00K] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00L] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00M] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00N] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00O] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00P] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00Q] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00R] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00S] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00T] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z00U] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [LSMB] (IRQs 16 17 18 19 20 21 22 23) *15 ACPI: PCI Interrupt Link [LUS0] (IRQs 16 17 18 19 20 21 22 23) *11 ACPI: PCI Interrupt Link [LUS2] (IRQs 16 17 18 19 20 21 22 23) *10 ACPI: PCI Interrupt Link [LMAC] (IRQs 16 17 18 19 20 21 22 23) *14 ACPI: PCI Interrupt Link [LAZA] (IRQs 16 17 18 19 20 21 22 23) *15 ACPI: PCI Interrupt Link [LGPU] (IRQs 16 17 18 19 20 21 22 23) *11 ACPI: PCI Interrupt Link [LPID] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [LSI0] (IRQs 16 17 18 19 20 21 22 23) *11 ACPI: PCI Interrupt Link [LSI1] (IRQs 16 17 18 19 20 21 22 23) *0, disabled. ACPI: PCI Interrupt Link [Z000] (IRQs 16 17 18 19 20 21 22 23) *7 ACPI: PCI Interrupt Link [Z001] (IRQs 16 17 18 19 20 21 22 23) *5 ACPI: PCI Interrupt Link [LPMU] (IRQs 16 17 18 19 20 21 22 23) *14 SCSI subsystem initialized libata version 3.00 loaded. usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb PCI: Using ACPI for IRQ routing pnp: PnP ACPI init ACPI: bus type pnp registered pnp: PnP ACPI: found 8 devices ACPI: ACPI bus type pnp unregistered system 00:01: iomem range 0xf0000000-0xf3ffffff has been reserved system 00:04: iomem range 0xfed00000-0xfed003ff has been reserved system 00:06: ioport range 0x400-0x47f has been reserved system 00:06: ioport range 0x480-0x4ff has been reserved system 00:06: ioport range 0x500-0x57f has been reserved system 00:06: ioport range 0x580-0x5ff has been reserved system 00:06: ioport range 0x800-0x87f has been reserved system 00:06: ioport range 0x880-0x8ff has been reserved system 00:06: ioport range 0x2140-0x217f has been reserved system 00:06: ioport range 0x2100-0x213f has been reserved system 00:06: ioport range 0x4d0-0x4d1 has been reserved system 00:06: ioport range 0x295-0x296 has been reserved pci 0000:00:09.0: PCI bridge, secondary bus 0000:01 pci 0000:00:09.0: IO window: disabled pci 0000:00:09.0: MEM window: 0x93200000-0x932fffff pci 0000:00:09.0: PREFETCH window: disabled pci 0000:00:10.0: PCI bridge, secondary bus 0000:02 pci 0000:00:10.0: IO window: 0x1000-0x1fff pci 0000:00:10.0: MEM window: 0x92000000-0x930fffff pci 0000:00:10.0: PREFETCH window: 0x00000080000000-0x00000091ffffff pci 0000:00:15.0: PCI bridge, secondary bus 0000:03 pci 0000:00:15.0: IO window: disabled pci 0000:00:15.0: MEM window: 0x93100000-0x931fffff pci 0000:00:15.0: PREFETCH window: disabled pci 0000:00:09.0: enabling device (0000 -> 0002) pci 0000:00:09.0: setting latency timer to 64 pci 0000:00:10.0: setting latency timer to 64 ACPI: PCI Interrupt Link [Z00F] enabled at IRQ 23 pci 0000:00:15.0: PCI INT A -> Link[Z00F] -> GSI 23 (level, low) -> IRQ 23 pci 0000:00:15.0: setting latency timer to 64 pci_bus 0000:00: resource 0 io: [0x00-0xffff] pci_bus 0000:00: resource 1 mem: [0x000000-0xffffffffffffffff] pci_bus 0000:01: resource 0 mem: [0x0-0x0] pci_bus 0000:01: resource 1 mem: [0x93200000-0x932fffff] pci_bus 0000:01: resource 2 mem: [0x0-0x0] pci_bus 0000:01: resource 3 io: [0x00-0xffff] pci_bus 0000:01: resource 4 mem: [0x000000-0xffffffffffffffff] pci_bus 0000:02: resource 0 io: [0x1000-0x1fff] pci_bus 0000:02: resource 1 mem: [0x92000000-0x930fffff] pci_bus 0000:02: resource 2 mem: [0x80000000-0x91ffffff] pci_bus 0000:02: resource 3 mem: [0x0-0x0] pci_bus 0000:03: resource 0 mem: [0x0-0x0] pci_bus 0000:03: resource 1 mem: [0x93100000-0x931fffff] pci_bus 0000:03: resource 2 mem: [0x0-0x0] pci_bus 0000:03: resource 3 mem: [0x0-0x0] NET: Registered protocol family 2 IP route cache hash table entries: 65536 (order: 7, 524288 bytes) TCP established hash table entries: 262144 (order: 10, 4194304 bytes) TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) TCP: Hash tables configured (established 262144 bind 65536) TCP reno registered NET: Registered protocol family 1 checking if image is initramfs...<7>Switched to high resolution mode on CPU 1 Switched to high resolution mode on CPU 0 it is Freeing initrd memory: 3088k freed audit: initializing netlink socket (disabled) type=2000 audit(1233201970.678:1): initialized VFS: Disk quotas dquot_6.5.2 Dquot-cache hash table entries: 512 (order 0, 4096 bytes) SGI XFS with ACLs, security attributes, realtime, large block/inode numbers, no debug enabled SGI XFS Quota Management subsystem OCFS2 1.5.0 ocfs2: Registered cluster interface o2cb OCFS2 Node Manager 1.5.0 OCFS2 DLM 1.5.0 OCFS2 DLMFS 1.5.0 OCFS2 User DLM kernel interface loaded GFS2 (built Jan 29 2009 11:59:09) installed msgmni has been set to 3460 alg: No test for stdrng (krng) Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254) io scheduler noop registered io scheduler anticipatory registered io scheduler deadline registered (default) io scheduler cfq registered pci 0000:02:00.0: Boot video device pcieport-driver 0000:00:15.0: setting latency timer to 64 pcieport-driver 0000:00:15.0: irq 24 for MSI/MSI-X Linux agpgart interface v0.103 Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A brd: module loaded loop: module loaded Driver 'sd' needs updating - please use bus_type methods Driver 'sr' needs updating - please use bus_type methods PNP: No PS/2 controller found. Probing ports directly. i8042.c: No controller found. mice: PS/2 mouse device common for all mice cpuidle: using governor ladder cpuidle: using governor menu TCP cubic registered NET: Registered protocol family 10 lo: Disabled Privacy Extensions NET: Registered protocol family 17 registered taskstats version 1 Freeing unused kernel memory: 372k freed Write protecting the kernel read-only data: 4996k ahci 0000:00:0b.0: version 3.0 ACPI: PCI Interrupt Link [LSI0] enabled at IRQ 22 ahci 0000:00:0b.0: PCI INT A -> Link[LSI0] -> GSI 22 (level, low) -> IRQ 22 ahci 0000:00:0b.0: irq 25 for MSI/MSI-X ahci 0000:00:0b.0: AHCI 0001.0200 32 slots 6 ports 3 Gbps 0x3 impl IDE mode ahci 0000:00:0b.0: flags: 64bit ncq sntf pm led pmp pio slum part ahci 0000:00:0b.0: setting latency timer to 64 scsi0 : ahci scsi1 : ahci scsi2 : ahci scsi3 : ahci scsi4 : ahci scsi5 : ahci ata1: SATA max UDMA/133 abar m8192@0x93384000 port 0x93384100 irq 25 ata2: SATA max UDMA/133 abar m8192@0x93384000 port 0x93384180 irq 25 ata3: DUMMY ata4: DUMMY ata5: DUMMY ata6: DUMMY ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata1.00: ATA-8: TOSHIBA MK1653GSX, LW005B, max UDMA/100 ata1.00: 312581808 sectors, multi 16: LBA48 NCQ (depth 31/32) ata1.00: configured for UDMA/100 scsi 0:0:0:0: Direct-Access ATA TOSHIBA MK1653GS LW00 PQ: 0 ANSI: 5 sd 0:0:0:0: [sda] 312581808 512-byte hardware sectors: (160 GB/149 GiB) sd 0:0:0:0: [sda] Write Protect is off sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA sd 0:0:0:0: [sda] 312581808 512-byte hardware sectors: (160 GB/149 GiB) sd 0:0:0:0: [sda] Write Protect is off sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA sda: sda1 sda2 sda3 sda4 sd 0:0:0:0: [sda] Attached SCSI disk ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata2.00: ATAPI: HL-DT-ST DVDRW GS21N, SA15, max UDMA/133, ATAPI AN ata2.00: configured for UDMA/133 scsi 1:0:0:0: CD-ROM HL-DT-ST DVDRW GS21N SA15 PQ: 0 ANSI: 5 sr0: scsi3-mmc drive: 24x/24x writer cd/rw xa/form2 cdda caddy Uniform CD-ROM driver Revision: 3.20 sr 1:0:0:0: Attached scsi CD-ROM sr0 sd 0:0:0:0: Attached scsi generic sg0 type 0 sr 1:0:0:0: Attached scsi generic sg1 type 5 scsi: Detection failed (no card) GDT-HA: Storage RAID Controller Driver. Version: 3.05 3ware Storage Controller device driver for Linux v1.26.02.002. 3ware 9000 Storage Controller device driver for Linux v2.26.02.011. Compaq SMART2 Driver (v 2.6.0) HP CISS Driver (v 3.6.20) Adaptec aacraid driver 1.1-5[2456]-ms megaraid cmm: 2.20.2.7 (Release Date: Sun Jul 16 00:01:03 EST 2006) megaraid: 2.20.5.1 (Release Date: Thu Nov 16 15:32:35 EST 2006) megasas: 00.00.04.01 Thu July 24 11:41:51 PST 2008 QLogic Fibre Channel HBA Driver: 8.03.00-k2 Emulex LightPulse Fibre Channel SCSI driver 8.3.0 Copyright(c) 2004-2008 Emulex. All rights reserved. ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver ACPI: PCI Interrupt Link [LUS2] enabled at IRQ 21 ehci_hcd 0000:00:04.1: PCI INT B -> Link[LUS2] -> GSI 21 (level, low) -> IRQ 21 ehci_hcd 0000:00:04.1: setting latency timer to 64 ehci_hcd 0000:00:04.1: EHCI Host Controller ehci_hcd 0000:00:04.1: new USB bus registered, assigned bus number 1 ehci_hcd 0000:00:04.1: debug port 1 ehci_hcd 0000:00:04.1: cache line size of 32 is not supported ehci_hcd 0000:00:04.1: irq 21, io mem 0x93389200 ehci_hcd 0000:00:04.1: USB 2.0 started, EHCI 1.00 usb usb1: configuration #1 chosen from 1 choice hub 1-0:1.0: USB hub found hub 1-0:1.0: 7 ports detected ACPI: PCI Interrupt Link [Z001] enabled at IRQ 20 ehci_hcd 0000:00:06.1: PCI INT B -> Link[Z001] -> GSI 20 (level, low) -> IRQ 20 ehci_hcd 0000:00:06.1: setting latency timer to 64 ehci_hcd 0000:00:06.1: EHCI Host Controller ehci_hcd 0000:00:06.1: new USB bus registered, assigned bus number 2 ehci_hcd 0000:00:06.1: debug port 1 ehci_hcd 0000:00:06.1: cache line size of 32 is not supported ehci_hcd 0000:00:06.1: irq 20, io mem 0x93389100 ehci_hcd 0000:00:06.1: USB 2.0 started, EHCI 1.00 usb usb2: configuration #1 chosen from 1 choice hub 2-0:1.0: USB hub found hub 2-0:1.0: 5 ports detected Initializing USB Mass Storage driver... usbcore: registered new interface driver usb-storage USB Mass Storage support registered. uhci_hcd: USB Universal Host Controller Interface driver ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver ACPI: PCI Interrupt Link [LUS0] enabled at IRQ 19 ohci_hcd 0000:00:04.0: PCI INT A -> Link[LUS0] -> GSI 19 (level, low) -> IRQ 19 ohci_hcd 0000:00:04.0: setting latency timer to 64 ohci_hcd 0000:00:04.0: OHCI Host Controller ohci_hcd 0000:00:04.0: new USB bus registered, assigned bus number 3 ohci_hcd 0000:00:04.0: irq 19, io mem 0x93388000 usb usb3: configuration #1 chosen from 1 choice hub 3-0:1.0: USB hub found hub 3-0:1.0: 7 ports detected ACPI: PCI Interrupt Link [Z000] enabled at IRQ 18 ohci_hcd 0000:00:06.0: PCI INT A -> Link[Z000] -> GSI 18 (level, low) -> IRQ 18 ohci_hcd 0000:00:06.0: setting latency timer to 64 ohci_hcd 0000:00:06.0: OHCI Host Controller ohci_hcd 0000:00:06.0: new USB bus registered, assigned bus number 4 ohci_hcd 0000:00:06.0: irq 18, io mem 0x93387000 usb 1-4: new high speed USB device using ehci_hcd and address 2 usb usb4: configuration #1 chosen from 1 choice hub 4-0:1.0: USB hub found hub 4-0:1.0: 5 ports detected usbcore: registered new interface driver hiddev usbcore: registered new interface driver usbhid usbhid: v2.6:USB HID core driver sl811: driver sl811-hcd, 19 May 2005 usb 1-4: configuration #1 chosen from 1 choice device-mapper: uevent: version 1.0.3 device-mapper: ioctl: 4.14.0-ioctl (2008-04-23) initialised: dm-devel@redhat.com md: raid0 personality registered for level 0 md: raid1 personality registered for level 1 async_tx: api initialized (async) xor: automatically using best checksumming function: generic_sse generic_sse: 5864.000 MB/sec xor: using function: generic_sse (5864.000 MB/sec) raid6: int64x1 1472 MB/s raid6: int64x2 1761 MB/s raid6: int64x4 1691 MB/s raid6: int64x8 1132 MB/s raid6: sse2x1 2777 MB/s raid6: sse2x2 3039 MB/s raid6: sse2x4 4652 MB/s raid6: using algorithm sse2x4 (4652 MB/s) md: raid6 personality registered for level 6 md: raid5 personality registered for level 5 md: raid4 personality registered for level 4 md: raid10 personality registered for level 10 usb 3-5: new low speed USB device using ohci_hcd and address 2 JFS: nTxBlock = 8192, nTxLock = 65536 RPC: Registered udp transport module. RPC: Registered tcp transport module. usb 3-5: configuration #1 chosen from 1 choice fuse init (API version 7.11) Intel(R) PRO/1000 Network Driver - version 7.3.20-k3-NAPI Copyright (c) 1999-2006 Intel Corporation. usb 3-6: new full speed USB device using ohci_hcd and address 3 usb 3-6: configuration #1 chosen from 1 choice usb 4-1: new full speed USB device using ohci_hcd and address 2 usb 4-1: configuration #1 chosen from 1 choice hub 4-1:1.0: USB hub found hub 4-1:1.0: 3 ports detected usb 4-1.1: new full speed USB device using ohci_hcd and address 3 usb 4-1.1: configuration #1 chosen from 1 choice usb 4-1.2: new full speed USB device using ohci_hcd and address 4 usb 4-1.2: configuration #1 chosen from 1 choice input: HID 05ac:820a as /class/input/input0 generic-usb 0003:05AC:820A.0004: input,hidraw0: USB HID v1.11 Keyboard [HID 05ac:820a] on usb-0000:00:06.0-1.2/input0 usb 4-1.3: new full speed USB device using ohci_hcd and address 5 usb 4-1.3: configuration #1 chosen from 1 choice input: HID 05ac:820b as /class/input/input1 generic-usb 0003:05AC:820B.0005: input,hidraw1: USB HID v1.11 Mouse [HID 05ac:820b] on usb-0000:00:06.0-1.3/input0 ReiserFS: dm-2: found reiserfs format "3.6" with standard journal ReiserFS: dm-2: using ordered data mode ReiserFS: dm-2: journal params: device dm-2, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30 ReiserFS: dm-2: checking transaction log (dm-2) ReiserFS: dm-2: Using r5 hash to sort names applesmc: Apple MacBook 5 detected: applesmc: - Model with accelerometer applesmc: - Model with light sensors and backlight applesmc: - Model with 14 temperature sensors applesmc: device successfully initialized (0xe0, 0x00). applesmc: device successfully initialized. applesmc: 1 fans found. input: applesmc as /class/input/input2 ACPI: AC Adapter [ADP1] (off-line) Registered led device: smc::kbd_backlight applesmc: driver successfully loaded. input: Power Button (FF) as /class/input/input3 input: PC Speaker as /class/input/input4 ACPI: Power Button (FF) [PWRF] ACPI: SSDT 7FECAC98, 01F6 (r1 APPLE Cpu0Ist 3000 INTL 20061109) ACPI: SSDT 7FEC9C18, 02AD (r1 APPLE Cpu0Cst 3001 INTL 20061109) Monitor-Mwait will be used to enter C-1 state Monitor-Mwait will be used to enter C-2 state Monitor-Mwait will be used to enter C-3 state ACPI: CPU0 (power states: C1[C1] C2[C2] C3[C3]) processor ACPI_CPU:00: registered as cooling_device0 ACPI: Processor [CPU0] (supports 8 throttling states) ACPI: SSDT 7FECAF18, 00C8 (r1 APPLE Cpu1Ist 3000 INTL 20061109) ACPI: SSDT 7FEC9F18, 0085 (r1 APPLE Cpu1Cst 3000 INTL 20061109) Marking TSC unstable due to TSC halts in idle ACPI: CPU1 (power states: C1[C1] C2[C2] C3[C3]) processor ACPI_CPU:01: registered as cooling_device1 ACPI: Processor [CPU1] (supports 8 throttling states) input: bcm5974 as /class/input/input5 usbcore: registered new interface driver bcm5974 Bluetooth: Core ver 2.14 NET: Registered protocol family 31 Bluetooth: HCI device and connection manager initialized Bluetooth: HCI socket layer initialized apple 0003:05AC:8242.0001: hiddev96,hidraw2: USB HID v1.11 Device [Apple Computer, Inc. IR Receiver] on usb-0000:00:04.0-5/input0 input: Apple, Inc. Apple Internal Keyboard / Trackpad as /class/input/input6 apple 0003:05AC:0236.0002: input,hidraw3: USB HID v1.11 Keyboard [Apple, Inc. Apple Internal Keyboard / Trackpad] on usb-0000:00:04.0-6/input0 apple 0003:05AC:0236.0003: hidraw4: USB HID v1.11 Device [Apple, Inc. Apple Internal Keyboard / Trackpad] on usb-0000:00:04.0-6/input1 rtc_cmos 00:07: rtc core: registered rtc_cmos as rtc0 rtc0: alarms up to one year, y3k, 242 bytes nvram, hpet irqs Linux video capture interface: v2.00 ACPI: Battery Slot [BAT0] (battery present) input: Lid Switch as /class/input/input7 Bluetooth: Generic Bluetooth USB driver ver 0.4 usbcore: registered new interface driver btusb ACPI: Lid Switch [LID0] input: Power Button (CM) as /class/input/input8 ACPI: Power Button (CM) [PWRB] input: Sleep Button (CM) as /class/input/input9 ACPI: Sleep Button (CM) [SLPB] forcedeth: Reverse Engineered nForce ethernet driver. Version 0.62. ACPI: PCI Interrupt Link [LMAC] enabled at IRQ 17 forcedeth 0000:00:0a.0: PCI INT A -> Link[LMAC] -> GSI 17 (level, low) -> IRQ 17 forcedeth 0000:00:0a.0: setting latency timer to 64 usbcore: registered new interface driver usbmouse usbmouse: v1.6:USB HID Boot Protocol mouse driver forcedeth 0000:00:0a.0: ifname eth0, PHY OUI 0x732 @ 1, addr 00:23:32:b8:06:8e forcedeth 0000:00:0a.0: highdma csum pwrctl gbit lnktim msi desc-v3 Clocksource tsc unstable (delta = -101759935 ns) uvcvideo: Found UVC 1.00 device Built-in iSight (05ac:8507) uvcvideo: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround. input: Built-in iSight as /class/input/input10 usbcore: registered new interface driver uvcvideo USB Video Class driver (v0.1.0) ACPI: PCI Interrupt Link [LAZA] enabled at IRQ 16 HDA Intel 0000:00:08.0: PCI INT A -> Link[LAZA] -> GSI 16 (level, low) -> IRQ 16 HDA Intel 0000:00:08.0: setting latency timer to 64 nvidia: module license 'NVIDIA' taints kernel. ACPI: PCI Interrupt Link [LGPU] enabled at IRQ 23 nvidia 0000:02:00.0: PCI INT A -> Link[LGPU] -> GSI 23 (level, low) -> IRQ 23 nvidia 0000:02:00.0: setting latency timer to 64 NVRM: loading NVIDIA UNIX x86_64 Kernel Module 180.22 Tue Jan 6 09:15:58 PST 2009 ReiserFS: dm-0: found reiserfs format "3.6" with standard journal ReiserFS: dm-0: using ordered data mode ReiserFS: dm-0: journal params: device dm-0, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30 ReiserFS: dm-0: checking transaction log (dm-0) ReiserFS: dm-0: Using r5 hash to sort names ReiserFS: dm-1: found reiserfs format "3.6" with standard journal ReiserFS: dm-1: using ordered data mode ReiserFS: dm-1: journal params: device dm-1, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30 ReiserFS: dm-1: checking transaction log (dm-1) ReiserFS: dm-1: Using r5 hash to sort names
NIC は forcedeth で動きます(Gigabit Ethernetですが、menuconfigでは、Fast Ethernet扱いなので注意)。実測ですが、40MB/s (320Mbps) は余裕で出ています。
wireless は Broadcom の official driver (nvidiaと同じ方式で、バイナリの中間ドライバ、そして、カーネルとの接着部分しかオープンになっていないタイプ) で動くことを確認しました。ただし、wirelessの方は 2.6.25 まで、それ以上の場合は修正が必要となります。
Ubuntu のパッケージでは、2.6.28 でもビルド、動作することを確認しました。(参考: https://launchpad.net/ubuntu/+source/linux-restricted-modules )ただし、やや不安定です。(参考: Broadcom 製 STA ドライバで、IPv6 multi prefix 環境においてIF起動時に正しくアドレスが設定されない問題 )
bluetooth は 2.6.25-gentoo-r8 で動作しました。ただし、デバイスをリセットする必要があります。リセットすると以下のように見えます。
Bluetooth のドライバ(btusb)が更新され、最新ドライバでは かならずリセットさせるようになりました。
ただし、この更新は 2.6.28 には含まれていないため、自分でマージする必要があります。後述するサスペンドの問題を解決するため、bluetooth-next-2.6.git からマージする方法を後述します。
2.6.29 にマージされました。2.6.29-rc3でトラブルなく動作することを確認しました。
ドライバをマージすると、
# hciconfig hci0: Type: USB BD Address: 00:23:12:5D:27:8C ACL MTU: 1021:5 SCO MTU: 64:1 UP RUNNING PSCAN ISCAN RX bytes:1125 acl:0 sco:0 events:45 errors:0 TX bytes:913 acl:0 sco:0 commands:45 errors:0 # hciconfig -a hci0: Type: USB BD Address: 00:23:12:5D:27:8C ACL MTU: 1021:5 SCO MTU: 64:1 UP RUNNING PSCAN ISCAN RX bytes:1125 acl:0 sco:0 events:45 errors:0 TX bytes:913 acl:0 sco:0 commands:45 errors:0 Features: 0xff 0xff 0x8f 0xfe 0x9b 0xff 0x79 0x83 Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 Link policy: RSWITCH HOLD SNIFF PARK Link mode: SLAVE ACCEPT Name: 'shiho.tokyo.tknetworks.org' Class: 0x080100 Service Classes: Capturing Device Class: Computer, Uncategorized HCI Ver: 2.1 (0x4) HCI Rev: 0xfb LMP Ver: 2.1 (0x4) LMP Subver: 0x21a2 Manufacturer: Broadcom Corporation (15)
となり、rfcomm 経由で ppp できることを確認しました。
dmesg の通り、きちんと認識されています。
uvcvideo: Found UVC 1.00 device Built-in iSight (05ac:8507) input: Built-in iSight as /class/input/input7
設定のキモは UVC (USB Video Class) と、iSight の firmware の組み込みです。
# grep -i isight .config CONFIG_USB_ISIGHTFW=m # grep -i usb_video_class .config CONFIG_USB_VIDEO_CLASS=m CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
動作確認は mplayer で行えます。v4lを有効にした mplayer で
# mplayer tv://0
とすれば、あなたの顔が映るはずです :-)また、 ustream でのストリーミングも行えました。
trackpad の設定は Ubuntu ユーザ以外では現時点では少し面倒な作業が必要となります。いずれ、linus tree へパッチがマージされるはずですが、それまでの暫定的な方法を。
最新カーネルではさまざまな問題が解決されましたが、以前としてマージされていない部分があります。最後に2.6.28での作業を追記しました。以下の記述は参考程度に留めておいてください。
bcm5974のモジュールを入れるだけでOKになりました。
経緯はやや複雑なので、詳細は割愛しますが、Appleのキーボード、マウスは usbhid の読み込み時に quirk 処理が必要となります。これには、カーネルモジュールの改変が必要となります。
2.6.27 に対するパッチは Ubuntu のパッケージとして配布されています。2.6.28では quirk 回りがいろいろと改良されたため、さらなる改変を加える必要があります。(このあたりは http://web.comhem.se/rydberg/Bits/ を参照。以下のパッチもUbuntuのパッチを参考にしました。)
2.6.28-rc2 に対するパッチを置いておきます。https://projects.tsuntsun.net/~nabeken/dist/0001-HID-Add-quirk-entry-for-MacBook-5-unibody.patch
2.6.26-rc6でようやくマージされました。内容は上のパッチとほぼ同じです。
上のパッチの一部が revert されました。なんでも、時期尚早ということのようです。ignore されないと bcm5974 が動かないので、当然 trackpad も動かなくなります。
しかたないので、この revert を revert することで、しばらくは回避します。(説明にもあるように、 2.6.29 でふたたび入る予定のようです)
そもそもカーネルの rc を使うような人は linus tree の git repository を clone しているはずなので、以下の手順で対応しましょう。(していない人はしましょう。追うのが楽になります)
$ git co -b macbook origin/master $ git revert 06d214 $ git show > /tmp/unibody.patch $ cd /usr/src/linux # patch -p1 < /tmp/unibody.patch
このドライバは 2.6.28-rc6でも取り込まれていません。
次は、trackpadのドライバです。これを読み込まないと synaptics の trackpad として認識されません。2.6.27 以降では、カーネルに入っていますが、これは旧モデルの MacBook にしか対応していないので、同じく上の Ubuntu のパッケージから貰ってきます。bzr 経由でソースコードを入手し、
# cd bcm5974-dkms/usr/src/dkms_source_tree # make -C /lib/modules/`uname -r`/build M=`pwd` # cp bcm5974.ko /lib/modules/`uname -r`/kernel/drivers/input/mouse # depmod -a
最後に、applesmc を最新版に置き換えます。カーネルのものは使わないようにしてもいいでしょう。bzr 経由で同じく上のサイトから applesmc-dkms を持ってきます。ビルド方法は上と同じです。
Macbook 5 に対応した applesmc が 2.6.28-rc5 でマージされました。
genkernel を使っている人は genkernel でインストール後にモジュールの追加を行ってください。(genkernelはインストール前に一度消してしまうため)
サンプルが上のサイトにあります。これはそのまま使えます。うまく認識されると以下のような Xorg.0.log になります。
# grep -i synaptics /vag/log/Xorg.0.log (**) |-->Input Device "Synaptics Touchpad" (II) LoadModule: "synaptics" (II) Loading /usr/lib64/xorg/modules/input//synaptics_drv.so (II) Module synaptics: vendor="X.Org Foundation" (II) LoadModule: "synaptics" (II) Reloading /usr/lib64/xorg/modules/input//synaptics_drv.so (II) Synaptics touchpad driver version 0.15.2 (--) Synaptics Touchpad auto-dev sets device to /dev/input/event3 (II) Synaptics Touchpad: x-axis range 0 - 1280 (II) Synaptics Touchpad: y-axis range 0 - 800 (--) Synaptics Touchpad touchpad found (**) Synaptics Touchpad: always reports core events (II) evaluating device (Synaptics Touchpad) (II) XINPUT: Adding extended input device "Synaptics Touchpad" (type: TOUCHPAD) (II) Synaptics Touchpad: x-axis range 0 - 1280 (II) Synaptics Touchpad: y-axis range 0 - 800 (--) Synaptics Touchpad touchpad found
該当部分の dmesg は以下の通り。
# dmesg | grep bcm5974 input: bcm5974 as /class/input/input3 usbcore: registered new interface driver bcm5974
ようやく、ディスプレイの明るさを調節できるようになりました。nvclock 0.8 beta4 を使うと、X 上でも明るさを調節できるようになりました。(参考: https://help.ubuntu.com/community/MacBook%20Aluminum?#Screen%20brightness%20adjustment )
調節は以下のように行います。
$ nvclock -S 15 Changing Smartdimmer level from 15% to 15% New Smartdimmer level: 15% $ nvclock -S 100 Changing Smartdimmer level from 15% to 100% New Smartdimmer level: 100%
Gentoo の人は既存の ebuild を beta4 にするか、私の overlay から取得してください。e981053d55257dafe433bf39b3dac15451ace9af
~サスペンドからの復旧は Mac OS X に比べるとものすごく遅いです。(約20秒ほど)~
どうやら、原因は nvidia-drivers にあったようです。最新の nvidia-drivers (180.22) を用いることで、Max OS X と同等か、それよりも早くレジュームするようになりました。これは素晴しいです!ちなみに、このドライバは 2.6.29-rc2 対応なのを確認しています。
あらかじめ、 acpid をインストールして、起動しておきます。ディスプレイの開閉、電源ボタンの操作なので ACPI のイベントが発生します。そのイベントに応じたスクリプトにサスペンド処理を追加します。
まず、 /etc/acpi/events/lm_lid を作ります。
# cat /etc/acpi/events/lm_lid event=button[ /]lid action=/etc/acpi/actions/lm_lid.sh %e
続いて、そのアクションを実行するスクリプトを作ります。(以下のスクリプトは 2.6.28 を対象としています。)それ以外の場合、煩雑な処理が必要となります。
また、まだ過渡期のためか、一部ドライバを読み込んでいる場合、サスペンドに失敗します。(zd1211rwなど)
# cat /etc/acpi/actions/lm_lid.sh #!/bin/bash STATE=$(cat /proc/acpi/button/lid/LID0/state | cut -d' ' -f7) case "$STATE" in closed) echo mem > /sys/power/state ;; open) logger -p debug -t acpi "resumed from C3" ;; esac
VGA は nvidia が Linux 向けに提供しているドライバで動作します。ただし、カーネルのバージョンに依存しています。180.22であれば、2.6.29-rc2まで対応しています。
これまでの作業を 2.6.28 に対して適用する方法を解説します。Gitに慣れていない人は戸惑うかもしれませんが、rcを追うならGitには慣れましょう。
まず、 linus tree を clone します。すべての作業は linus tree に対して行われているので、カーネルを追う入り口は linus tree になります。
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
では、Macbook 用のためにブランチを作りましょう。(基本的にはmasterはそのまま置いておきます)
$ git checkout -b macbook
次に、bcm5974 のために修正を revert します。
$ git revert 06d214
次に、bluetooth-next-2.6.git からまだマージされていない最新のbluetooth subsystemを自分のリポジトリへマージします。これにより、ドライバロード時にきちんとリセットされ、またサスペンド対応になります。ただし、本当にマージしてしまうと必要のない修正まで取り込んでしまうので、一度パッチとして吸い出して、適用します。
$ git remote add bluetooth git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-next-2.6.git $ git fetch bluetooth master:bluetooth
これで bluetooth-next-2.6.git の内容がローカルの bluetooth ブランチへ取り込まれました。logを見ながら、
$ git format-patch 25f13048b..bluetooth
とします。おそらく、14個のパッチが生成されたと思います。では、適用します。
$ git am 00*
途中で適用に失敗します(おそらく13個目)。ひとまず、面倒なので skip します。
$ git am --skip
これで無事にマージが完了しました。git log できちんとマージされているか確認しましょう。
では、これを tar にして、あとはいつも通りにビルドします。
$ git archive --prefix=linux-2.6.28-macbook/ HEAD > /tmp/linux-2.6.28-macbook.tar
ビルド、起動後 bcm5974 をインストールすれば作業は完了です。なお、bluetooth-next-2.6.git とあるように、次期マージウインドウ(機能の取り込み期間)で取り込まれます。2.6.29ではrevertも含め、不要となる見込みです。ついでにバックライト調整のためのモジュールもおそらく入ると思われます。(追記: revert は不要になりました。)
先日リリースされましたが、
なため、引き続き調査中です(必要であれば本家へ報告予定)。参考情報として、v2.6.28では大丈夫なので、そこから bisect すると原因は絞れると思います。情報があれば @nabeken via twitter などで御知らせください。
先日、リリースされました。サスペンドの問題は解決しました。broadcom-sta ドライバのパッチもでてきました。
バックライト調節モジュールはなくとも nvclock を使うことで調整ができるようになりました。
Mac OS X 上で各種 UNIX 向けツールを使うには、flink, MacPorts などがあります。これに加えて、Gentoo Linux のパッケージ管理ツール Portage と、その成果物である ebuild を利用した prefix Gentoo があります。
これは、 Portage に対して、/ の代わりに $EPREFIX という変数で指定されたディレクトリ(prefix)を使うように改良を加えたものです。
公式ドキュメントをなぞるだけで導入できます。MacPortsに飽きてきた人は試してみては。(参考: http://www.gentoo.org/proj/en/gentoo-alt/prefix/bootstrap-macos.xml )
http://delicious.com/nabekenta/MB