# FreeBSD 8.1 Compiling a Custom Kernel and Folding@home



## Ralph_Ellis (Sep 29, 2010)

Compiling a custom kernel in FreeBSD has many advantages. The one the stands out the most for me in Folding@home is that the performance on my computer rose by 20% after I compiled a custom kernel and removed support for most of the devices that I do not have on my computer such as wireless devices and legacy isa devices. The gains here come from more system resources being available to the task at hand, lower memory use and your system being optimized for your hardware and processor.
All folding@home on FreeBSD is either done via linux emulation (brandelf), virutualisation such as VirtualBox or Wine. All of these benefit from stronger floating point performance.

The instructions that I will provide only apply to PC-BSD 8 or FreeBSD 8 or higher.
The first step will be to update your source tree. You will need to create a file called supfile. To update to the latest kernel and source in 8.1, create the file with these contents.


```
*default release=cvs tag=RELENG_8
*default host=cvsup11.FreeBSD.org
*default prefix=/usr
*default base=/var/db
*default release=cvs delete use-rel-suffix compress
src-all
ports-all
doc-all
```

This file would update you to FreeBSD 9 current.


```
*default tag=.
*default host=cvsup11.FreeBSD.org
*default prefix=/usr
*default base=/var/db
*default release=cvs delete use-rel-suffix compress
src-all
ports-all
doc-all
```

Open a terminal, login as root

```
su
your password
```
Go to the directory where you saved supfile and type either
`csup supfile`
or
`cvsup -g -L 2 supfile`

csup should be installed automatically in PC-BSD 8 or 8.1, You may have to install cvsup but if you choose to use that but there is no reason to prefer cvsup to csup.
Get a coffee. The download will take a while.

You should be using ZFS. If you are not, beat your head slowly against a wall. ZFS is miles ahead of UFS in terms of reliability, flexibility and recovery.
To back up your full system do a series of ZFS snapshots. To find the ZFS pools on your system type in terminal

```
su
your password
zfs list
```
You will see a list of all the pools in your system. My list is:


```
NAME USED AVAIL REFER MOUNTPOINT
tank0 1.92G 22.1G 1.30G /mnt
tank1 4.39G 10.5G 18K none
tank1/var 4.37G 10.5G 2.62G /var
tank2 84.5G 142G 18K none
tank2/usr 84.4G 142G 65.2G /usr
```

I would type in a terminal

```
zfs snapshot tank0@backup1
zfs snaphshot tank1@backup1
zfs snapshot tank1/var@backup1
zfs snapshot tank2@backup1
zfs snapshot tank2/usr@backup1
```
If you need to see a list of the snapshots that you have created, type
`zfs list -t snapshot`
to restore an earlier snapshot of tank0 for example, type
`zfs rollback tank0@backup1`
for example

By now you have your coffee finished and you are ready to start serious work.

You will need to edit your make.conf file. Building your system and kernel is often touchy and I will recommend only a plain setup to get through your compilation.
Open a terminal and type,

```
su
your password
nano /etc/make.conf
```
It may only contain a few lines. For the first step I want you to put a
#
in front of all lines that do not already have a # in front of them. Press Control x to save the file. Press Y. When prompted for the name make.conf, press Enter.


----------



## Ralph_Ellis (Sep 29, 2010)

*Part 2*

You now need to edit either
/usr/src/sys/i386/conf/GENERIC
or if you have an amd64 machine
/usr/src/sys/amd64/conf/GENERIC

You will put
#
in front of all the equipment that you want to not include in your build. Do not delete any disk drive controllers. If you delete your own disk drive controller, you cannot boot up. This is not a recoverable error.

I will show you the examples of these files that I built to eliminate
1) Wireless hardware
2) ISA devices. Unless you bought your computer at a garage sale for $1.50, it does not contain ISA devices.
3) All the the ethernet ports that are not in your system.
4) Floppy Drives
5) PCMCIA laptop devices
6) AGP video hardware
7) USB wireless and USB ethernet nics


Keep in mind that this setup if for MY HARDWARE. You will have to do your own research to find out what hardware you have and what you want to eliminate or keep.
PC-BSD Forums has some nice threads about how to find out what hardware you have.
Also see:

http://forums.freebsd.org/showthread.php?t=5327


----------



## Ralph_Ellis (Sep 29, 2010)

*Part 3*

This is my file for AMD64.
There are a couple of key notes. Always comment out:

```
#options ATA_STATIC_ID # Static device numbering
```
because it will screw up PC-BSD if you do not.

Do not remove drivers for hard drives. If you mess up on that area, you will be very sorry.
Always include the line

```
device miibus # MII bus support
```
under PCI ethernet nics. It is required by many other drivers.
My ethernet connections are rl0 and msk0. You will notice that these lines are not commented out in my example.
If you do have an older machine with an agp video card instead of pci, do not comment out

```
device agp # support several AGP chipsets
```
Most modern computers do not have agp video support.


One other note, every time you do an update with the csup supfile or cvsup supfile, it will overwrite the file
/usr/src/sys/amd64/conf/GENERIC
and
/usr/src/sys/i386/conf/GENERIC
save your working copy as
/usr/src/sys/amd64/conf/GENERIC.yourname
so you can go back to it for editing later.

If you are editing the i386 version of this file, you can comment out certain lines like

```
#cpu I486_CPU

#cpu I586_CPU
```
unless you bought your computer a garage sale for less than $1.50

When in doubt, exercise caution.






```
#
# GENERIC -- Generic kernel configuration file for FreeBSD/amd64
#
# For more information on this file, please read the config(5) manual page,
# and/or the handbook section on Kernel Configuration Files:
#
# [url]http://www.FreeBSD.org/doc/en_US.ISO...ig-config.html[/url]
#
# The handbook is also available locally in /usr/share/doc/handbook
# if you've installed the doc distribution, otherwise always see the
# FreeBSD World Wide Web server ([url]http://www.FreeBSD.org/[/url]) for the
# latest information.
#
# An exhaustive list of options and more detailed explanations of the
# device lines is also present in the ../../conf/NOTES and NOTES files.
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.549 2010/09/24 09:04:16 davidxu Exp $

cpu HAMMER
ident GENERIC

makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols

options SCHED_ULE # ULE scheduler
options PREEMPTION # Enable kernel thread preemption
options INET # InterNETworking
options INET6 # IPv6 communications protocols
options SCTP # Stream Control Transmission Protocol
options FFS # Berkeley Fast Filesystem
options SOFTUPDATES # Enable FFS soft updates support
options UFS_ACL # Support for access control lists
options UFS_DIRHASH # Improve performance on big directories
options UFS_GJOURNAL # Enable gjournal-based UFS journaling
options MD_ROOT # MD is a potential root device
options NFSCLIENT # Network Filesystem Client
options NFSSERVER # Network Filesystem Server
options NFSLOCKD # Network Lock Manager
options NFS_ROOT # NFS usable as /, requires NFSCLIENT
options MSDOSFS # MSDOS Filesystem
options CD9660 # ISO 9660 Filesystem
options PROCFS # Process filesystem (requires PSEUDOFS)
options PSEUDOFS # Pseudo-filesystem framework
options GEOM_PART_GPT # GUID Partition Tables.
options GEOM_LABEL # Provides labelization
options COMPAT_FREEBSD32 # Compatible with i386 binaries
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
options COMPAT_FREEBSD6 # Compatible with FreeBSD6
options COMPAT_FREEBSD7 # Compatible with FreeBSD7
options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
options KTRACE # ktrace(1) support
options STACK # stack(9) support
options SYSVSHM # SYSV-style shared memory
options SYSVMSG # SYSV-style message queues
options SYSVSEM # SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed.
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4)
options AUDIT # Security event auditing
options MAC # TrustedBSD MAC Framework
options FLOWTABLE # per-cpu routing cache
#options KDTRACE_FRAME # Ensure frames are compiled in
#options KDTRACE_HOOKS # Kernel DTrace hooks
options INCLUDE_CONFIG_FILE # Include this file in kernel

# Debugging for use in -current
options KDB # Enable kernel debugger support.
options DDB # Support DDB.
options GDB # Support remote GDB.
options DEADLKRES # Enable the deadlock resolver
options INVARIANTS # Enable calls of extra sanity checking
options INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS
options WITNESS # Enable checks to detect deadlocks and cycles
options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed
options MALLOC_DEBUG_MAXZONES=8 # Separate malloc(9) zones

# Make an SMP-capable kernel by default
options SMP # Symmetric MultiProcessor Kernel

# CPU frequency control
device cpufreq

# Bus support.
device acpi
device pci

# Floppy drives
#device fdc

# ATA and ATAPI devices
device ata
device atadisk # ATA disk drives
device ataraid # ATA RAID drives
device atapicd # ATAPI CDROM drives
device atapifd # ATAPI floppy drives
device atapist # ATAPI tape drives
#options ATA_STATIC_ID # Static device numbering

# SCSI Controllers
device ahc # AHA2940 and onboard AIC7xxx devices
options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~128k to driver.
device ahd # AHA39320/29320 and onboard AIC79xx devices
options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~215k to driver.
device amd # AMD 53C974 (Tekram DC-390(T))
device hptiop # Highpoint RocketRaid 3xxx series
device isp # Qlogic family
#device ispfw # Firmware for QLogic HBAs- normally a module
device mpt # LSI-Logic MPT-Fusion
device mps # LSI-Logic MPT-Fusion 2
#device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (newer chipsets + those of `ncr')
device trm # Tekram DC395U/UW/F DC315U adapters

device adv # Advansys SCSI adapters
device adw # Advansys wide SCSI adapters
device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
device bt # Buslogic/Mylex MultiMaster SCSI adapters

# SCSI peripherals
device scbus # SCSI bus (required for SCSI)
device ch # SCSI media changers
device da # Direct Access (disks)
device sa # Sequential Access (tape etc)
device cd # CD
device pass # Passthrough device (direct SCSI access)
device ses # SCSI Environmental Services (and SAF-TE)

# RAID controllers interfaced to the SCSI subsystem
device amr # AMI MegaRAID
device arcmsr # Areca SATA II RAID
#XXX it is not 64-bit clean, -scottl
#device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID
device ciss # Compaq Smart RAID 5*
device dpt # DPT Smartcache III, IV - See NOTES for options
device hptmv # Highpoint RocketRAID 182x
device hptrr # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx
device iir # Intel Integrated RAID
device ips # IBM (Adaptec) ServeRAID
device mly # Mylex AcceleRAID/eXtremeRAID
device twa # 3ware 9000 series PATA/SATA RAID

# RAID controllers
device aac # Adaptec FSA RAID
device aacp # SCSI passthrough for aac (requires CAM)
device ida # Compaq Smart RAID
device mfi # LSI MegaRAID SAS
device mlx # Mylex DAC960 family
#XXX pointer/int warnings
#device pst # Promise Supertrak SX6000
device twe # 3ware ATA RAID

# atkbdc0 controls both the keyboard and the PS/2 mouse
device atkbdc # AT keyboard controller
device atkbd # AT keyboard
device psm # PS/2 mouse

device kbdmux # keyboard multiplexer

device vga # VGA video card driver

device splash # Splash screen and screen saver support

# syscons is the default console driver, resembling an SCO console
device sc

#device agp # support several AGP chipsets

# PCCARD (PCMCIA) support
# PCMCIA and cardbus bridge support
#device cbb # cardbus (yenta) bridge
#device pccard # PC Card (16-bit) bus
#device cardbus # CardBus (32-bit) bus

# Serial (COM) ports
device uart # Generic UART driver

# Parallel port
device ppc
device ppbus # Parallel port bus (required)
device lpt # Printer
device plip # TCP/IP over parallel
device ppi # Parallel port interface device
#device vpo # Requires scbus and da
```


----------



## Ralph_Ellis (Sep 29, 2010)

*Part 4*


```
# If you've got a "dumb" serial or parallel PCI card that is
# supported by the puc(4) glue driver, uncomment the following
# line to enable it (connects to sio, uart and/or ppc drivers):
#device puc

# PCI Ethernet NICs.
device de # DEC/Intel DC21x4x (``Tulip'')
device em # Intel PRO/1000 Gigabit Ethernet Family
device igb # Intel PRO/1000 PCIE Server Gigabit Family
device ixgbe # Intel PRO/10GbE PCIE Ethernet Family
device le # AMD Am7900 LANCE and Am79C9xx PCnet
device ti # Alteon Networks Tigon I/II gigabit Ethernet
device txp # 3Com 3cR990 (``Typhoon'')
device vx # 3Com 3c590, 3c595 (``Vortex'')

# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device miibus # MII bus support
#device ae # Attansic/Atheros L2 FastEthernet
#device age # Attansic/Atheros L1 Gigabit Ethernet
#device alc # Atheros AR8131/AR8132 Ethernet
#device ale # Atheros AR8121/AR8113/AR8114 Ethernet
#device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet
#device bfe # Broadcom BCM440x 10/100 Ethernet
#device bge # Broadcom BCM570xx Gigabit Ethernet
#device dc # DEC/Intel 21143 and various workalikes
#device et # Agere ET1310 10/100/Gigabit Ethernet
#device fxp # Intel EtherExpress PRO/100B (82557, 82558)
#device jme # JMicron JMC250 Gigabit/JMC260 Fast Ethernet
#device lge # Level 1 LXT1001 gigabit Ethernet
device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet
#device nfe # nVidia nForce MCP on-board Ethernet
#device nge # NatSemi DP83820 gigabit Ethernet
#device nve # nVidia nForce MCP on-board Ethernet Networking
#device pcn # AMD Am79C97x PCI 10/100 (precedence over 'le')
#device re # RealTek 8139C+/8169/8169S/8110S
device rl # RealTek 8129/8139
#device sf # Adaptec AIC-6915 (``Starfire'')
#device sge # Silicon Integrated Systems SiS190/191
#device sis # Silicon Integrated Systems SiS 900/SiS 7016
#device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
#device ste # Sundance ST201 (D-Link DFE-550TX)
#device stge # Sundance/Tamarack TC9021 gigabit Ethernet
#device tl # Texas Instruments ThunderLAN
#device tx # SMC EtherPower II (83c170 ``EPIC'')
#device vge # VIA VT612x gigabit Ethernet
#device vr # VIA Rhine, Rhine II
#device wb # Winbond W89C840F
#device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')

# ISA Ethernet NICs. pccard NICs included.
#device cs # Crystal Semiconductor CS89x0 NIC
# 'device ed' requires 'device miibus'
#device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
#device ex # Intel EtherExpress Pro/10 and Pro/10+
#device ep # Etherlink III based cards
#device fe # Fujitsu MB8696x based cards
#device sn # SMC's 9000 series of Ethernet chips
#device xe # Xircom pccard Ethernet

# Wireless NIC cards
#device wlan # 802.11 support
#options IEEE80211_DEBUG # enable debug msgs
#options IEEE80211_AMPDU_AGE # age frames in AMPDU reorder q's
#options IEEE80211_SUPPORT_MESH # enable 802.11s draft support
#device wlan_wep # 802.11 WEP support
#device wlan_ccmp # 802.11 CCMP support
#device wlan_tkip # 802.11 TKIP support
#device wlan_amrr # AMRR transmit rate control algorithm
#device an # Aironet 4500/4800 802.11 wireless NICs.
#device ath # Atheros pci/cardbus NIC's
#device ath_hal # pci/cardbus chip support
#options AH_SUPPORT_AR5416 # enable AR5416 tx/rx descriptors
#device ath_rate_sample # SampleRate tx rate control for ath
#device ral # Ralink Technology RT2500 wireless NICs.
#device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs.

# Pseudo devices.
device loop # Network loopback
device random # Entropy device
device ether # Ethernet support
device vlan # 802.1Q VLAN support
device tun # Packet tunnel.
device pty # BSD-style compatibility pseudo ttys
device md # Memory "disks"
device gif # IPv6 and IPv4 tunneling
device faith # IPv6-to-IPv4 relaying (translation)
device firmware # firmware assist module

# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.
device bpf # Berkeley packet filter

# USB support
options USB_DEBUG # enable debug msgs
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
device ehci # EHCI PCI->USB interface (USB 2.0)
device usb # USB Bus (required)
#device udbp # USB Double Bulk Pipe devices
device uhid # "Human Interface Devices"
device ukbd # Keyboard
device ulpt # Printer
device umass # Disks/Mass storage - Requires scbus and da
device ums # Mouse
device urio # Diamond Rio 500 MP3 player
# USB Serial devices
device u3g # USB-based 3G modems (Option, Huawei, Sierra)
device uark # Technologies ARK3116 based serial adapters
device ubsa # Belkin F5U103 and compatible serial adapters
device uftdi # For FTDI usb serial adapters
device uipaq # Some WinCE based devices
device uplcom # Prolific PL-2303 serial adapters
device uslcom # SI Labs CP2101/CP2102 serial adapters
device uvisor # Visor and Palm devices
device uvscom # USB serial support for DDI pocket's PHS
# USB Ethernet, requires miibus
#device aue # ADMtek USB Ethernet
#device axe # ASIX Electronics USB Ethernet
#device cdce # Generic USB over Ethernet
#device cue # CATC USB Ethernet
#device kue # Kawasaki LSI USB Ethernet
#device rue # RealTek RTL8150 USB Ethernet
#device udav # Davicom DM9601E USB
# USB Wireless
#device rum # Ralink Technology RT2501USB wireless NICs
#device uath # Atheros AR5523 wireless NICs
#device ural # Ralink Technology RT2500USB wireless NICs
#device zyd # ZyDAS zb1211/zb1211b wireless NICs

# FireWire support
device firewire # FireWire bus code
device sbp # SCSI over FireWire (Requires scbus and da)
device fwe # Ethernet over FireWire (non-standard!)
device fwip # IP over FireWire (RFC 2734,3146)
device dcons # Dumb console driver
device dcons_crom # Configuration ROM for dcons
```


Other key notes for Nvidia users.
If you are using a proprietary video driver from Nvidia or the open source nouveau driver, they will need to be recompiled if you are going to continue to run 8.1. They will not run at all under FreeBSD 9 current. If you need the proprietary driver, do not move to FreeBSD 9 current for now.
If you are building 8.1 and want to boot up in a graphics mode in a terminal

```
su
your password
nano /etc/X11/xorg.conf
```
edit the file section for device so that it is â€œnvâ€ instead of â€œnvidiaâ€. You can also use â€œvesaâ€ if you really want to be safe.
Control X and answer Y and Enter to save.
You will also have to edit the /boot/loader.conf file to comment out the line

```
#nvidia_load="YES"
```
or else you will get an error message when you rebuild the Nvidia driver.
You will now boot up in a basic graphics mode so you can start to edit and reinstall the Nvidia drivers when you reboot.

Now you are ready to buildworld. Close other running programs and in a terminal

```
su
your password
cd /usr/src
chflags -R noschg /usr/obj/usr
rm -rf /usr/obj/usr
make cleandir
make cleandir
cp -irv /boot/kernel /boot/kernel.good
```

This last step is to back up your kernel so you can recover it if something goes wrong.
Type in the terminal

`make buildworld`

Get a really large cup of coffee and find a good movie on television or actually spend time with your family.

Buildworld should work. After it finishes, open the make.conf file with
`nano /etc/make.conf`
My make .conf at this point is


```
WITHOUT_MODULES = isa ipw ipwfw iwi iwifw wpi wpifw iwn iwnfw agp cbb pccard cardbus wlan wlan_acl wlan_amrr wlan_ccmp wlan_rssadapt wlan_tkip 
wlan_wep wlan_xauth
```

This is all on one line. Do not wrap it around on two lines or you have an error. What I have told the kernel building process to do here is ignore modules for ISA, all wireless devices, AGP video, PCMCIA devices and all wireless lan devices.
Because I did this, I also had to edit the /boot/loader.conf file so that modules for wireless devices were not loaded.

Now finally, in terminal

`make buildkernel`

You do not need as large a cup of coffee this time and you only need to watch a sitcom.
When it finishes


```
make installkernel
make installworld
reboot
```
Traditionally FeeBSD, suggests dropping to single user mode but if you are running a desktop system and there are not programs running in the background, you do not need to.

Traditionally, FreeBSD suggest that you run the mergemaster command to alter configuration files. This is needed if you are moving from let's say 6.1 to 7.3 but for moving to 8.1 to an 8.1 custom kernel or 9 current, from PC-BSD 8.1, it is usually a waste of time and can screw you system up if you make the wrong choices. There are many useful configuration files in PC-BSD that will be messed up if you use mergemaster. My advice is to stay away from it.

When you reboot, you will be running the new kernel and the new world.

If you run VirtualBox or any other port that depends on a kernel module, you will have to rebuild it.

Moving to FreeBSD 9 current will get rid of the nice PC-BSD splash screen that allows you to change your video driver. You still should be able to keep that screen if you are staying with 8.1.
The PBI files will continue to work in 8.1 or 9 in KDE4 if you do not use mergemaster.
You will gradually want to rebuild any key ports that you have installed but most will work like before.


----------



## Ralph_Ellis (Sep 29, 2010)

*Part 5*

What happens if my system will not boot properly or my programs do not work properly?
At the the boot menu, choose

```
â€œEscape to loader promptâ€
```
Type

```
unload kernel
boot /boot/kernel.old/kernel
```
or

```
boot /boot/kernel.good/kernel
```
if you used that name to save your old kernel.

If you boot up and you do not like the results, you can move bad to your old setup easily.
You should be using ZFS. If you do not, continue beating you head against a wall as in the earlier instructions.
Type as root in a terminal

```
su
your password
zfs list -t snapshot
```
to show a list of your snaphots
then

```
zfs rollback tank0@ whatever the name of your snapshot is
```

The wonderful thing about zfs is that after you reboot, you will be right back to your old installation without changes.

What are the positive changes that you will see with your new kernel and world?
Your memory use will be lower. Programs will load faster. Floating point performance in my case rose 20% in folding@home. Your system will now just support the hardware that you have and will not keep checking the system for new devices that you do not have. Overall system performance will increase.

Have fun.
Ralph Ellis


----------



## Pjoter (Oct 4, 2010)

Hello,

I just got an error: I am unable to mount the ZFS gain within new kernel. Also I am not able to mount the ZFS again even if I do that at the bootloader prompt:


```
unload kernel
load /boot/kernel.old/kernel
load /boot/kernel.old/opensolaris.ko
load /boot/kernel.old/zfs.ko
```


```
set vfs.root.mountfrom="zfs:tank0"
```

Error: says that zfs cannot be mounted and reverts to mountroot command.

What is wrong? Did installkernel mess up something?

pjoter.


----------



## Ralph_Ellis (Oct 5, 2010)

I have to start with the obvious question.
Is 


```
zfs_load="YES"
```

in your /boot/loader.conf  file?


----------



## Pjoter (Oct 5, 2010)

Hello,

sure ! 
	
	



```
/boot/loader.conf
```
 was untouched. I did 
	
	



```
more /boot/loader.conf
```
 from the bootloader command line and I saw that this line was valid.

Also 
	
	



```
vfs.root.mountfrom=zfs:tank0
```
 was there. I did set the above variables, loaded all that was needed and nothing- for both new HEAD kernel and also for the old 8.1 kernel.

It looks like something went wrong within ZFS I am afraid.

I came back to Arch linux for now- I will wait for 9.0 released or NetBSD 6.0. For the time being I am not going to come back to BSD. But anyway this is really strange as 8.1 (also installed on ZFS through the PCBSD installer) was working out of the box.

I obviously followed your how-to. The one thing is that I made my kernel config more customized removing NOTES form /sys/conf and from /usr/srs/sys/amd64/conf. The rest was untouched. Do you want me to send my config files etc? Perhaps we can test it under VirtualBox?

Kr,

Pjoter.


----------



## Ralph_Ellis (Oct 6, 2010)

I have always found that the easiest way to install ZFS in FreeBSD was to install PC-BSD and then customize it. The PC-BSD installation program is very advanced and makes ZFS installs easier. You can then build or rebuild the kernel as you see fit.
The VirtualBox idea also has merit. Do snapshots before each rebuild for testing and you should be off the the races. 
Feel free to post your version of the GENERIC file in /usr/src/sys/amd64/conf.
Maybe we will see something that stands out.


----------



## davetrotteruk (Oct 6, 2010)

Just want to say thanks, I installed myself a new kernel with this guide and it worked perfectly (with zfs).
Thanks.


----------



## Ralph_Ellis (Oct 16, 2010)

I am glad to hear it. Have fun with the new kernel. Did you find any performance improvements - memory use, speed in the applications, floating point speed, etc..
My experience was that applications would load faster; memory use dropped by a a few hundred megs and curiously enough, Folding@home became 20% faster. The last one is probably due to fewer modules sitting in memory and the machine not spending cycles checking to see if it had hardware that it does not have.
Good luck.


----------



## davetrotteruk (Oct 17, 2010)

I haven't done any checks but I feel it boots quicker. But on the desktop I cannot tell, but i have a 3ghz quad, 4gb ram and use scrotwm and a lot of term apps .


----------



## UNIXgod (Oct 17, 2010)

How do you install folding@home? for the gpu?


----------



## Pjoter (Oct 21, 2010)

Hello,

I don't know if this isn't the same case I faced.

http://www.daemonforums.org/showthread.php?p=34316#post34316

P.


----------



## Ralph_Ellis (Oct 22, 2010)

Some people have managed to install folding@home for the gpu under Wine but I was never able to get it to work. I have stuck with the SMP2 folding@home application under either Wine or a Linux VirtualBox installation.


----------



## zeiz (Oct 22, 2010)

Just a note.
Having problem with 9-CURRENT update on ZFS I read this thread.


> If you are using a proprietary video driver from Nvidia or the open source nouveau driver, they will need to be recompiled if you are going to continue to run 8.1. They will not run at all under FreeBSD 9 current. If you need the proprietary driver, do not move to FreeBSD 9 current for now.


I'm using nvidia-driver for quite a while on -CURRENT and it runs fine (yet beta for amd64).

I reported my problem that is similar to what Pjoter described but so far no ideas.


----------



## Ralph_Ellis (Oct 23, 2010)

Since my first upgrade, I was able to install  the Nvidia 195 driver from ports. The Nvidia driver that I could not install was the 256 driver from the Nvidia website. It can be fixed by editing the makefile so it allows FreeBSD 9-Current to be built instead of saying that the Nvidia driver does not support it. 
I did not hit the "could not mount zfs as root" issue but in my case, the ZFS disk layout was created by the PC-BSD installer. I often suggest to people that they use the PC-BSD installer to install FeeBSD or PC-BSD. It makes your life a lot easier. Right now the PC-BSD installer will only install up to 8.1 but you can then use make buildworld and make buildkernel to upgrade to 9-Current.
Someone in FreeBSD administration circles should look at making a modified PC-BSD installer the default or at least an optional installer for FreeBSD. The finstall project appears to be stalled.


----------



## DutchDaemon (Oct 23, 2010)

The x11/nvidia-driver port has been at 256.53 for two weeks.


----------

