西格玛向量™

U盘中打造属于自己的Linux (Final) :switch_root转移乾坤

作者: 西玛哒   分类: IT悟语, Linux, 老西常谈   标签:    评论: 0

##### 接上文

   我们的U盘内设置已经成型 如果要让系统的东西能够存出来 则需要修改init文件,使我们的U盘挂载到U盘系统的某个文件夹下 用于存储文件:

  在上次修改之后 我们执行mdev 后等待10s 此时所有的硬件信息都被存储到了/dev 下

我们从U盘启动 U盘默认被认成了 dev/sda

  因此 我们只需要加入挂载命令就可以

  当然 我们也可以用fstab设置自动加载云云 这就不在本文叙述范围内了。

# vi  etc/init.d/rcS

  ———-rcS     final-1————-

#!/bin/sh

mount -t proc proc /proc

mount -t sysfs sysfs /sys

echo /sbin/mdev > /proc/sys/kernel/hotplug           //热插拔

echo ‘waiting to load all devices…..’

mdev -s

sleep 10

mount /dev/sda1        /mnt                     //这里我们把挂载写死了

——————————————————————

  这样 开机后就会发现提示 挂载成功

在你的U盘linux下 就可以在 /mnt 下工作了 文件会存在U盘中 而不会丢失。

但是 这种解决方案并不完全。我们希望能够将系统完全转换到U盘下工作,这就要用到switch_root 命令了。

switch-root 是busybox提供的一个超级命令,

正常如果我们要切换系统的根目录,那么我们要:

(1)删除rootfs的全部内容,释放空间

find -xdev / -exec rm ‘{}’ ‘;’

(2)安装新的根文件系统,并切换

cd /newmount; mount –move . /; chroot .

(3)把stdin/stdout/stderr 附加到新的/dev/console,然后执行新文件系统的init程序

这十分的麻烦 而且常常会出错,因此我们的busybox用一个命令解决了整个过程,比如 我们商秘昂挂载我们的U盘到了mnt目录 而我们的U盘根目录下就是我们写好的一个/ 根文件系统

我们需要执行:

switch_root   /mnt    /sbin/init

                新根目录   新文件系统的init

只后switch_root 就会帮我们自动切换好根文件系统。

需要特别注意的是:

switch_root命令必须由PID=1的进程调用,也就是必须由initramfs的init程序直接调用,不能由init派生的其他进程调用,否则会出错,提示:

switch_root: not rootfs

也是同样的原因,init脚本调用switch_root命令必须用exec命令调用,否则也会出错,提示:

switch_root: not rootfs

因此我们这里将rcS文件改回init (不再需要内存中的linux的shell环境)保证我们加入语句以init的权限调用 pid=1的进程。

然后修改文件。

#cp etc/init.d/rcS  ./init

# vi init

—————–init final-1————–

#!/bin/sh

mount -t proc proc /proc

mount -t sysfs sysfs /sys

echo /sbin/mdev > /proc/sys/kernel/hotplug           //热插拔

echo ‘waiting to load all devices…..’

mdev -s

sleep 10

mount /dev/sda1        /mnt                     //这里我们把挂载写死了

echo "The pid now is $$"                    //打印当前pid 确保为1

exec switch_root  /mnt /sbin/init              //转换

——————————————————

重新打包 拷贝 从U盘引导 OK

如果一切正常 那么你的系统会切换到你U盘里的/ 下 正常的使用吧。

关于U盘里的那个系统 可以到网上下载一个轻量版的linux 或者直接把宿主linux拷贝进去

还有些人 从0开始 自己写了一个完整的linux系统 (不用busybox哦!)这叫LFS 我现在极度崇拜中 可惜水平不够 只能瞻仰…..

这里有篇入门 大家看看:

LFS速成手册

相关内容早已超出我们的范围 到此为止吧。

#####################################

anyShare分享到: U盘中打造属于自己的Linux (Final) :switch root转移乾坤
          
05-30
2009
loading...