FreeBSD on ASUS EeePC S101 #1

ASUS EeePC S101を購入。FreeBSDをインストールする。FreeBSDEeePCで利用するプロジェクトが、ものすごいスピードで対応しているので、おそらく大丈夫だろうと思って、新製品のS101にトライしてみることにする。

基本的なデバイスは、901や1000Hと同様なので、8.0-CURRENTならば、ほぼ問題なく動く、と勝手に思ってやってみる。

bootable USB flash メモリの作成

まず、USBフラッシュメモリからブートできるようにする。参考

I-O DATAのUSBフラッシュメモリ16GをFreeBSD boxのUSBに挿入。

da0 at umass-sim0 bus 0 target 0 lun 0
da0: <I-O DATA USB Flash Disk BC01> Removable Direct Access SCSI-0 device
da0: 40.000MB/s transfers
da0: 15296MB (31326208 512 byte sectors: 255H 63S/T 1949C)

フラッシュメモリをフォーマットして/mntにマウント

# fdisk -I da0
# fdisk -B da0
# bsdlabel -w da0s1 auto
# bsdlabel -B da0s1
# newfs /dev/da0s1a
# mount /dev/da0s1a /mnt

インストールするものをビルドして、インストール。kernelは、witnessやdebug関係を消しておく。

# cd /usr/src
# make buildworld
# make buildkernel KERNCONF=GENERIC
# make installworld DESTDIR=/mnt
# make installkernel DESTDIR=/mnt
# make distrib-dirs DESTDIR=/mnt
# make distribution DESTDIR=/mnt

installworldにものすごい時間がかかった。約12時間。USBメモリってこんなに遅いものだろうか??

最低限のfstabとrc.confを作成。

echo /dev/da0s1a / ufs rw 1 1 > /mnt/etc/fstab
echo hostname="demo" > /mnt/etc/rc.conf
echo ifconfig_DEFAULT=DHCP >> /mnt/etc/rc.conf

ディスクレスの要領で、mfsを使うと早くブートすると思い、いちおう/confなどを用意。touch /mnt/etc/disklessを忘れずに。

ここの情報に従って、/boot/loder.confを書く。

snd_hda_load="YES"
acpi_asus_load="YES"

hw.pci.do_power_nodriver=1
kern.hz=100

ちゃんとアンマウント

# umount /mnt

USBメモリを抜く。

EeePC S101からブート

EeePC S101にUSBを挿入して、ESCキーを押しながら電源を入れる。すると、ハードディスクからブートするか、USBからブートするか選択できるので、USBからブートする。

普通にブートしました。

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 8.0-CURRENT #0: Thu Nov 27 20:21:06 JST 2008
    xxxxxxxx@thebe.xxxxx.xxx:/usr/obj/usr/src/sys/ARTEMIS
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: Intel(R) Atom(TM) CPU N270   @ 1.60GHz (1600.01-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0x106c2  Stepping = 2
  Features=0xbfe9fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
  Features2=0x40c39d<SSE3,DTES64,MON,DS_CPL,EST,TM2,SSSE3,xTPR,PDCM,<b22>>
  AMD Features=0x100000<NX>
  AMD Features2=0x1<LAHF>
  Logical CPUs per core: 2
real memory  = 1064960000 (1015 MB)
avail memory = 1028808704 (981 MB)
ACPI APIC Table: <A_M_I_ OEMAPIC >
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
 cpu0 (BSP): APIC ID:  0
 cpu1 (AP): APIC ID:  1
ioapic0: Changing APIC ID to 2
ioapic0 <Version 2.0> irqs 0-23 on motherboard
kbd1 at kbdmux0
ath_hal: 0.10.5.10 (AR5210, AR5211, AR5212, AR5416, RF5111, RF5112, RF2413, RF5413, RF2133, RF2425, RF2417)
acpi0: <A_M_I_ OEMRSDT> on motherboard
acpi0: [ITHREAD]
acpi0: Power Button (fixed)
acpi0: reservation of 0, a0000 (3) failed
acpi0: reservation of 100000, 3f700000 (3) failed
Timecounter "ACPI-safe" frequency 3579545 Hz quality 850
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x808-0x80b on acpi0
acpi_ec0: <Embedded Controller: GPE 0x1c> port 0x62,0x66 on acpi0
acpi_hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
Timecounter "HPET" frequency 14318180 Hz quality 900
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
vgapci0: <VGA-compatible display> port 0xdc80-0xdc87 mem 0xfbd00000-0xfbd7ffff,0xd0000000-0xdfffffff,0xfbcc0000-0xfbcfffff irq 16 at device 2.0 on pci0
agp0: <Intel 945GME SVGA controller> on vgapci0
agp0: detected 7932k stolen memory
agp0: aperture size is 256M
vgapci1: <VGA-compatible display> mem 0xfbd80000-0xfbdfffff at device 2.1 on pci0
hdac0: <Intel 82801G High Definition Audio Controller> mem 0xfbcb8000-0xfbcbbfff irq 16 at device 27.0 on pci0
hdac0: HDA Driver Revision: 20081123_0118
hdac0: [ITHREAD]
pcib1: <ACPI PCI-PCI bridge> irq 16 at device 28.0 on pci0
pci3: <ACPI PCI bus> on pcib1
pcib2: <ACPI PCI-PCI bridge> irq 17 at device 28.1 on pci0
pci2: <ACPI PCI bus> on pcib2
ale0: <Atheros AR8121/AR8113/AR8114 PCIe Ethernet> port 0xec80-0xecff mem 0xfbfc0000-0xfbffffff irq 17 at device 0.0 on pci2
ale0: 960 Tx FIFO, 1024 Rx FIFO
ale0: Using 1 MSI messages.
miibus0: <MII bus> on ale0
atphy0: <Atheros F1 10/100/1000 PHY> PHY 0 on miibus0
atphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT-FDX, auto
ale0: Ethernet address: 00:23:54:7e:2b:79
ale0: [FILTER]
pcib3: <ACPI PCI-PCI bridge> irq 18 at device 28.2 on pci0
pci1: <ACPI PCI bus> on pcib3
pci1: <network> at device 0.0 (no driver attached)
uhci0: <UHCI (generic) USB controller> port 0xd480-0xd49f irq 23 at device 29.0 on pci0
uhci0: [GIANT-LOCKED]
uhci0: [ITHREAD]
usb0: <UHCI (generic) USB controller> on uhci0
usb0: USB revision 1.0
uhub0: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb0
uhub0: 2 ports with 2 removable, self powered
uhci1: <UHCI (generic) USB controller> port 0xd800-0xd81f irq 19 at device 29.1 on pci0
uhci1: [GIANT-LOCKED]
uhci1: [ITHREAD]
usb1: <UHCI (generic) USB controller> on uhci1
usb1: USB revision 1.0
uhub1: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb1
uhub1: 2 ports with 2 removable, self powered
uhci2: <UHCI (generic) USB controller> port 0xd880-0xd89f irq 18 at device 29.2 on pci0
uhci2: [GIANT-LOCKED]
uhci2: [ITHREAD]
usb2: <UHCI (generic) USB controller> on uhci2
usb2: USB revision 1.0
uhub2: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb2
uhub2: 2 ports with 2 removable, self powered
uhci3: <UHCI (generic) USB controller> port 0xdc00-0xdc1f irq 16 at device 29.3 on pci0
uhci3: [GIANT-LOCKED]
uhci3: [ITHREAD]
usb3: <UHCI (generic) USB controller> on uhci3
usb3: USB revision 1.0
uhub3: <Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb3
uhub3: 2 ports with 2 removable, self powered
ehci0: <Intel 82801GB/R (ICH7) USB 2.0 controller> mem 0xfbcb7c00-0xfbcb7fff irq 23 at device 29.7 on pci0
ehci0: [GIANT-LOCKED]
ehci0: [ITHREAD]
usb4: EHCI version 1.0
usb4: companion controllers, 2 ports each: usb0 usb1 usb2 usb3
usb4: <Intel 82801GB/R (ICH7) USB 2.0 controller> on ehci0
usb4: USB revision 2.0
uhub4: <Intel EHCI root hub, class 9/0, rev 2.00/1.00, addr 1> on usb4
uhub4: 8 ports with 8 removable, self powered
umass0: <I-O DATA USB Flash Disk, class 0/0, rev 2.00/bc.01, addr 2> on uhub4
ugen0: <Chicony Electronics Co., Ltd. USB2.0 0.3M UVC WebCam, class 239/2, rev 2.00/63.14, addr 3> on uhub4
pcib4: <ACPI PCI-PCI bridge> at device 30.0 on pci0
pci4: <ACPI PCI bus> on pcib4
isab0: <PCI-ISA bridge> at device 31.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel ICH7M SATA300 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xffa0-0xffaf at device 31.2 on pci0
ata0: <ATA channel 0> on atapci0
ata0: [ITHREAD]
ata1: <ATA channel 1> on atapci0
ata1: [ITHREAD]
pci0: <serial bus, SMBus> at device 31.3 (no driver attached)
acpi_asus0: <ASUS EeePC> on acpi0
acpi_lid0: <Control Method Lid Switch> on acpi0
acpi_button0: <Sleep Button> on acpi0
acpi_button1: <Power Button> on acpi0
acpi_tz0: <Thermal Zone> on acpi0
battery0: <ACPI Control Method Battery> on acpi0
acpi_acad0: <AC Adapter> on acpi0
atrtc0: <AT realtime clock> port 0x70-0x71 irq 8 on acpi0
atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
atkbd0: [ITHREAD]
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: [ITHREAD]
psm0: model IntelliMouse, device ID 3
cpu0: <ACPI CPU> on acpi0
est0: <Enhanced SpeedStep Frequency Control> on cpu0
p4tcc0: <CPU Frequency Thermal Control> on cpu0
cpu1: <ACPI CPU> on acpi0
est1: <Enhanced SpeedStep Frequency Control> on cpu1
est: CPU supports Enhanced Speedstep, but is not recognized.
est: cpu_vendor GenuineIntel, msr 60f0c2706000c27
device_attach: est1 attach returned 6
p4tcc1: <CPU Frequency Thermal Control> on cpu1
pmtimer0 on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
ppc0: parallel port not found.
ugen1: <Broadcom Corp BT-253, class 224/1, rev 2.00/2.41, addr 2> on uhub3
Timecounters tick every 10.000 msec
ad0: FAILURE - SET_MULTI status=51<READY,DSC,ERROR> error=4<ABORTED>
ad0: 15392MB <ASUS-JM S41 SSD 02.10102> at ata0-master SATA150
hdac0: HDA Codec #0: Realtek ALC269
pcm0: <HDA Realtek ALC269 PCM #0 Analog> at cad 0 nid 1 on hdac0
pcm1: <HDA Realtek ALC269 PCM #1 Analog> at cad 0 nid 1 on hdac0
SMP: AP CPU #1 Launched!
da0 at umass-sim0 bus 0 target 0 lun 0
da0: <I-O DATA USB Flash Disk BC01> Removable Direct Access SCSI-0 device 
da0: 40.000MB/s transfers
da0: 15296MB (31326208 512 byte sectors: 255H 63S/T 1949C)
Trying to mount root from ufs:/dev/da0s1a

デュアルコアチップのように見えるのは、hyperthreadedなチップだかららしいです。懸案のAtheros L1 FastEthernetは

ale0: <Atheros AR8121/AR8113/AR8114 PCIe Ethernet> port 0xec80-0xecff mem 0xfbfc0000-0xfbffffff irq 17 at device 0.0 on pci2
ale0: 960 Tx FIFO, 1024 Rx FIFO
ale0: Using 1 MSI messages.

で、きちんと動いている。Atheros Wireless LANも

ath_hal: 0.10.5.10 (AR5210, AR5211, AR5212, AR5416, RF5111, RF5112, RF2413, RF5413, RF2133, RF2425, RF2417)

と認識されている模様。ifconfig -aには現れないので、後で確認する必要あり。

SSDからFreeBSDを起動するようにする。

とりあえず、問題となるデバイスがないようなので、SSD(ad0)をフォーマットする。

# fdisk -I ad0
# fdisk -B ad0
# bsdlabel -w ad0s1 auto
# bsdlabel -B ad0s1
# newfs -U /dev/ad0s1a
# mount /dev/ad0s1a /mnt

さて、ここからどのようにSSDにインストールするかであるが、ここの情報では、cp -Rpを使っているが、それだとハードリンクとかがばらばらになりそうである。

# cd /
# pax -rw -pe . /mnt

が、いいんじゃないかと思うのだが、再帰的に/mntが/mnt/mntにコピーが始まると悪夢な感じがするので、ちょっとめんどくさいが、

# cd /bin
# mkdir /mnt/bin
# pax -rw -pe . /mnt/bin

の要領で、ルートのものを/mnt以下に移した。/varは文句を言われるが、/var/run以下を適当に消しながら(*.pid)コピー。

/mnt/etc/fstabを書き換えて(忘れた)、

/dev/ad0s1a / ufs rw 1 1
proc        /proc procfs rw 0 0

/mnt/etc/disklessを消して、リブート。

インストール後のこまかいこと

/etc/mail/aliases.dbがないと怒られるので、

# newaliases

時刻をJSTにして、あわせる。

# cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# ntp ntp-tk01.ocn.ad.jp

swapがないので、512Mのスワップファイルを作成。

# dd if=/dev/zero of=/var/tmp/swap0 bs=1024k count=512

rc.confに

swapfile="/var/tmp/swap0"

として、スワップファイルを作って、リブートする。

ここまでで、FreeBSDのインストールは完了。