MC, mc at the domain hack.org
This text describes how I installed FreeBSD 6.1, NetBSD 3.0 and Ubuntu GNU/Linux 6.06 via PXE network boot on my Lenovo Thinkpad X60s. I also describe what works and what doesn't and what I have done so far to figure out why.
Since this text was first published I have upgraded my Thinkpad to FreeBSD 6.2 and most information here is now updated to reflect that.
Please see FreeBSD 7.2 on the Lenovo Thinkpad X60s for information on FreeBSD 7.2 on the Thinkpad X60s.
In July 2010 I reinstalled FreeBSD. I'm now running 8.1RC2 on the machine. I installed it from a USB memory stick.
2006-06-07: First published.
2006-06-13: Added link to Kazuhiro KONDOU's X server patch.
2006-06-15: Added USB mouse experience.
2006-06-21: Added note about network latency under Windows XP.
2006-08-03: Added small note about the difference between X60 and X60s.
2006-10-02: Changed a strange typo and the confusing order of some instructions. Thanks to Philipp Timmel for noticing.
2006-10-21: Added my powerd configuration.
2007-01-17: Added a table for a really short version. Went through another PXE install on another machine and copy pasted from my configuration files to be sure to get all the paths right.
2007-02-01: Added workaround for the strange latency problem on the em NIC. Added some USB experiences. Changed link to the FreeBSD Laptop Compatibility List. Added links to Tuxmobil.
2008-02-22: Added a note about breakage when upgrading to Xorg 7 (use i810 driver instead of intel driver).
FreeBSD 6.2:
HW | Out of the box | With patches |
---|---|---|
Intel Core Duo SMP | Yes | |
Intel 82801G audio | No | Yes |
Intel 945 graphics | No* | |
Firewire | Yes | |
Bluetooth | -- | -- |
Modem | No | No |
USB | Yes | |
SATA | Yes | |
SD | No | No |
Intel 3945ABG WLAN | No | No |
Gigabit Ethernet | Yes** | |
Suspend/resume | No | No |
Fingerprint reader | No*** | No |
* Graphics works in VESA mode out of the box and with the i810 driver if installed from ports.
** I had strange latency on the network, though, but a dirty workaround exists.
*** The device is found and is seen as an ugen(4), so it is reachable for experiments.
I haven't tested Bluetooth at all.
My old laptop, a Thinkpad 570, has served me well for the past seven(!) years but is starting to feel a little tired and is more or less starting to break down. In the spring of 2006 I started looking out for a new laptop.
After a long period filled with doubt and reading up on modern hardware, I decided to buy a Lenovo Thinkpad X60s. Perhaps I'm biased by my previous experiences with a Thinkpad 570 (at home) and a Thinkpad X20 (at a previous job), but I have found the Thinkpad series very, very nice.
The X60 and X60s are marketed as ultraportables. The X60s weigh in at about 1.3 kg (the X60 slightly heavier) and have a 12.1" screen of 1024x768. Nevertheless, they sport 512 MiB RAM and an 80 GB SATA disk with an Intel Core Duo processor. There is no CD-ROM nor DVD player, but you can attach one with USB or Firewire.
As far as I understand the main difference between a Thinkpad X60 and an X60s, the latter being what I have, is that the first have the fullblown Core Duo CPU and the X60s has the low voltage version. Daniel Kulesz also informs me that the X60 has a 2.5" hard disk drive and the X60s has a 1.8" hdd. The X60 also seems to be heavier according to specs. If someone knows more about the differences, contact me and I will add them here.
I had heard rumours that the quality of the Thinkpad line of laptops were going down after Lenovo bought the IBM PC division, but I had also read articles where the sturdy production quality of the X60 (and X60s) was praised. I decided to take a chance. So far, I'm really happy with the quality, although I don't think the keyboard is as nice as it was on my old 570.
If you want to run FreeBSD on a laptop there is a jungle out there. There is very little information on running FreeBSD on modern laptops. There is, however, a FreeBSD Laptop Compatibility List.
Werner Heuser also keeps a site called Tuxmobil where he collects reports on running Linux and various *BSDs on mobile devices. This report is listed under IBM/Lenovo and Mobile BSD.
The best advice I can give about what laptop to buy is to go for business class laptops from the big names. The bigger the name, the bigger the chance that a FreeBSD developer also has one of those and, hence, more support for that hardware in FreeBSD.
Quick summary of FreeBSD on a Thinkpad X60s:
If I try zzz(8), the machine goes to some form of half-sleep (the fan is still running, but the suspend LED lits up) and can't be awakened.
When I'm running powerd, the daemon was too quick to lower the CPU frequency even below being capable of decoding MP3s. I tried to help out by starting it with
powerd_flags="-i 95 -p 200"
(Lower the CPU frequency to minimum when we're 95% idle. Poll
every 200 ms.) but that wasn't enough. Instead, I forced the lowest
frequency to be 625 MHz by setting the debug.cpufreq.lowest
sysctl variable.
(II) I810: Driver for Intel Integrated Graphics Chipsets: i810, i810-dc100, i810e, i815, i830M, 845G, 852GM/855GM, 865G, 915G, E7221 (i915), 915GM, 945G (II) VESA: driver for VESA chipsets: vesa (WW) I810: No matching Device section for instance (BusID PCI:0:2:1) found (--) Chipset vesa found
Kazuhiro KONDOU posted a link to an i945GM patch on freebsd-mobile, but I haven't tried it yet.
This patch seems to have ended up in the xorg-server-6.9.0_5 port, because when I installed that Xorg.0.log says:
(II) I810: Driver for Intel Integrated Graphics Chipsets: i810, i810-dc100, i810e, i815, i830M, 845G, 852GM/855GM, 865G, 915G, E7221 (i915), 915GM, 945G, 945GM (II) Primary Device is: PCI 00:02:0 (--) Chipset 945GM found /.../ (EE) GARTInit: Unable to open /dev/agpgart (No such file or directory) (WW) I810(0): /dev/agpgart is either not available, or no memory is available
Note, though, that even though agp
is present in the kernel,
the X server couldn't allocate more memory. I gather this means X
will be accelerated, but won't be as fast as it can be.
2008-02-22: Much later, I did the large upgrade Xorg 7. This broke my configuration. The default Intel driver is now "intel". This doesn't work with the Intel 945GM on FreeBSD 6.2.
Instead, I had to "make deinstall" on xf86-video-intel
and
install the x11-drivers/xf86-video-i810
from ports to get it to
work as before.
scanpci says:
pci bus 0x0015 cardnum 0x00 function 0x02: vendor 0x1180 device 0x0822 Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter
NetBSD 3.0 wouldn't recognize any hard disks so I couldn't install it. I guess the NetBSD release doesn't have support for the SATA controller.
The Ubuntu GNU/Linux 6.06 installation program hanged and displayed only a couple of cursors, nothing more after having created filesystems, configured networking and starting to fetch packages. I tried it only once.
The only removable media on this notebook is an SD Card reader. I doubted that I could boot and install the OS from that. Luckily, the Thinkpad supports booting over the network with PXE.
PXE works by using DHCP and TFTP to get a network boot program (pxeboot in FreeBSD) from a server. The pxeboot program then downloads a kernel and starts the installation if you use the mfsroot image that comes with the installation CD.
But first, to get the machine to boot over the network, you have to configure the boot order in the BIOS. Press F1 when the Thinkpad is starting and change the boot order so that the "LAN" is the first option. Save and exit from BIOS.
Then copy the necessary files from the CD, set up DHCP, TFTP and NFS before booting.
I downloaded the FreeBSD ISO image and mounted it locally on my server. You can make do with the "boot only" ISO, if there is one. I mounted it like this:
# mdconfig -a -t vnode -f image.iso -u 0 # mount -t cd9660 /dev/md0 /mnt
I copied the boot directory with all the install stuff from the CD-ROM image:
# mkdir -p /freebsd # cp -Rp /mnt/boot /freebsd
Then, to unmount the ISO image:
# umount /mnt # mdconfig -d -u 0
I edited the loader configuration /freebsd/boot/loader.conf to add
vfs.root.mountfrom="ufs:/dev/md0c"
which means that the later booting process will use a ramdisk as root instead of using NFS.
I configured the DHCP server by adding this to my dhcpd.conf (/usr/local/etc/dhcpd.conf on my system, from the package isc-dhcp3-server):
host x60 { hardware ethernet 00:16:d3:21:5a:5a; fixed-address 10.0.0.20; next-server 10.0.0.2; filename "boot/pxeboot"; option root-path "10.0.0.2:/freebsd"; }
Obviously, you have to change the hardware ethernet address to match your X60s. Don't use my MAC address.
My internal network, as you see above, is 10.0.0.0/24. My NFS server is 10.0.0.2. The X60s will get 10.0.0.20. Change this to match your own network.
Note that the ISC DHCP server doesn't respond to SIGHUP. You have to actually stop the process and restart it to get it to read its configuration file.
I enabled TFTP by editing inetd.conf and adding:
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /freebsd
On my system I don't even keep inetd running normally, so I manually started it as well:
# inetd -a 10.0.0.2
I edited /etc/exports and added
/freebsd -ro -network 10.0.0.0 -mask 255.255.255.0
Again, this is for my network, 10.0.0.0/24. Change to match yours.
If you haven't got NFS running, start it and its associated programs:
# rpcbind -h 10.0.0.2 # mountd # nfsd -h 10.0.0.2
You might want to read up on the manual pages for those, especially if you're running this on a multi-homed machine, like I did. Look for the "-h" flag. You may not want to accidentally export something to the whole world.
Note that if you for some reason have the NFS server serving only over TCP (the -t flag), this won't work with PXE.
Turn on your Thinkpad. It should get an IP address and some extra data via DHCP, then download pxeboot and start booting a kernel. You will then enter the ordinary FreeBSD installation process.
I got horrid RTT times on some pings when I pinged the Thinkpad from my server:
64 bytes from 10.0.0.20: icmp_seq=36 ttl=64 time=837.244 ms 64 bytes from 10.0.0.20: icmp_seq=37 ttl=64 time=0.707 ms 64 bytes from 10.0.0.20: icmp_seq=38 ttl=64 time=817.723 ms 64 bytes from 10.0.0.20: icmp_seq=39 ttl=64 time=0.545 ms 64 bytes from 10.0.0.20: icmp_seq=40 ttl=64 time=797.555 ms 64 bytes from 10.0.0.20: icmp_seq=41 ttl=64 time=0.408 ms 64 bytes from 10.0.0.20: icmp_seq=42 ttl=64 time=777.442 ms 64 bytes from 10.0.0.20: icmp_seq=43 ttl=64 time=48.695 ms ^C --- 10.0.0.20 ping statistics --- 44 packets transmitted, 44 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.324/216.542/957.203/333.775 ms
I verified that it was the Intel PRO 1000 by inserting a 3Com 3c589 PCMCIA NIC and pinged it from the server:
tim:~ % ping 10.0.0.252 PING 10.0.0.252 (10.0.0.252): 56 data bytes 64 bytes from 10.0.0.252: icmp_seq=0 ttl=64 time=0.777 ms 64 bytes from 10.0.0.252: icmp_seq=1 ttl=64 time=0.616 ms 64 bytes from 10.0.0.252: icmp_seq=2 ttl=64 time=0.670 ms 64 bytes from 10.0.0.252: icmp_seq=3 ttl=64 time=0.657 ms 64 bytes from 10.0.0.252: icmp_seq=4 ttl=64 time=0.668 ms 64 bytes from 10.0.0.252: icmp_seq=5 ttl=64 time=0.670 ms 64 bytes from 10.0.0.252: icmp_seq=6 ttl=64 time=0.618 ms ^C --- 10.0.0.252 ping statistics --- 7 packets transmitted, 7 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.616/0.668/0.777/0.050 ms
Interestingly, if I ping from the Thinkpad to any other machines on the same switch, I never see any latency problems with the em0 interface!
Even more interesting is that if I flood ping (ping -f) from the Thinkpad to any machine at all, the latency from other machines decreases dramatically.
By default, the FreeBSD network stack has been running in the MPSAFE mode for a while now. Perhaps my latency problem was a symptom of a race in the em(4) driver? I added debug.mpsafenet=0 to loader.conf and rebooted to check. There was no difference.
I read up on em(4). Apparently this NIC can do "interrupt throttling" not to overload the CPU with interrupts at the expense of some latency. You can control it with some sysctls. "Ah-ha!", I thought, but then realized that the latency they speak of is nowhere near what I'm seeing. Nevertheless, I tried disabling "interrupt throttling" altogether by setting theese sysctls to 0:
dev.em.0.rx_int_delay=0 dev.em.0.tx_int_delay=0 dev.em.0.rx_abs_int_delay=0 dev.em.0.tx_abs_int_delay=0
but to no avail.
I read through several web pages reporting trouble with earlier versions of the em(4) driver. One person spoke of trouble with an interfering cardbus bridge (cbb). I did what he did and disabled "cbb" in my kernel. That didn't help, but at least em0 showed up differently in vmstat -i:
interrupt total rate irq16: em0 uhci0+ 2902 5 irq17: fwohci0+ 1 0
Earlier, it was:
interrupt total rate irq16: cbb0 em0+++ 10476 8
I also figured it might be the SMP kernel that did something, so I tried with a UP kernel instead. Same thing.
Please note: I got exactly the same behavior when booting Linux.
Aravind Gottipati <aravind at the domain freeshell.org> wrote me on 2006-06-20 to tell me:
I recently verified that the same network problem can be reproduced with the pre-installed Windows XP that comes with the laptop.
Update 2007-02-01: Jack Vogel from Intel let us all know that this is a known problem and that there is a quick and dirty workaround. It works for me:
From: "Jack Vogel" <jfvogel at the domain gmail.com> Newsgroups: gmane.os.freebsd.devel.net, gmane.os.freebsd.stable, gmane.os.freebsd.current Subject: Lenovo X60 em workaround Date: Wed, 17 Jan 2007 12:58:04 -0800 Since this was just seen, and the patch below validated as working I wanted to send general email to capture this: The Lenovo X60 can have issues with long ping times, this is a KNOWN hardware problem, and Intel is working with IBM/Lenovo, a final 'fix' has not been decided on yet. Nevertheless, the patch below will work, but I do not want to check it in as its still temporary. Address questions to me, Jack PS This is based on 6.2, but is needed for CURRENT as well. --- if_em.dist.c Wed Jan 17 17:59:46 2007 +++ if_em.c Wed Jan 17 18:03:13 2007 @@ -3348,6 +3348,10 @@ E1000_WRITE_REG(&adapter->hw, RXCSUM, reg_rxcsum); } + /* TEMPORARY WORKAROUND for X60 */ + if (adapter->hw.mac_type == em_82573) + E1000_WRITE_REG(&adapter->hw, RDTR, 32); + /* Enable Receives */ E1000_WRITE_REG(&adapter->hw, RCTL, reg_rctl); /*
The X60s immediately reboots if I attach a Pentax Optio camera while running. If I attach it with power off and boot I get a kernel panic when I try to mount /dev/da0. I caught this panic with the GENERIC i386 kernel:
fatal trap 18: integer divide fault while in kernel cpu id = 0 apic id = 00 instruction pointer = 0x20:0xc0853017 stack pointer = 0x28:0xd544a524 frame pointer = 0x28:0xd544a5ac code segment = base 0x0, limit 0xfffff, type 0x1b, DPL 0, pres 1, def32 1, gran 1 processor eflags = interrupts enabled, resume, IOPL = 0 current process = 577 (mount_msdosfs)
I could, however, attach an external USB mouse and use it immediately in X.
I also tried with a USB keyboard. I can use it at the same time as the integrated keyboard in both console mode and under X.
A SanDisk ImageMate 12in1 card reader works with the SD card I tested. Finally, I can access the photos from my Pentax in a convenient way.
In FreeBSD 6.1, there is no driver for the sound hardware in Thinkpad X60s. Andrea Bittau <a.bittau at the domain cs.ucl.ac.uk> has patched Stephane E. Potvin's <sepotvin at the domain videotron.ca> hdac driver and placed it here:
Download it, unpack it and compile the module, then load it with
# kldload ./hdac.ko
You may want to load this at every boot by entering this line into
/boot/loader.conf
:
hdac_load="YES"
and copying hdac.ko to /boot/kernel/.
I use my own keymap in the console, so I copied freebsd-sw.kbd to /usr/share/syscons/keymaps/.
I don't need to run Sendmail, so I turned it off.
I use Latin 1 in the keyboard map, so I need a Latin 1 font as well.
I edited rc.conf and added:
font8x16="iso-8x16" keymap="freebsd-sw.kbd" sendmail_enable="NONE"
In a feeble attempt to squeeze out more battery life, I chose to mount my filesystems with the noatime option (don't update the file access time whenever you do something with a file, even reading). This means by /etc/fstab looks like this:
# Device Mountpoint FStype Options Dump Pass# /dev/ad4s1b none swap sw 0 0 /dev/ad4s1a / ufs rw,noatime 1 1 /dev/ad4s1e /tmp ufs rw,noatime 2 2 /dev/ad4s1f /usr ufs rw,noatime 2 2 /dev/ad4s1d /var ufs rw,noatime 2 2
I get approximately 1.5 hour out of the battery when running FreeBSD. Note that this was mainly me surfing the web, reading and writing in Emacs under X, no heavy compiles or a lot of disk activity.
Here's a dmesg from a GENERIC kernel without the hdac.ko module:
Copyright (c) 1992-2006 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 6.1-RELEASE #0: Sun May 7 04:42:56 UTC 2006 root@opus.cse.buffalo.edu:/usr/obj/usr/src/sys/SMP Timecounter "i8254" frequency 1193182 Hz quality 0 CPU: Genuine Intel(R) CPU L2400 @ 1.66GHz (1662.51-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x6e8 Stepping = 8 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=0xc1a9<SSE3,MON,VMX,EST,TM2,<b14>,<b15>> AMD Features=0x100000<NX> Cores per package: 2 real memory = 527302656 (502 MB) avail memory = 506441728 (482 MB) ACPI APIC Table: <LENOVO TP-7B > FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs cpu0 (BSP): APIC ID: 0 cpu1 (AP): APIC ID: 1 ioapic0: Changing APIC ID to 1 ioapic0 <Version 2.0> irqs 0-23 on motherboard kbd1 at kbdmux0 acpi0: <LENOVO TP-7B> on motherboard acpi_ec0: <Embedded Controller: GPE 0x1c, ECDT> port 0x62,0x66 on acpi0 acpi_bus_number: can't get _ADR acpi_bus_number: can't get _ADR acpi_bus_number: can't get _ADR acpi_bus_number: can't get _ADR acpi_bus_number: can't get _ADR acpi_bus_number: can't get _ADR acpi0: Power Button (fixed) Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000 acpi_timer0: <24-bit timer at 3.579545MHz> port 0x1008-0x100b on acpi0 cpu0: <ACPI CPU> on acpi0 acpi_throttle0: <ACPI CPU Throttling> on cpu0 cpu1: <ACPI CPU> on acpi0 acpi_throttle1: <ACPI CPU Throttling> on cpu1 acpi_throttle1: failed to attach P_CNT device_attach: acpi_throttle1 attach returned 6 acpi_lid0: <Control Method Lid Switch> on acpi0 acpi_button0: <Sleep Button> on acpi0 pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0 pci0: <ACPI PCI bus> on pcib0 pci0: <display, VGA> at device 2.0 (no driver attached) pci0: <display> at device 2.1 (no driver attached) pcm0: <Intel 82801G High Definition Audio Controller> mem 0xee240000-0xee243fff irq 17 at device 27.0 on pci0 init 0xc33a5100 pcm0: Output Streams: 4, Input Streams: 4, Bidirectional Streams: 0 pcm0: CORB Size: 256, RIRB Size: 256 pcib1: <ACPI PCI-PCI bridge> irq 20 at device 28.0 on pci0 pci2: <ACPI PCI bus> on pcib1 em0: <Intel(R) PRO/1000 Network Connection Version - 3.2.18> port 0x2000-0x201f mem 0xee000000-0xee01ffff irq 16 at device 0.0 on pci2 em0: Ethernet address: 00:16:d3:21:5a:5a pcib2: <ACPI PCI-PCI bridge> irq 21 at device 28.1 on pci0 pci3: <ACPI PCI bus> on pcib2 pci3: <network> at device 0.0 (no driver attached) pcib3: <ACPI PCI-PCI bridge> irq 22 at device 28.2 on pci0 pci4: <ACPI PCI bus> on pcib3 pcib4: <ACPI PCI-PCI bridge> irq 23 at device 28.3 on pci0 pci12: <ACPI PCI bus> on pcib4 uhci0: <UHCI (generic) USB controller> port 0x1820-0x183f irq 16 at device 29.0 on pci0 uhci0: [GIANT-LOCKED] 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 uhub0: 2 ports with 2 removable, self powered uhci1: <UHCI (generic) USB controller> port 0x1840-0x185f irq 17 at device 29.1 on pci0 uhci1: [GIANT-LOCKED] 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 uhub1: 2 ports with 2 removable, self powered uhci2: <UHCI (generic) USB controller> port 0x1860-0x187f irq 18 at device 29.2 on pci0 uhci2: [GIANT-LOCKED] 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 uhub2: 2 ports with 2 removable, self powered uhci3: <UHCI (generic) USB controller> port 0x1880-0x189f irq 19 at device 29.3 on pci0 uhci3: [GIANT-LOCKED] 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 uhub3: 2 ports with 2 removable, self powered ehci0: <Intel 82801GB/R (ICH7) USB 2.0 controller> mem 0xee444000-0xee4443ff irq 19 at device 29.7 on pci0 ehci0: [GIANT-LOCKED] 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 uhub4: 8 ports with 8 removable, self powered pcib5: <ACPI PCI-PCI bridge> at device 30.0 on pci0 pci21: <ACPI PCI bus> on pcib5 cbb0: <RF5C476 PCI-CardBus Bridge> mem 0xe4300000-0xe4300fff irq 16 at device 0.0 on pci21 cardbus0: <CardBus bus> on cbb0 pccard0: <16-bit PCCard bus> on cbb0 fwohci0: <Ricoh R5C552> mem 0xe4301000-0xe43017ff irq 17 at device 0.1 on pci21 fwohci0: OHCI version 1.0 (ROM=0) fwohci0: No. of Isochronous channels is 4. fwohci0: EUI64 00:0a:e4:06:00:16:20:1b fwohci0: Phy 1394a available S400, 2 ports. fwohci0: Link S400, max_rec 2048 bytes. firewire0: <IEEE1394(FireWire) bus> on fwohci0 fwe0: <Ethernet over FireWire> on firewire0 if_fwe0: Fake Ethernet address: 02:0a:e4:16:20:1b fwe0: Ethernet address: 02:0a:e4:16:20:1b fwe0: if_start running deferred for Giant sbp0: <SBP-2/SCSI over FireWire> on firewire0 fwohci0: Initiate bus reset fwohci0: node_id=0xc800ffc0, gen=1, CYCLEMASTER mode firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me) firewire0: bus manager 0 (me) pci21: <base peripheral> at device 0.2 (no driver attached) isab0: <PCI-ISA bridge> at device 31.0 on pci0 isa0: <ISA bus> on isab0 atapci0: <Intel ICH7 UDMA100 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0x1810-0x181f at device 31.1 on pci0 ata0: <ATA channel 0> on atapci0 ata1: <ATA channel 1> on atapci0 atapci1: <Intel ICH7 SATA300 controller> port 0x18d0-0x18d7,0x18c4-0x18c7,0x18c8-0x18cf,0x18c0-0x18c3,0x18b0-0x18bf mem 0xee444400-0xee4447ff irq 16 at device 31.2 on pci0 ata2: <ATA channel 0> on atapci1 ata3: <ATA channel 1> on atapci1 ata4: <ATA channel 2> on atapci1 ata5: <ATA channel 3> on atapci1 pci0: <serial bus, SMBus> at device 31.3 (no driver attached) acpi_tz0: <Thermal Zone> on acpi0 acpi_tz1: <Thermal Zone> 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] psm0: <PS/2 Mouse> irq 12 on atkbdc0 psm0: [GIANT-LOCKED] psm0: model Generic PS/2 mouse, device ID 0 sio0: configured irq 3 not in bitmap of probed irqs 0 sio0: port may not be enabled battery0: <ACPI Control Method Battery> on acpi0 acpi_acad0: <AC Adapter> on acpi0 sio0: configured irq 3 not in bitmap of probed irqs 0 sio0: port may not be enabled pmtimer0 on isa0 orm0: <ISA Option ROMs> at iomem 0xce800-0xcf7ff,0xcf800-0xd07ff,0xdc000-0xdffff on isa0 sc0: <System console> at flags 0x100 on isa0 sc0: VGA <16 virtual consoles, flags=0x300> sio0: configured irq 4 not in bitmap of probed irqs 0 sio0: port may not be enabled sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0 sio0: type 8250 or not responding sio1: configured irq 3 not in bitmap of probed irqs 0 sio1: port may not be enabled vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0 ugen0: STMicroelectronics Biometric Coprocessor, rev 1.00/0.01, addr 2 Timecounters tick every 1.000 msec ad4: 76319MB <FUJITSU MHV2080BH 00840028> at ata2-master SATA150 pcm0: <audio> at device 0:1 (no driver attached) pcm0: <modem> at device 1:2 (no driver attached) pcm0: Cap 441 sf e007f st 1 pcm0: Set 0:3 10 SMP: AP CPU #1 Launched! Trying to mount root from ufs:/dev/ad4s1a
The setup to PXE boot NetBSD is almost identical, but with different installation files, of course. You need a netbsd-INSTALL kernel (I used netbsd-INSTALL-LAPTOP) and pxeboot_ia32.bin from /usr/mdec/pxeboot_ia32.bin.
You can find these (pxeboot_ia32.bin in base.tgz) on a NetBSD FTP mirror.
From base.tgz I copied usr/mdec/pxeboot_ia32.bin to /tftpboot-netbsd. I also gunzipped netbsd-INSTALL-LAPTOP in /tftpboot-netbsd.
I re-edited inetd.conf:
tftp dgram udp wait root /usr/libexec/tftpd tftpd -s /tftpboot-netbsd
and restarted it.
I added this to dhcpd.conf:
host x60-netbsd { hardware ethernet 00:16:d3:21:5a:5a; fixed-address 10.0.0.21; option root-path "/tftpboot-netbsd"; filename "pxeboot_ia32.bin"; next-server 10.0.0.2; }
and commented out the other entries mentioning the X60.
Then I started the X60 and the NetBSD installation started. However, when NetBSD probed the hardware, it couldn't find the hard disk and I came no further. Perhaps I should have used the ordinary netbsd-INSTALL kernel?
I followed the instructions in http://wiki.koeln.ccc.de/index.php/Ubuntu_PXE_Install shortly reproduced here.
I fetched the netboot files here:
http://archive.ubuntu.com/ubuntu/dists/dapper/main/installer-i386/current/images/netboot/
and copied them to /tftpboot-linux, then:
cd /tftpboot-linux tar zxf pxeboot.tar.gz
I patched the /tftpboot-linux/pxelinux.cfg/default file with this:
--- default.org 2004-10-31 15:32:32.000000000 +0100 +++ default 2004-10-31 00:14:52.000000000 +0200 @@ -13,17 +13,11 @@ F0 debian-installer/boot-screens/f10.txt label linux - kernel debian-installer/linux - append vga=normal initrd=debian-installer/initrd.gz ramdisk_size=11057 root=/dev/rd/0 devfs=mount,dall rw -- + kernel vmlinuz + append vga=normal initrd=initrd.gz ramdisk_size=11057 root=/dev/rd/0 devfs=mount,dall rw -- label expert - kernel debian-installer/linux - append DEBCONF_PRIORITY=low vga=normal initrd=debian-installer/initrd.gz ramdisk_size=11057 root=/dev/rd/0 devfs=mount,dall rw -- -label custom - kernel debian-installer/linux - append ubuntu/install-type=custom vga=normal initrd=debian-installer/initrd.gz ramdisk_size=11057 root=/dev/rd/0 devfs=mount,dall rw -- -label custom-expert - kernel debian-installer/linux - append ubuntu/install-type=custom DEBCONF_PRIORITY=low vga=normal initrd=debian-installer/initrd.gz ramdisk_size=11057 root=/dev/rd/0 devfs=mount,dall rw -- + kernel vmlinuz + append DEBCONF_PRIORITY=low vga=normal initrd=initrd.gz ramdisk_size=11057 root=/dev/rd/0 devfs=mount,dall rw -- prompt 1 timeout 0
Save that in a file called, for instance, file.patch, then:
# cd /tftpboot-linux/pxelinux.cfg # patch default <file.patch
Then I made a link from the IP of the X60 in hex to the default file:
# ln -s default 0A000014
and added this entry to dhcpd.conf:
host pxeinstall { hardware ethernet 00:16:d3:21:5a:5a; fixed-address 10.0.0.20; filename "pxelinux.0"; }
and commented out the other entries about the X60 and restarted the dhcpd.
I also changed the inetd.conf so the tftpd looked in /tftpboot-linux instead and restarted inetd.
Then start the X60. It should come up with the Ubuntu boot loader.
The installtion proceeded fine and started installing packages when it suddenly stopped, with only two cursors visible. I have no idea what happened. I only tried once.