NSLU2-Linux
view · edit · print · history

This guide covers fast (12mbit/s) usb and ext2 filesystem only

make shure you install package kmod-usb2 and load module ehci-hcd or your disk will be (very, hdparm -t < 12,5mbit/s) slow.

BootFromUsbDevice

This tutorial is for OpenWRT? (kamikaze 7.09) with 2.6 kernel, but it will probably work for other devices too running OpenWRT? kamikaze on a 2.6 kernel If you are unsure what kernel you have use: uname -a

which will give you something like this:

root@OpenWrt:/etc/init.d# uname -a
Linux OpenWrt 2.6.21.6 #1 Fri Dec 28 11:04:49 UTC 2007 armv5teb unknown

First of all make sure you have all the modules required:

ipkg update
ipkg install kmod-usb-core kmod-usb-uhci kmod-scsi-core kmod-usb-storage kmod-fs-ext2 kmod-fs-ext3

Then load these modules:

insmod ext2
insmod jbd
insmod ext3

Install e2fsprogs and fdisk

ipkg install e2fsprogs fdisk

Partition your disk. I have a 1GB Verbatim StoreNGo and used 700 MB for ext2 and 300 MB for swap

fdisk /dev/sda <- change this to your device

Then format your partition:

mke2fs /dev/sda1

Mount it and copy the filesystem to your USB-device

mount -t ext2 /dev/sda1 /mnt
mkdir /tmp/root
mount -o bind /rom /tmp/root
cp /tmp/root/* /mnt -a
umount /tmp/root
umount /mnt

vi /etc/init.d/pivotroot

copy and paste this into /etc/init.d/pivotroot

#!/bin/sh
# change this to your boot device
boot_dev="/dev/sda1"
/sbin/hotplug2 --override --persistent --max-children 1 --no-coldplug &
for module in usbcore uhci scsi_mod sd_mod usb-storage jbd ext2 ext3 ; do {
        insmod $module
        }; done

        # this may need to be higher if your disk is slow to initialize
        sleep 30s
        # mount the usb stick
        mount "$boot_dev" /mnt
        # if everything looks ok, do the pivot root
killall hotplug2
        [ -x /mnt/sbin/init ] && {
                mount -o move /proc /mnt/proc && \
                pivot_root /mnt /mnt/mnt && {
                mount -o move /mnt/dev /dev
                mount -o move /mnt/tmp /tmp
                mount -o move /mnt/jffs2 /jffs2 2>&-
                mount -o move /mnt/sys /sys 2>&-
          }
}

Then make it executable

chmod a+x /etc/init.d/pivotroot

Now, make the symlink so it will start at boot time

ln -s /etc/init.d/pivotroot /etc/rc.d/S10pivotroot

replace everything in /etc/init.d/rcS with this

vi /etc/init.d/rcS

#!/bin/sh
# Copyright (C) 2006 OpenWrt.org
if test $2 == "boot" ; then
/etc/init.d/pivotroot
fi
{
 for i in /etc/rc.d/$1*; do
 $i $2 2>&1
 done
} | logger -s -p 6 -t '' &

Now reboot and telnet to your slug

Use 'passwd' to set your new root password

exit

Log in with ssh

To make sure it works type 'df -h'

Which will give you something like this

root@OpenWrt:/# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/sda1                 1.0M      1.0M         0 100% /mnt/rom
/dev/mtdblock5            5.4M    752.0k      4.6M  14% /mnt/jffs
mini_fo:/jffs             1.0M      1.0M         0 100% /mnt
/dev/sda1               656.1M     19.0M    603.7M   3% /

Fixup resolv.conf symlink

rm /etc/resolv.conf
ln -s /tmp/resolv.conf.auto /etc/resolv.conf

If you created a swap partition you may want to use it

ipkg update
ipkg install swap-utils
mkswap /dev/sda2
swapon /dev/sda2

Make it start at boot time

echo "#!/bin/sh" >> /etc/init.d/swapspace
echo "swapon /dev/sda2" >> /etc/init.d/swapspace
chmod a+x /etc/init.d/swapspace
ln -s /etc/init.d/swapspace /etc/rc.d/S99swapspace

Use free to see if it worked

root@OpenWrt:/etc# free
              total         used         free       shared      buffers
  Mem:        30472        11628        18844            0          960
 Swap:       297192            0       297192
Total:       327664        11628       316036
view · edit · print · history · Last edited by anywhere.
Based on work by mariob, krbvroc1, fcarolo, and krim.
Originally by krim.
Page last modified on December 28, 2009, at 07:07 PM