initramfs切成真正的Linux文件系统

的initramfs访问真正的Linux文件系统主要使用的switch_root命令。



通常,initramfs是准备最终的根文件系统。最后一步是安装最终根文件系统,然后切换到新的根文件系统。



以往基于切换到新的initrd ramdisk根文件系统使用pivot_root命令,然后卸载内存。但initramfs是rootfs,并不是pivot_root也就卸载。



BusyBox的解决方案是完成整个过程提供switch_root命令,使用起来非常方便。



该switch_root命令的格式:



switch_root { C / dev /控制台new_root new_init arguments_to_init } { }

new_root是加载目录的根文件系统,需要安装到系统执行switch_root命令之前。

new_init是实际的根文件系统初始化程序的路径,这是一般/ sbin /初始化;

-控制台是一个可选参数,用于重定向根文件系统的实际设备文件,我们一般不使用这些文件;

arguments_to_init是init程序,通过对实际的根文件系统的参数,并且是可选的。

特别注意

的switch_root命令必须由PID = 1,这是过程调用,它必须直接由initramfs init程序调用时,它不能受到来自其他进程调用init,否则这将是错误的。提示:switch_root:不可以。



同样的原因是init脚本调用switch_root命令被调用exec命令,否则就会出错,提示:switch_root:不可以



样品

下面是一个由个人成员编写的init文件,它将分区写入命令。You can read kernel parameters from ldquo, /proc/cmdline, and find the partition to toggle.



# /斌/ SH!

# { }表达表达真实的返回true,否则返回false。D文件存在并且是一个目录

# | |或手术,假手术前。

#经过一段时间的含义,没有相应的目录创建。

{ - D / dev } | | mkdir m 0755 / dev

{ - D /根} | | mkdir m 0700 /根

{ - D /系统/系统| | } mkdir

{ - D / proc mkdir / proc | | }

{ - D / /甲氧苄啶TMP } mkdir | |

# -----------------------------------



mkdir -p /无功/锁

回声山- T sysfs O则nodev,noexec,nosuid将没有 /系统

山- T sysfs O则nodev,noexec,nosuid将没有 /系统

回声山- T触发O则nodev,noexec,nosuid将没有 /proc

安装程序- T O则nodev,noexec,nosuid将没有 / proc



这就#笔记/ dev的真实文件系统如果udev的脚本

#使用它们将;但是,值得指出的

如果!山不devtmpfs O模式= 0755无/ dev;然后

安装-t tmpfs -o模式= 0755无/ dev

#回声mknod - m 0600 / dev /控制台C 51

# mknod - m 0600 / dev /控制台C 51

# mknod / dev /空C 13

#做出一些基本设备首先让udev处理剩下的

mknod / dev /空C 13

mknod / dev / ptmx C 52

mknod / dev /控制台C 51

mknod / dev / kmsg C 111

FI

mkdir / dev /分

山不devpts -o noexec,nosuid将,GID = 5,模式= 0620 / dev /没有真正的| | PTS

mdev的



回声山 / / / dev sda3根

安装 / / /根sda3 dev



回声switch_root / / /根sbin init

执行switch_root / / /根sbin init