Can't load kernel: Fit-PC

  • I am trying to install pfSense on a Fit PC, but have come accross the "can't load Kernel" error that I have seen reported before.
    I have downloaded the latest iso and burned using Nero at different speeds with no difference.
    I popped my Smoothwall cd in and it wanted to install without a problem, but I had settled on using pfsense.
    I am a complete novice with linux so if there is any tweeking of files, please explain carefully.
    I have looked at the page and it doesn't help me much.


  • I presume you mean a "Fit PC" as described on

    I presume you have been attempting to boot off a USB connected CD ROM.

    What version of pfSense are you trying to install? If I recall correctly there was some problem with booting off USB devices in pfSense 1.2. If you haven't already done so it would be worth trying one of the recent 1.2.1 RC kits. I have successfully booted these from a USB connected CD ROM and installed to a USB connected notebook drive.

  • Yes, Fit PC as specs.

    I have the latest version off the pfsense web site. I am using a USB connected CD ROM.

    How do I utilise the RC kits? There doesn't seem to be any iso images that I can use, only iso.gz, what ever they are.


  • That's a gzipped iso. You could use Winzip or similar to unzip it to a burnable iso.

  • OK, downloaded rc kit, extracted to disc. It now gets past the previous kernel error but now has a hard time with something else, the cd I think.

    cam status: SCSI status error.

    I get the above, with lots of other stuff over and over for about 5 or six times then stops at a command prompt asking for the full pathname for the shell.


    Placed Smoothwall 3.0 into the cd and installed without a hitch, so it can't be the cd drive. It must be how freebsd drives it. Any ideas?

  • It may help if you gave a bit more detail. The surrounding error messages might add some necessary context to the message you quoted.

    I presume FreeBSD actually booted and started. If so, the whole output from the start of FreeBSD could be useful. It sounds as if you are probably getting the operating system booted and then it encounters trouble when it tries to mount the root file system on the CD. I suspect the BIOS is involved in getting the OS into memory but once the OS is loaded it starts to use its own drivers. Perhaps this box has a "new" chipset or there is some nuance FreeBSD hasn't enountered before.

    USB attached mass storage devices in FreeBSD use the SCSI CAM (Common Access Method) layer.

  • Just thought of another possibility. A few weeks ago I bought a few USB adapters for notebook 2.5inch drives. They all worked on Windows 2000 and Linux 2.6.20+something. Some worked on FreeBSD 7.0 (Initio chipset) and some didn't (Super Top chipset). While looking through the Linux software supporting USB attached mass storage I noticed a considerable number of devices listed as having some "quirk" requiring software fixup. The comparable FreeBSD sources have a considerably shorter list. Its possible your USB CD has a "quirk" Linux works around but FreeBSD doesn't.

  • cam status: SCSI status error.

    I get the above, with lots of other stuff over and over for about 5 or six times then stops at a command prompt asking for the full pathname for the shell.


    This is classic sh1tty CD, I've seen it many times when trying to breath life into an old heap - re-burn the CD or use a better drive that can recover from the miss-read eg DVD-Writer IMHO  ;)

  • I have burned the cd more than once, using different speeds. The reading usb drive is a brand new liteon dvd/cd writer/rewriter.

  • A FreeBSD system disk can generally be taken from one system and used in another. It won't necessarily be useful immediately, for example with pfSense the interface names may change because the systems have different NICs but that can be fairly easily resolved by doing a reconfiguration.

    I suggest you install to a "hard drive" on another computer, then put that "hard drive" into your Fit PC, boot, reconfigure the LAN and WAN interfaces then do any subsequent configuration from the web GUI.

    Do you have access to another PC which either doesn't have a hard drive or has a hard drive you are prepared to temporarily disconnect or has a hard drive for which you are prepared to run the risk that a typing error might result in loss of all files on that drive? If you can't answer yes to at least one of these alternatives don't act on this suggestion. This PC also probably needs at least one network interface.

    Do you have a USB flash drive (or flash media card with appropriate reader) of at least 1GB capacity. pfSense is going to be installed to this drive so if it has any files you want to preserve you must backup those files before starting this procedure.

    Plug in the USB flash drive to the "non Fit" PC. Being a cautious person you have probably disconnected the hard drives from this system. If not, consider carefully whether you want to proceed. Configure this PC to boot from the CD, and boot the pfSense CD. When prompted select the option to install to hard disk and make sure the installation is going to a da drive (most likely da0). (FreeBSD calls SCSI disks and USB mass storage disks da followed by a unit number, eg da0, da1, da4 etc).

    When installation is complete shutdown the "non Fit" PC, remove the USB drive and plug it into the "Fit PC". Start this PC and configure the BIOS to boot off USB hard drives. pfSense should then startup and will probably want you to configure the interfaces. Complete your configuration to the point where you can access pfSense through the web GUI. You will then use the web GUI to copy from the USB drive to the hard drive of the Fit PC and edit a system file so you will then be able to boot of the Fit PC's hard drive.

    I have glossed over some of the details. If you want to go ahead with this I'll step through it myself so I can flesh out some of the details for you. If you have questions about any of this please ask.

    I'm assuming you won't run into any quirks with USB flash drives or USB memory card reader of the sort I mentioned in an earlier reply. My experience has been 100% success with USB flash drives and memory card readers on FreeBSD 6.3 and 7.0 but only 67% for USB adapters for notebook drives - but both figures are  a very small sample of what is available.

    I used Smoothwall up until a few months ago. I think its great for beginners but I appreciate the wireless support in pfSense, its single configuration file, more up to date hardware support and greater range of capabilities. Hope I can welcome you to pfSense within a few days.

  • Thanks wallabybob.

    I will get myself a USB flash drive as soon as I can. I have a spare PC that I can use to do the work you have outlined. I will let you know when I have it.

  • I have some time now so I'll make some notes on the first part of the process: installation of pfSense to a USB drive.

    I went through this on a couple of different systems: An old desktop with a 450MHz Pentium II and a Laptop with a 1.6GHz P4 or later (I don't recall exactly).

    You will need at least one network interface supported by pfSense. I did the installation to a 1GB Compact Flash card I had and used a USB card reader device that supports multiple types of memory cards. A USB flash drive should be just as suitable.

    Most of this description applies to the installation on the PII. On pfSense boot it reported "Network interface mismatch", reported the interfaces (in my case fxp0 and plip0) then asked:

    Do you want to setup VLANs first?

    Answer "Y". (This is just so we can proceed to the real installation, you'll fix this up when you boot from the USB drive.)

    Then it asks:

    Do you wan to set up VLANs now?

    Answer "Y"

    Then it will report VLAN capable interfaces (in my case fxp0) and ask:

    Enter the parent interface name for the new VLAN (or nothing if finished):

    I answered "fxp0".

    Then it asks:

    Enter the VLAN tag (1-4094):

    I entered "1" (it doesn't matter what in-range number you give).

    Then the parent interface name question is repeated (I answered "fxp0" again) and the VLAN tag (I answered "2".)

    Then the third time i just tapped the "enter" key to indicate I had finished entering VLAN information.

    Then I was asked:

    Enter the LAN interface name or 'a' for auto-detection:

    I typed "vlan0".

    Then I was asked:

    Enter the WAN interface name or 'a' for auto-detection:

    I typed "vlan1".

    Then I was asked

    Enter the Optional 1 interface name or 'a' for auto-detection (or nothing if finished):

    to which I just tapped the enter key


    Do you want to proceed [y|n]?

    to which I typed "y" (alsotype a "y" or an "n" to this sort of question otherwise you will go back in the dialogue) then a few minutes later after a number of lines of configuration reporting and starting various components the pfSense console setup menu appeared. If your USB drive is not yet plugged in, plug it in.
    Then I typed "99" to "install pfSense to a hard drive/memory drive, etc."

    Then you will enter a different installer where you will need to use the arrow keys to navigate and enabled options are marked by "X" and the space bar is used to toggle between "enabled" and "disabled". In the installer you will be show a number of progress bars. These generally do not advance smoothly (more on this later).

    Use the arrow keys to accept the defaults then the enter key to get to the next screen. Select Cancel for configuring network, then select Install pfSense and then you should see a "Select a Disk" box. This box should include a "Removable Direct Access SCSI-2 device" named da0 (likely if using a USB flash drive) or da1 or da2 or … (possible if you are using a USB memory card like SD or CF with a multi-standard memory card reader). DO NOT SELECT an "AD" device - this is likely to be the hard drive of the computer which, to prevent painful accidents, you should have disconnected earlier.

    Then Format this disk, Use the suggested geometry, Format da0 (or whatever device you selected earlier), the Partition disk, accept and create the suggested partition (single partition to cover the whole disk) then Select partition 1, and confirm you are sure.

    The next thing to be specified is the sub-partitions. The "swap" "mountpoint" will default to size of memory - this should be reduced to the size of the Fit PC memory (256MB?) the select "Accept and Create". Then the box "Executing Commands" appears and the progress bar moved fairly quickly to 37% and 43% but stayed on 43% for six minutes then quickly jumped to 68%. Then The Install Kernel(s) box appears, select the Uniprocessor kernel, then "Install Bootblocks". Use the arrow keys to move over to any box with an X in it (except for a "da" drive. You want to install bootblocks only on a "da" drive. (But you had previously disconnected the ad drive(s), right?). Select Accept and Install Bootblocks, confirm the OK box, wait for the remaining install commands to complete then select Reboot and disconnect your USB drive from the system.

    You should now be able to boot this drive on the Fit PC Tomorrow night I should be able to add the commands to copy the files from the USB drive to the Fit PC's hard drive.

  • Sorry to have taken so long to get back to this. This section boots off the USB drive to which pfSense was previously installed.

    Plug that USB drive into the Fit PC. If necessary adjust the BIOS to boot from the USB drive. Boot the Fit PC. At the pfSense Console Setup menu select option 1 to setup the FitPC interfaces the way you want them, select option 2 to set a LAN address then, if you haven't already done so, connect your Fit PC to the LAN and record the details of how to connect to the pfSense web server as described in the console output which appers after you setup the LAN address.

    Back at the pfSense Console Setup menus select option 8 (Shell command).



    and you should see something like


    /dev/da0s1a on / (ufs, local)
    devfs on /dev (devfs, local)
    /dev/md0 on /var/run (ufs, local)
    devfs on /var/dhcpd/dev (devfs, local)

    which confirms the boot device is /dev/da0. This will be the source device for the copy onto the hard drive.


    ls /dev/ad*

    and you should see something like

    $ ls /dev/ad*

    Depending on what was done to the hard drive (such as what OS was put there)  you may see additional lines like


    This confirms the hard drive is /dev/ad0. This will be the destination device for the copy of the pfSense installation onto the hard drive.


    dd if=/dev/da0 of=/dev/ad0

    where if= specifies the source file (USB drive) for the copy and of= specifies the destination file (hard drive) for the copy. This command will do a sector by sector copy from the USB drive to the hard drive copying the disk partition table, boot loader, file system data and files to the hard drive. This will take a few minutes (depending on the size and speed of the USB drive and speed of hard drive) to report back. When it completes you should see something like:

    dd if-/dev/da1 of=/dev/ad0

    1981728+0 records in
    1981728+0 records out
    1014644736 bytes transferred in 2079.044532 secs (488034 bytes/sec)

    You can (optionally) considerably speed up the transfer by copying multipe sectors at a time by appending bs=16384 to the dd command above.

    The last remaining thing to do is to edit a system file so that FreeBSD knows the swap area and file systems are now on the hard drive (ad0) rather than the the USB drive (da0). But you want to change the file on the hard drive, not the file on the USB stick so give the command

    mount /dev/ad0s1a /mnt

    which will make the hard drive's file system visible at /mnt in the directory tree. The easiest way to edit the file is through the web GUI so follow the previously recorded instructions for connecting to the pfSense box. The configuration wizard will start. You can follow that through (though it will configure to your USB stick, not the hard drive) then from the Diagnostics menu click on Edit File. In the Save/Load from Path: box type /mnt/etc/fstab, click the Load button and you should see something like

    Device                Mountpoint      FStype  Options       Dump    Pass#

    /dev/da0s1a          /                ufs    rw             1          1
    /dev/da0s1b          none              swap    sw              0          0

    On the second and third lines change da0 to ad0 then click the Save button.

    On the Diagnostics menu click on Halt system. When the system has halted, remove the USB drive, restart, (if necessary) adjust the BIOS to boot from the hard drive and boot.

  • Thanks wallabybob,

    I got my usb drive today and will attempt your method over the weekend.

  • Tried it. First section OK, loaded onto usb stick.
    Can't get fit-pc to boot off it though, error 170 lba0.

    I will try the first section again, but it don't look good if I can't boot off the usb port.

    Should I be trying the 1.2 or the rc 1.2.1?

  • Sorted out the first problem, don't use a pc who's power supply is on the way out.
    Finally made bootable usb stick.
    Fit-pc boots off it, but runs into problems while it is going through the starting bits.

    ad0: FAILURE - READ_DMA timed out LBA=117210223
    ad0: TIMEOUT - READ_DMA retrying (1 retry left) LBA=117210223

    It does this for the above LBA for a couple more times then changes that value to 128, then 16, 0, 512, 64 then I gave up.

    Any ideas?

    Using RC 1.2.1.

    Smoothwall is looking fairly good at the moment.

  • Try booting in "safe mode" (option 3). This is an easy way to boot without DMA enabled on the hard drive. If you can get past that then a system file can get tweaked to routinely disable DMA on boot.

  • I don't get any options to choose from. Only F1 FreeBSD.

    How do you get the options. I have tried googling but have come up with nothing.

  • OK, forget option 3 for now.

    In the startup you should see

    FreeBSD/i386 bootstrap loader, revision 1.1

    then a few more lines then

    Hit [Enter] to boot immediately, or any other key for command prompt

    then hit a key (other than enter) to get the command prompt. You'll see a couple more lines of output then

    Type ? for a list of commands, 'help' for more detailed help

    then type

    set hw.ata.ata_dma="0"

    which will tell the ATA driver to not use DMA mode then type the command


    to boot the default kernel.

    If this gets the default kernel started and you complete configuration then you should edit /boot/loader.conf to include the line


    so you don't have to keep typing that at boot time.

  • Naaaaaaa, not this time.

    panic no init
    Cannot dump no dump device defined.

    Then reboots.

    It also gives a couple of GEOM errors for ad0, something about boundries???

  • You are still having trouble booting off the USB stick? If you are booting off the hard drive did you change /etc/fstab for the change in device name of the root file system and swap space (da - > ad)?

    What is on the hard drive now?

  • Sorry, still problems booting off USB stick. Haven't got as far as booting off hard drive. (so no pfsense files copied accross yet)

  • Sunday I was looking at the Fit PC home page again and saw it supposedly comes with Ubuntu and Gentoo on the hard drive. Do you still have one or both of them? Whats the boot loader?

  • Had both on it with dual boot. Lost them when I tried Smoothwall, can't remember what the boot loader was.

  • Do you have access to a Linux "Live CD"  - a CD setup with Linux in such a way that it can run entirely from the CD? You could boot that and then do a block copy of the USB drive to the hard drive, then try booting off the hard drive.

    Maybe a suitable CD came with your system. If not, the "System Rescue CD" which can be downloaded from should do the job. Quote a number of common Linux distribution CDs can operate as a Live CD which would be fine if you already have one but a rather bloated download if you just want a live CD.

    Once you get into linux with the command prompt showing the hard drive is probably /dev/hda and the USB drive is probably /dev/sda and you would do a block copy by the command

    dd if=/dev/sda of=/dev/hda bs=16384

    The bs=16384 option speeds up the copy by copying multiple blocks at a time.

    There is a FreeBSD Live CD available but I'm not suggesting you use it because you are having trouble with the FreeBSD boot loaders on your systems.

  • Can get rescue cd to work. Tried your command, without the # seems to get further. Says drive is full. Do I need to empty the hard drive first? Don't forget it has smoothwall installed.

    In Gparted the usb stick is shown as /dev/sdb1 and has an unknown file system on it. It is flagged as boot. Could this be my problem all along, the usb stick not being formatted properly?

  • @sustech:

    Can get rescue cd to work. Tried your command, without the # seems to get further. Says drive is full. Do I need to empty the hard drive first? Don't forget it has smoothwall installed.

    In Gparted the usb stick is shown as /dev/sdb1 and has an unknown file system on it. It is flagged as boot. Could this be my problem all along, the usb stick not being formatted properly?

    The dd command shouldn't say the hard drive is full because the hard drive is larger than the USB stick. Exactly what dd command did you type? Given that the USB stick apparently is /dev/sdb, the dd command should have been something like:

    dd if=/dev/sdb of=/dev/hda bs=16384

    If the if parameter had been something like if=/dev/sdb1 it would have meant something rather different, which unfortunately I don't have time to explain now. The dd command should not have any digits in either the if or of parameters.

    The USB stick has FreeBSD UFS (Unix File System) which is not understood by many Linux utilities. That may be the reason Gparted reports "unknown file system".

  • Thanks very much for your help wallabybob, but I am going to have to cut my losses as it were and stick with the Smoothwall.

    Maybe when I have learned a little more about linux (or when freebsd recognises the fit-pc) I will have another go.


Log in to reply