最近总是会有一些需求,就是快速地部署一个临时的网关。有的时候,用于部署网关的电脑可能只是临时拿来用的。因此,给人家重新装个系统就很不靠谱了。我通常的做法是,在我的 U 盘里装个 ubuntu 之类的。然后里边装上 bind、isc-dhcp-server 之类的,然后每次用这个 U 盘启动就好了。后来发现,这个问题并不是那么简单,因为 U 盘插在别人的电脑上,一来容易丢失,二来容易被物理碰撞损坏。于是我就考虑,能不能在启动后,把根文件系统载入到内存中,这样就可以拔掉 U 盘了。
read -p "Input 'y' in 5 seconds to boot normally..." -t 5 yes
if [ \( x$yes = xy \) -o \( x$yes = xY \) ]; then exec /sbin/init "$@" echo failed... sleep 10000 fi
echo Reading rootfs, it may take several minutes... mkdir -p /run/rootfs mount -t tmpfs -o size=4G shankers-mem-ubuntu /run/rootfs rsync -a / /run/rootfs/ --exclude=/proc --exclude=/dev --exclude=/sys --exclude=/run --exclude=/var/cache --exclude=/var/log --exclude=/usr/include --exclude=/usr/local/include cd /run/rootfs for i in proc dev sys run var/cache var/cache/bind var/log; do mkdir -p $i done
mount -t proc mem_proc proc mount -t sysfs mem_sys sys mount -t tmpfs mem_run run mount -t devtmpfs mem_dev dev mount -t devpts mem_devpts dev/pts mount -t tmpfs mem_tmpfs tmp