Internet & Web Application

การใช้งาน External Storage เป็น Root File System สำหรับ OpenWRT

ยิ่งลงยิ่งมันส์ .. ipkg จำนวนมาก, application บน x86 open-source ทั้งหลายถูก port มาเพื่อให้สามารถใช้งานได้กับ router cpu mip .. แต่น่าเสียดายพื้นที่อันจำกัดของ Flash memory ที่ storage ข้อมูลของเรา ดังนั้นจึงต้องเพิ่มกันหน่อย ..

มาทำ Compact Flash (CF) ให้เป็น Root file system กัน

รายละเอียด

usb storage : howto

boot from external media : howto

package on external media : howto

http://oldwiki.openwrt.org/OpenWrtDocs%282f%29KamikazeConfiguration%282f%29BootFromExternalMediaHowTo.html

https://forum.openwrt.org/viewtopic.php?pid=94804

http://www.nslu2-linux.org/wiki/OpenWRT/BootFromUsbDevice


Boot Configuration (Kamikaze)

First Create a script /etc/init.d/pivotroot


#!/bin/sh
# change this to your boot partition
boot_dev="/dev/sda1"
# install needed modules for usb and the ext3 filesystem
# **NOTE** for usb2.0 replace "uhci" with "ehci_hcd"
# **NOTE** for ohci chipsets replace "uhci" with "usb-ohci"
for module in usbcore uhci scsi_mod sd_mod usb-storage jbd kmod-fs-ext2 kmod-fs-ext3 ; do {
        insmod $module
}; done
# this may need to be higher if your disk is slow to initialize
sleep 4s
# mount the usb stick
mount "$boot_dev" /mnt
# if everything looks ok, do the pivot root
[ -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>&-
        }
}

Make it executable:

chmod +x /etc/init.d/pivotroot

Then install the modules, for Kamikaze 7.07 or later (Kernel 2.6), use

ipkg install kmod-fs-ext2 kmod-fs-ext3

Test to see if pivotroot works:

/etc/init.d/pivotroot
df -h

You may safely ignore errors saying “

insmod: cannot insert ...

” If pivotroot worked, then df will show that your USB storage is mounted on “/” (root). Now reboot.

reboot

after that edit /etc/init.d/rcS — แก้ใหม่ทั้ง file


#!/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 your System should Startup nicely either from USB or from internal Flash if the USB-disk is not available.


*** ข้อสำคัญ อยู่ที่ sleep เพื่อรอให้ อุปกรณ์รับรู้ถึงการต่อ USB .. บางทีอาจต้องรอเป็น 10s
แต่เท่าที่ลอง สำหรับ kernel 2.4 ใช้เวลา(=4s) น้อยกว่า kernel 2.6
(หรือก็อาจเป็นได้ว่า Card reader ช้ากว่ากัน ??)

Technorati : ,
Del.icio.us : ,

Advertisements
มาตรฐาน

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s