Skip to content
impl edited this page Sep 11, 2011 · 2 revisions

Install

Partitioning

The best way to get a proper operating system installation onto a RB600 is by means of a CompactFlash card. (For the RB333, the NAND is already partitioned for a kernel and a root filesystem.)

The CompactFlash card needs to be partitioned as follows:

Number Size Type
1 16-20MB (more than enough to hold a compressed kernel image) 0×27
2 remaining Linux (0×83)

You should then configure RouterBOOT to use the CompactFlash slot for booting.

Configuring boot parameters

The default kernel image does not make assumptions about where the root filesystem to mount is. You need to specify this explicitly on the command-line by appending a special ELF section called kernparm to the kernel. Do this as follows:

$ echo "root=/dev/sda2 console=ttyS0,115200" >kernel_parameters.dat
$ powerpc-linux-gnu-objcopy --add-section kernparm=kernel_parameters.dat dtbImage.rb600.elf

Substitute root devices (e.g., /dev/mtdblock1 for the on-board NAND) and images (e.g., dtbImage.rb333.elf for RB333) as necessary.

Configuring Linux

Write the kernel to the first partition using dd:

# dd if=dtbImage.rb600.elf of=/dev/sdX1

Create an ext4 filesystem (or some other Linux-compatible filesystem, if you like) on the second partition:

# mkfs.ext4 /dev/sdX2

Feel free to tune inode sizes, etc. to fit the performance characteristics of your CompactFlash card (or for the on-board NAND).

Mount your new filesystem and copy the Linux distribution of your choice to it. Of somewhat primary importance is copying your kernel modules to the modules directory on that filesystem. Here’s an example for Debian:

# mount -t ext4 /dev/sdX2 /mnt/tmp
# cdebootstrap -v --foreign -a powerpc stable /mnt/tmp
# cp -a modules/lib/modules/3.0.0-00020-g0f28538 /mnt/tmp/lib/modules
# editor /mnt/tmp/etc/fstab
> # /etc/fstab: static file system information.
> #
> # <file system> <mount point>   <type>  <options>       <dump>  <pass>
> proc            /proc           proc    defaults        0       0
> /dev/sda2       /               ext4    defaults        0       2
# editor /mnt/tmp/etc/inittab
> # /etc/inittab: init(8) configuration.
> # $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $
> 
> # The default runlevel.
> id:2:initdefault:
> 
> # Boot-time system configuration/initialization script.
> # This is run first except when booting in emergency (-b) mode.
> si::sysinit:/etc/init.d/rcS
> 
> # What to do in single-user mode.
> ~~:S:wait:/sbin/sulogin
> 
> # /etc/init.d executes the S and K scripts upon change
> # of runlevel.
> #
> # Runlevel 0 is halt.
> # Runlevel 1 is single-user.
> # Runlevels 2-5 are multi-user.
> # Runlevel 6 is reboot.
> 
> l0:0:wait:/etc/init.d/rc 0
> l1:1:wait:/etc/init.d/rc 1
> l2:2:wait:/etc/init.d/rc 2
> l3:3:wait:/etc/init.d/rc 3
> l4:4:wait:/etc/init.d/rc 4
> l5:5:wait:/etc/init.d/rc 5
> l6:6:wait:/etc/init.d/rc 6
> # Normally not reached, but fallthrough in case of emergency.
> z6:6:respawn:/sbin/sulogin
> 
> # What to do when CTRL-ALT-DEL is pressed.
> ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
> 
> # Action on special keypress (ALT-UpArrow).
> #kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work."
> 
> # What to do when the power fails/returns.
> pf::powerwait:/etc/init.d/powerfail start
> pn::powerfailnow:/etc/init.d/powerfail now
> po::powerokwait:/etc/init.d/powerfail stop
> 
> # /sbin/getty invocations for the runlevels.
> #
> # The "id" field MUST be the same as the last
> # characters of the device (after "tty").
> #
> # Format:
> #  <id>:<runlevels>:<action>:<process>
> #
> # Note that on most Debian systems tty7 is used by the X Window System,
> # so if you want to add more getty's go ahead but skip tty7 if you run X.
> #
> #1:2345:respawn:/sbin/getty 38400 tty1
> #2:23:respawn:/sbin/getty 38400 tty2
> #3:23:respawn:/sbin/getty 38400 tty3
> #4:23:respawn:/sbin/getty 38400 tty4
> #5:23:respawn:/sbin/getty 38400 tty5
> #6:23:respawn:/sbin/getty 38400 tty6
> 
> # Example how to put a getty on a serial line (for a terminal)
> #
> T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100
> #T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100
> 
> # Example how to put a getty on a modem line.
> #
> #T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3
# umount /mnt/tmp

Note that you can also get base files from the support repository.

Hook up a serial console to your RouterBOARD (115200 baud, 8-N-1) and reboot into your new Linux installation!

Clone this wiki locally