![]() |
BootFromUsbDeviceThis 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 fdiskipkg install e2fsprogs fdisk Partition your disk. I have a 1GB Verbatim StoreNGo and used 700 MB for ext2 and 300 MB for swapfdisk /dev/sda1 <- change this to your device Then format your partition:mke2fs /dev/sda1 Mount it and copy the filesystem to your USB-devicemount -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 executablechmod a+x /etc/init.d/pivotroot Now, make the symlink so it will start at boot timeln -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 slugUse 'passwd' to set your new root passwordexit Log in with sshTo make sure it works type 'df -h'Which will give you something like thisroot@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 symlinkrm /etc/resolv.conf ln -s /tmp/resolv.conf.auto /etc/resolv.conf If you created a swap partition you may want to use itipkg update ipkg install swap-utils mkswap /dev/sda2 swapon /dev/sda2 Make it start at boot timeecho "#!/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
|