I recently installed FreeBSD 7.2 on my Lenovo Thinkpad X60s. Since the X60s doesn't have any CD-ROM and I don't have any external storage media other than USB sticks, I used PXE booting to install FreeBSD over the network.
I used my setup from FreeBSD on the Lenovo Thinkpad X60s and it worked flawlessly. To recapitulate:
# mdconfig -a -t vnode -f 7.2-RELEASE-i386-bootonly.iso -u 0 # mount -t cd9660 /dev/md0 /mnt # mkdir -p /freebsd # cp -Rp /mnt/boot /freebsd # umount /mnt # mdconfig -d -u 0
vfs.root.mountfrom="ufs:/dev/md0c"
which means that the later booting process will use a ramdisk as root instead of using NFS.
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";
}
where 10.0.0.2 is the server running the TFTP server.
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /freebsd
# inetd -a 10.0.0.2
/freebsd -ro -network 10.0.0.0 -mask 255.255.255.0
# 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.
Nota bene: If you're running the NFS server over TCP only (the -t flag), this won't work with PXE.
| HW | Out of the box | With patches |
|---|---|---|
| Intel Core Duo SMP | Yes | |
| Intel 82801G audio | Yes | |
| Intel 945 graphics | Yes | |
| Firewire | Yes | |
| Bluetooth | -- | -- |
| Modem | No | No |
| USB | Yes | |
| SATA | Yes | |
| SD Card Reader | No | No |
| Intel 3945ABG WLAN | Yes | |
| Gigabit Ethernet | Yes | |
| Suspend/resume | No | No |
| Fingerprint reader | No* | No |
* The device is found and is seen as an ugen(4), so it is reachable for experiments.
I haven't tested Bluetooth at all.
See below for dmesg.
The latency problems I reported with the Intel PRO/1000 em(4) in 6.1 and 6.2 are gone. No need to patch anything. Network works fine.
The Intel 3945ABG wireless LAN now works with wpi(4). It is, however, marked as experimental. Add this to /boot/loader.conf:
legal.intel_wpi.license_ack=1 if_wpi_load="YES"
but read /usr/share/doc/legal/intel_wpi/LICENSE before adding anything.
Make sure the hardware radio button on the front of the laptop is in the "on" position.
Reboot to load the driver or do a
# kldload if_wpi
The handrest gets very hot when the wpi is running. I don't know if anything can be done about this.
Graphics acceleration for the Intel 945GM is now supported by the Xorg server.
I initially tried to use an xorg.conf from Xorg -configure but
didn't get anything at all on the monitor. Instead, I used the
built-in miniconfiguration and expanded that to get it working.
Nota bene: The new Xorg in 7.2 works with HAL and dbus to become aware of hardware changes. This means that on a pristine FreeBSD system, you won't get any mouse or keyboard in X! To get around this, either start HAL and dbus, or add this to your xorg.conf:
Section "ServerFlags"
Option "AllowEmptyInput" "false"
EndSection
I don't know why this is "true" by default. I was very surprised. See the man page for xorg.conf(5) for the AllowEmptyInput keyword:
Option "AllowEmptyInput" "boolean"
If enabled, don't add the standard keyboard and mouse drivers, if there are no input devices in the config file. Enabled by default if AutoAddDevices and AutoEnableDevices is enabled, otherwise disabled. If AllowEmptyInput is on, devices using the kbd, mouse or vmmouse driver are ignored.
Then define your mouse and keyboard manually. Here's my keyboard and mouse configuration:
Section "InputDevice" Identifier "Keyboard0" Driver "kbd" EndSection Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/sysmouse" Option "ZAxisMapping" "4 5 6 7" EndSection
And, for completeness, the rest of my minimal xorg.conf:
Section "ServerLayout" Identifier "MC config" InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" Screen "Builtin Default intel Screen 0" EndSection Section "Device" Identifier "Builtin Default intel Device 0" Driver "intel" EndSection Section "Screen" Identifier "Builtin Default intel Screen 0" Device "Builtin Default intel Device 0" EndSection
Sound (Intel HDAC) now supported out of the box with snd_hda(4) for both output and input. Add:
snd_hda_load="YES"
in /boot/loader.conf and reboot to load driver or do a
# kldload snd_hda
Use mixer(8) (or install audio/aumix or audio/xmixer) to set volume. Use
/etc/rc.d/mixer stop
to save state for all mixers.
The laptop suspends, but reboots on resume. As before, powerd(8) works fine.
The machine gets rather hot, about 58 degrees around the CPU, after
running a while. To see the temperature, you might want to use the
kernel modules coretemp and acpi_ibm. Add to /boot/loader.conf:
coretemp_load="YES" acpi_ibm_load="YES"
and reboot, or do a
# kldload coretemp # kldload acpi_ibm
Now you can grep the sysctls for "tempe":
# sysctl -a|grep tempe hw.acpi.thermal.tz0.temperature: 53.0C hw.acpi.thermal.tz1.temperature: 54.0C dev.cpu.0.temperature: 54 dev.cpu.1.temperature: 55
Copyright (c) 1992-2009 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.2-RELEASE #0: Fri May 1 08:49:13 UTC 2009
root@walker.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC
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,xTPR,PDCM>
AMD Features=0x100000<NX>
Cores per package: 2
real memory = 527302656 (502 MB)
avail memory = 501964800 (478 MB)
ACPI APIC Table: <LENOVO TP-7B >
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
cpu0 (BSP): APIC ID: 0
cpu1 (AP): APIC ID: 1
ACPI Warning (tbfadt-0505): Optional field "Gpe1Block" has zero address or length: 0 102C/0 [20070320]
ioapic0: Changing APIC ID to 1
ioapic0 <Version 2.0> irqs 0-23 on motherboard
kbd1 at kbdmux0
acpi0: <LENOVO TP-7B> on motherboard
acpi0: [ITHREAD]
acpi_ec0: <Embedded Controller: GPE 0x1c, ECDT> port 0x62,0x66 on acpi0
acpi0: Power Button (fixed)
acpi0: reservation of 0, a0000 (3) failed
acpi0: reservation of 100000, 1ff00000 (3) failed
Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x1008-0x100b on acpi0
acpi_hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
Timecounter "HPET" frequency 14318180 Hz quality 900
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
vgapci0: <VGA-compatible display> port 0x1800-0x1807 mem 0xee100000-0xee17ffff,0xd0000000-0xdfffffff,0xee200000-0xee23ffff irq 16 at device 2.0 on pci0
agp0: <Intel 82945GM (945GM GMCH) SVGA controller> on vgapci0
agp0: detected 7932k stolen memory
agp0: aperture size is 256M
vgapci1: <VGA-compatible display> mem 0xee180000-0xee1fffff at device 2.1 on pci0
hdac0: <Intel 82801G High Definition Audio Controller> mem 0xee240000-0xee243fff irq 17 at device 27.0 on pci0
hdac0: HDA Driver Revision: 20090329_0131
hdac0: [ITHREAD]
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 6.9.6> port 0x2000-0x201f mem 0xee000000-0xee01ffff irq 16 at device 0.0 on pci2
em0: Using MSI interrupt
em0: [FILTER]
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]
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 0x1840-0x185f irq 17 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 0x1860-0x187f 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 0x1880-0x189f irq 19 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 0xee444000-0xee4443ff irq 19 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
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
cbb0: [ITHREAD]
fwohci0: <Ricoh R5C552> mem 0xe4301000-0xe43017ff irq 17 at device 0.1 on pci21
fwohci0: [FILTER]
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
fwip0: <IP over FireWire> on firewire0
fwip0: Firewire address: 00:0a:e4:06:00:16:20:1b @ 0xfffe00000000, S400, maxrec 2048
sbp0: <SBP-2/SCSI over FireWire> on firewire0
dcons_crom0: <dcons configuration ROM> on firewire0
dcons_crom0: bus_addr 0x1184000
fwohci0: Initiate bus reset
fwohci0: BUS reset
fwohci0: node_id=0xc800ffc0, gen=1, CYCLEMASTER mode
pci21: <base peripheral, SD host controller> 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
ata0: [ITHREAD]
atapci1: <Intel AHCI controller> port 0x18d0-0x18d7,0x18c4-0x18c7,0x18c8-0x18cf,0x18c0-0x18c3,0x18b0-0x18bf mem 0xee444400-0xee4447ff irq 16 at device 31.2 on pci0
atapci1: [ITHREAD]
atapci1: AHCI Version 01.10 controller with 4 ports detected
ata2: <ATA channel 0> on atapci1
ata2: [ITHREAD]
ata3: <ATA channel 1> on atapci1
ata3: port not implemented
ata3: [ITHREAD]
ata4: <ATA channel 2> on atapci1
ata4: port not implemented
ata4: [ITHREAD]
ata5: <ATA channel 3> on atapci1
ata5: port not implemented
ata5: [ITHREAD]
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]
atkbd0: [ITHREAD]
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: [ITHREAD]
psm0: model Generic PS/2 mouse, device ID 0
battery0: <ACPI Control Method Battery> on acpi0
acpi_acad0: <AC Adapter> on acpi0
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
p4tcc1: <CPU Frequency Thermal Control> on cpu1
pmtimer0 on isa0
orm0: <ISA Option ROMs> at iomem 0xce800-0xcf7ff,0xcf800-0xd07ff,0xdc000-0xdffff,0xe0000-0xeffff pnpid ORM0000 on isa0
ppc0: parallel port not found.
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: 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
sio0: [FILTER]
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, class 0/0, rev 1.00/0.01, addr 2> on uhub3
Timecounters tick every 1.000 msec
firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me)
firewire0: bus manager 0 (me)
ad4: 76319MB <FUJITSU MHV2080BH 00840028> at ata2-master SATA150
hdac0: HDA Codec #0: Analog Devices AD1981HD
hdac0: HDA Codec #1: Conexant (Unknown)
pcm0: <HDA Analog Devices AD1981HD PCM #0 Analog> at cad 0 nid 1 on hdac0
pcm1: <HDA Analog Devices AD1981HD PCM #1 Digital> at cad 0 nid 1 on hdac0
GEOM_LABEL: Label for provider ad4s1a is ufsid/4a0d44619adf9d9d.
GEOM_LABEL: Label for provider ad4s1d is ufsid/4a0d44651c11690a.
GEOM_LABEL: Label for provider ad4s1e is ufsid/4a0d4461e29548a3.
GEOM_LABEL: Label for provider ad4s1f is ufsid/4a0d446154f21a39.
SMP: AP CPU #1 Launched!
Trying to mount root from ufs:/dev/ad4s1a
GEOM_LABEL: Label ufsid/4a0d44619adf9d9d removed.
GEOM_LABEL: Label for provider ad4s1a is ufsid/4a0d44619adf9d9d.
GEOM_LABEL: Label ufsid/4a0d4461e29548a3 removed.
GEOM_LABEL: Label for provider ad4s1e is ufsid/4a0d4461e29548a3.
GEOM_LABEL: Label ufsid/4a0d446154f21a39 removed.
GEOM_LABEL: Label for provider ad4s1f is ufsid/4a0d446154f21a39.
GEOM_LABEL: Label ufsid/4a0d44651c11690a removed.
GEOM_LABEL: Label for provider ad4s1d is ufsid/4a0d44651c11690a.
GEOM_LABEL: Label ufsid/4a0d44619adf9d9d removed.
GEOM_LABEL: Label ufsid/4a0d4461e29548a3 removed.
GEOM_LABEL: Label ufsid/4a0d446154f21a39 removed.
GEOM_LABEL: Label ufsid/4a0d44651c11690a removed.