·What is SILO?
·How does it work?
·Using SILO ·Using TILO
·Mailing Lists
·Code License

On the command line

Usually, when /sbin/silo is invoked without any command-line options, it reads and checks the syntax of it's configuration file, and then installs and configures the boot loaders.

You can however pass several arguments to /sbin/silo:

  • -r <root_path>
    This does a chroot to <root_path> before preforming any other actions. In case you are creating a new root file system (e.g. your current root file system is NFS mounted and you are setting up an ext2 root file system in /mnt, then you should run silo after installing the directories boot, etc and sbin into /mnt with the "-r" argument. An example:

    /mnt/sbin/silo -r /mnt

  • -b <secondary>
    This tells SILO to use <secondary> as the second stage boot loader instead of /boot/second.b.

  • -i <primary>
    Install <primary> as the first stage loader instead of the default one. Depending on the architecture of the machine and other arguments the default is either /boot/first.b, /boot/ultra.b or boot/fd.b.

  • -C <config>
    Specify and alternate configuration file instead of the default /etc/silo.conf. The configuration file must reside on the same physical disk as the secondary boot loader (It can reside on a different partition).

  • -S <backup_file>
    This forces the saving of the old boot block into <backup_file>.

  • -s <backup_file>
    This forces the saving of the old boot block into <backup_file> if and only if <backup_file> does not exist yet.

  • -p {0|2}
    Force the EPROM version to be 0 or 2. The default is to auto-detect the EPROM version.

  • -f
    Force the overwriting of the boot block.

  • -t
    Stores the boot block into the same partition as the second stage loader. By default, when using a SCSI or an IDE disk, SILO writes the boot block into the master boot (the boot block of the partition starting at cylinder 0). This behaviour can be changed with the "-t" argument.

  • -V
    Displays the version of SILO.

  • -F
    Generate the boot block for booting from the romfs file system. To create a bootable romfs file system (which is usually on a floppy disk) prepare the tree for that file system, and run genromfs(8) while passing the following arguments to it:

    genromfs -a 512 -A 2048,/...

    After this mount the tree and run silo with the "-f" option. An example:

    genromfs -d directory/ -f device -a 512 -A 2048,/..
    mount -t romfs device mountpoint
    silo -r mountpoint -i /boot/fd.b -F
    umount mountpoint
  • -J <flash-image>
    Generate the bootblock for booting a JavaStation off a flash image. To create it, you should prepare the tree for that file system, and run genromfs(1). You must use -a512 as an argument to genromfs. There must be 1kB of space before the file system for the ELF boot block. An example of the procedure:

    dd if=/dev/zero of=flash.img bs=1k count=1
    genromfs -a 512 -f romfs.img -d flash/
    cat romfs.img >> flash.img
    rm -f romfs.img
    losetup /dev/loop0 -o 1024 flash.img
    mount -t romfs -o ro /dev/loop0 /mnt
    silo -J flash.img -i /boot/ieee32.b -r /mnt
    umount /mnt
    losetup -d /dev/loop0
    jsflash flash.img
  • -u
    Assume that the machine is an UltraSPARC. The default is obviously the machine that /sbin/silo is being run on. This can be useful for instance if you are planning to move a hard disk drive from a 32-bit to a 64-bit machine. You run /sbin/silo -f -u, halt the machine, and move the disk.

  • -U
    Assume that the machine is not an UltraSPARC.

  • -v
    Print the EPROM version and exit.

  • -a
    Usually when silo is running it reads and checks the syntax of the silo.conf file that will be used when the system boots, which is generally a good idea. Sometimes, however, you may want to create a boot block when silo.conf is not or not yet available. This will allow this check to fail. USE THIS WITH CAUTION!

At boot time

When the PROM boots from a disk and partition on which SILO is installed, the first stage boot loader will load the second one very quickly, and the string "SILO" will be printed to the screen. If something went wrong while loading the second stage boot loader, SILO might print less characters from that string and die, e.g. "SIL" means it loaded a second stage boot loader, but with wrong magic. See also How does it work?

After SILO has been loaded succesfully it will print the string boot:, and then waits for either the timeout if specified in silo.conf, or user input.

  • Press <enter> (an empty line), which will cause the "default" entry from the configuration file to be loaded.
  • Type halt, which will drop you to the Sun EPROM.
  • Type help to display help information.
  • Press <tab>, which lists the aliases and labels from the configuration file.
  • Enter an alias or label that is present in the configuration file, plus additional arguments.
  • Enter a full path to an image to be loaded.

The arguments you pass on the line after the name of the image to be loaded are basically kernel arguments which are normally specified in the append variable in silo.conf. In addition to that, several special arguments are handled by SILO internally and are not passed to the kernel. These arguments include:

  • initrd
  • initrd-size=number
  • initrd-prompt
  • pause-after
  • show-arguments

show-arguments causes the arguments which will be passed to the kernel to be printed on the screen before the kernel is loaded, the other options resemble flags and string variables found in silo.conf.

SILO has support for filename completion on the command-line prompt by pressing the <tab> key.


boot: linux

boot: linux init=/bin/sh

boot: 1/boot/vmlinux

boot: /pci@1f,4000/ide/ata@0,0/cmdk@0,0;4/boot/ root=/dev/hda4

boot: sd(0,2,0)2/boot/vmlinux.gz root=/dev/sdc2 init=/bin/sh ro

boot: cat /etc/silo.conf

boot: cat /sbus/espdma@1,280000/esp/sd@2,0;5/etc/inittab

boot: ls -lt /lib/modules/

boot: ls /pci@1f,4000/ide/ata@0,0/cmdk@0,0;2/lib/

Last update: Sunday March 28, 2004 - pkrul at