|
view ·
edit ·
print ·
history
OpenWRT »
BootFromUsbDevice
This guide covers fast (12mbit/s) usb and ext2 filesystem onlymake shure you install package kmod-usb2 and load module ehci-hcd or your disk will be (very, hdparm -t < 12,5mbit/s) slow. 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/sda <- 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 thisvi /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 workedroot@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
|