Mac mini PowerPC 1.25GHz + FreeBSD/powerpc 7.0-RELEASE

FreeBSD/powerpc が動くようになっていると聞いたので、動かしてみたいと思っていたが、時間ができたので、Mac miniに7.0-RELEASEをインストールしてみた。

参考:
http://blog.perl.tv/2007/05/powerpcmac_minifreebsd62releas.html
http://people.freebsd.org/~grehan/install.html

まず、FreeBSD/powerpcはTier 2サポートのようなので、完全にFreeBSDが動作することは期待できない。それでも、ある程度は動くようなので、とりあえずどこまで動くのかトライしてみる。

Macのメモ

  • キーボードがWindows用のものを使う場合、Opne Firmwareでは、Mac用のキーボードとの違いが問題になる。
  • ](Enterキーの右下段)キー = \キー
  • マウスボタンを押しながら起動するとCD-ROMなどのメディアが排出される。
  • 「Command」+「option」+「O」+「F」キーを押しながら起動するとOpen Firmwareに落ちる。
  • 「C」キーを押しながら起動するとCD-ROMブートする。

OS Xパーティションを削除する

  • Mac OS X CDを入れて、「C」キーを押しながらブート(CD-ROMブート)
  • 起動したら「続ける」を押さずに、メニューから「ユーティリティ」「ディスクユーティリティを開く」
  • HDDを選択(Macintosh HD ではなくハードディスク本体を選択)
  • 「消去」タブ「ボリュームフォーマット」で「UNIX ファイルシステム」を選択
  • 「セキュリティオプション」クリック「全データを0にする」をチェックして、「OK」、「消去」をクリック

FreeBSDのインストール

bootonly CDを入れて、「C」を押しながら起動する。普通のFreeBSDインストーラが起動するので、いつもの方法でインストールが出来る。Customから進むとFdiskがない。fdiskは、FreeBSD/powerpcでは使えないとのこと。上記の方法でOS Xパーティションを削除するとad0は次のようになっていた。

  • ad0s2 17408 blocks (8MB)
  • ad0s3 78122672 blocks (38145MB)

スワップなしのルートパーティションだけでないとインストールに失敗すると書いてあったので、ad0s3をすべて/に割り当てた。というより容量の選択が出てこないので、/に割り当てるしかないようだ。もしかしたらad0s2をスワップに割り当てられたかもしれないが、8Mのスワップがあっても仕方がないので、よしとする。
distributionsは、portsX.orgを除くすべてを選択。powerpcディレクトリにパッケージがなさそうだったので、たぶん、X.orgはパッケージインストールは出来ないと思う。あとはネットワークを選択してcommit。

No swap devices found - you should create at least one swap patriton. Without swap, the install will fail if you do not have enough RAM. Cntinue anyway?

swapパーティションがないので警告されるが、OK。で、無事に終了する。

FreeBSDの起動

このままでは、起動しないところがTier 2ならでは。ここのCD-ROM bootの要領で、このファイルをダウンロードして、まずboot CDをつくる。最初にmini boot CDとか面倒くさいから、展開したものを全部そのままisoにしたら、800MくらいのCD-ROMに収まらないisoイメージになった。結局書いてあるのを残すのが一番良さそう。isoの作成は、

% mkisofs -o miniboot.iso -hfs -part -l -J -r -L /any/wahre/boot_CD_root

で、miniboot.isoが作れる。
このboot CDを入れた状態で、「Command」+「option」+「O」+「F」キーを押しながら起動して、Open Firmwareに入る。Open Firmwareコマンドプロンプトから、

0 > dir cd:,\         <- 入力(1)
...
 ok
0 > boot cd:,\boot\loader            <- 入力(2)

FreeBSD/OpenFirmware/PowerPC bootstrap loader, Revision 0.1
(greham@, Fri Feb 27 20:41:22 EST 2004)
Memory: 524388KB
booted from* /pci@f4000000/ata-6@d/disk@1

\
can't load 'kernel'

Type '?' for a list of commands, 'help' for more detailed help
OK set currdev=hd:3             <- 入力(3)
OK boot -s                      <- 入力(4)

入力(1)-(4)で起動する。なぜか分からないが、single-user modeではなく、これでmulti-user modeで起動する。single-user modeに落とす方法はないっぽい。fdiskが使えないから、必要ないのだろうか。Windowsのキーボードを使ってると、\が入れにくいのが注意する点(笑)

これで、めでたくFreeBSD/powerpcMac miniで起動した。コンソールでは、マウスカーソルが表示されない。マウスは認識されているようだし、Xは動くということなので、試してみたい。

bootするのが、ちょっと面倒だが、起動してしまうと特に問題なくFreeBSD環境が動いている。最後に、お約束でdmesg。

% dmesg
Copyright (c) 1992-2008 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
	The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 7.0-RELEASE #0: Mon Feb 25 11:12:44 UTC 2008
    root@xserve.xcllnt.net:/usr/obj/usr/src/sys/GENERIC
cpu0: Motorola PowerPC 7447A revision 1.2, 1250.00 MHz
cpu0: HID0 8450c0bc<EMCP,TBEN,NAP,DPM,ICE,DCE,SGE,BTIC,LRSTK,FOLD,BHT>
real memory  = 527130624 (502 MB)
avail memory = 509640704 (486 MB)
kbd0 at kbdmux0
nexus0: <Open Firmware Nexus device>
unin0: <Apple UniNorth System Controller> on nexus0
unin0: Version 210
pcib0: <Apple UniNorth Host-PCI bridge> on nexus0
pci0: <PCI bus> on pcib0
vgapci0: <VGA-compatible display> port 0x400-0x4ff mem 0x98000000-0x9fffffff,0x90000000-0x9000ffff irq 48 at device 16.0 on pci0
pcib1: <Apple UniNorth Host-PCI bridge> on nexus0
pci1: <PCI bus> on pcib1
macio0: <Intrepid I/O Controller> mem 0x80000000-0x8007ffff at device 23.0 on pci1
openpic0: <OpenPIC Interrupt Controller> mem 0x40000-0x7ffff on macio0
scc0: <Zilog Z8530 dual channel SCC> mem 0x13000-0x13fff,0x8400-0x84ff,0x8500-0x85ff,0x8600-0x86ff,0x8700-0x87ff irq 22,23 on macio0
scc0: [FILTER]
scc0: [FILTER]
uart0: <z8530, channel A> on scc0
uart0: [FILTER]
uart1: <z8530, channel B> on scc0
uart1: [FILTER]
ata0 mem 0x20000-0x20fff,0x8800-0x88ff irq 24 on macio0
ata0: [ITHREAD]
ohci0: <OHCI (generic) USB controller> irq 0 at device 24.0 on pci1
ohci0: [GIANT-LOCKED]
ohci0: [ITHREAD]
usb0: OHCI version 1.0, legacy support
usb0: <OHCI (generic) USB controller> on ohci0
usb0: USB revision 1.0
uhub0: <Apple OHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb0
uhub0: 2 ports with 2 removable, self powered
ohci1: <OHCI (generic) USB controller> irq 0 at device 25.0 on pci1
ohci1: [GIANT-LOCKED]
ohci1: [ITHREAD]
usb1: OHCI version 1.0, legacy support
usb1: <OHCI (generic) USB controller> on ohci1
usb1: USB revision 1.0
uhub1: <Apple OHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb1
uhub1: 2 ports with 2 removable, self powered
ohci2: <OHCI (generic) USB controller> mem 0x80083000-0x80083fff irq 29 at device 26.0 on pci1
ohci2: [GIANT-LOCKED]
ohci2: [ITHREAD]
usb2: OHCI version 1.0, legacy support
usb2: <OHCI (generic) USB controller> on ohci2
usb2: USB revision 1.0
uhub2: <Apple OHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb2
uhub2: 2 ports with 2 removable, self powered
ohci3: <NEC uPD 9210 USB controller> mem 0x80082000-0x80082fff irq 63 at device 27.0 on pci1
ohci3: [GIANT-LOCKED]
ohci3: [ITHREAD]
usb3: OHCI version 1.0
usb3: <NEC uPD 9210 USB controller> on ohci3
usb3: USB revision 1.0
uhub3: <NEC OHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb3
uhub3: 3 ports with 3 removable, self powered
ohci4: <NEC uPD 9210 USB controller> mem 0x80081000-0x80081fff irq 63 at device 27.1 on pci1
ohci4: [GIANT-LOCKED]
ohci4: [ITHREAD]
usb4: OHCI version 1.0
usb4: <NEC uPD 9210 USB controller> on ohci4
usb4: USB revision 1.0
uhub4: <NEC OHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb4
uhub4: 2 ports with 2 removable, self powered
ehci0: <NEC uPD 720100 USB 2.0 controller> mem 0x80080000-0x800800ff irq 63 at device 27.2 on pci1
ehci0: [GIANT-LOCKED]
ehci0: [ITHREAD]
usb5: EHCI version 1.0
usb5: companion controllers, 3 ports each: usb3 usb4
usb5: <NEC uPD 720100 USB 2.0 controller> on ehci0
usb5: USB revision 2.0
uhub5: <NEC EHCI root hub, class 9/0, rev 2.00/1.00, addr 1> on usb5
uhub5: 5 ports with 5 removable, self powered
pcib2: <Apple UniNorth Host-PCI bridge> on nexus0
pci2: <PCI bus> on pcib2
ata1: <Intrepid Kauai ATA Controller> mem 0xf5004000-0xf5007fff irq 39 at device 13.0 on pci2
ata1: [ITHREAD]
fwohci0: <Apple UniNorth> mem 0xf5000000-0xf5000fff irq 40 at device 14.0 on pci2
fwohci0: [FILTER]
fwohci0: OHCI version 1.10 (ROM=0)
fwohci0: No. of Isochronous channels is 8.
fwohci0: EUI64 00:0d:93:ff:fe:66:05:28
fwohci0: Phy 1394a available S400, 2 ports.
fwohci0: Link S400, max_rec 2048 bytes.
firewire0: <IEEE1394(FireWire) bus> on fwohci0
sbp0: <SBP-2/SCSI over FireWire> on firewire0
fwe0: <Ethernet over FireWire> on firewire0
if_fwe0: Fake Ethernet address: 02:0d:93:66:05:28
fwe0: Ethernet address: 02:0d:93:66:05:28
fwohci0: Initiate bus reset
fwohci0: BUS reset
fwohci0: node_id=0xc800ffc0, gen=2, CYCLEMASTER mode
gem0: <Apple UniNorth2 GMAC Ethernet> mem 0xf5200000-0xf53fffff irq 41 at device 15.0 on pci2
miibus0: <MII bus> on gem0
bmtphy0: <BCM5221 10/100baseTX PHY> PHY 0 on miibus0
bmtphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
gem0: 10kB RX FIFO, 4kB TX FIFO
gem0: Ethernet address: 00:0d:93:66:05:28
gem0: [ITHREAD]
sc0: <System console> on nexus0
sc0: Unknown <16 virtual consoles, flags=0x300>
ums0: <vendor 0x04b3 product 0x310d, class 0/0, rev 2.00/43.00, addr 2> on uhub3
ums0: 3 buttons and Z dir.
uhub6: <Chicony IBM Preferred Pro USB Fingerprint Keyboard, class 9/0, rev 1.10/2.00, addr 2> on uhub4
uhub6: 2 ports with 0 removable, bus powered
ukbd0: <Chicony IBM Preferred Pro USB Fingerprint Keyboard, class 0/0, rev 1.10/0.02, addr 3> on uhub6
kbd1 at ukbd0
uhid0: <Chicony IBM Preferred Pro USB Fingerprint Keyboard, class 0/0, rev 1.10/0.02, addr 3> on uhub6
ugen0: <STMicroelectronics Biometric Coprocessor, class 0/0, rev 1.00/0.01, addr 4> on uhub6
Timecounter "decrementer" frequency 41620997 Hz quality 0
Timecounters tick every 10.000 msec
firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me)
firewire0: bus manager 0 (me)
ad0: 38154MB <Seagate ST940110A 3.07> at ata1-master BIOSPIO
acd0: DVDR <MATSHITACD-RW CW-8124/DACD> at ata1-slave BIOSPIO
acd0: FAILURE - READ_BIG ILLEGAL REQUEST asc=0x64 ascq=0x00 
acd0: FAILURE - READ_BIG ILLEGAL REQUEST asc=0x64 ascq=0x00 
GEOM_LABEL: Label for provider acd0 is iso9660/CDROM.
acd0: FAILURE - READ_BIG ILLEGAL REQUEST asc=0x64 ascq=0x00 
acd0: FAILURE - READ_BIG ILLEGAL REQUEST asc=0x64 ascq=0x00 
acd0: FAILURE - READ_BIG ILLEGAL REQUEST asc=0x64 ascq=0x00 
Trying to mount root from ufs:/dev/ad0s3
%