什么';switch\u root和run\u init之间的区别是什么?
什么';switch\u root和run\u init之间的区别是什么?,c,linux,embedded-linux,busybox,C,Linux,Embedded Linux,Busybox,switch\u root和run\u init之间有什么区别,除了switch\u root是由busybox制作的,而run\u init来自klibc 非常感谢它们执行完全相同的功能,即从一个。它们都假设应该成为根目录的文件系统已经挂载在某个目录上,并以此作为参数 (initramfs是(通常)由引导加载程序加载的临时内存文件系统。它的目的是在装入实根目录并切换到实init程序之前执行可能需要的任何设置。) 可以找到runinit的最新源代码run_init()是入口点(从解析参数的run
switch\u root
和run\u init
之间有什么区别,除了switch\u root
是由busybox
制作的,而run\u init
来自klibc
非常感谢它们执行完全相同的功能,即从一个。它们都假设应该成为根目录的文件系统已经挂载在某个目录上,并以此作为参数 (initramfs是(通常)由引导加载程序加载的临时内存文件系统。它的目的是在装入实根目录并切换到实
init
程序之前执行可能需要的任何设置。)
可以找到runinit
的最新源代码run_init()
是入口点(从解析参数的run init.c调用)
可以找到开关\u root
的最新源代码<代码>开关\u root\u main()是入口点
这两种实现的代码都很短(虽然有点棘手),这使得用肉眼比较它们很容易。唯一的区别似乎是它们执行的健全性检查稍有不同,而最新版本的
run init
在execv()
之前有一个额外的选项来删除所选的功能(7)
,奇怪的是,在使用新的init
时,我发现了一些旧的功能,在klibc中将run_init
重命名为switch_root
。不知道他们为什么不在。你还有什么想知道的吗?非常感谢@Ulfalizer