求救,关于switch_root 由内核rootfs切换到真实文件系统的问题。燃眉之急!!!

发布于 2022-10-15 09:01:06 字数 1374 浏览 20 评论 0

本帖最后由 yuanm21 于 2011-04-21 09:00 编辑

最近在研究制作一个u盘上的精简linux系统,一步一步艰难走过来,从配置、编译内核,到制作initrd镜像,再到自己制作grub启动,好不容易都走通了,就到最后的由内核rootfs切换到u盘上的真实文件系统时卡住了,困扰了小弟好几天了,再解决不了,公司的项目要因为这个耽误进度了,恳请各位高手帮帮忙吧。

关于initrd镜像的制作我是参照以下的做法,只不过原文是在硬盘上制作的,我的是在U盘上制作。
网址:http://blogold.chinaunix.net/u/3514/showart_1717801.html

我把init脚本提出来:
#!/bin/sh
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mdev -s
#using udev autoload hard disk driver module
mkdir -p /dev/.udev/db
udevd --daemon
mkdir -p /dev/.udev/queue
udevtrigger
udevsettle
mount /dev/sda8 /mnt
killall udevd
exec switch_root /mnt /sbin/init

系统从内核启动,到initrd的加载所需驱动模块并生成相应设备文件都是正常的,执行到最后一步:exec switch_root /mnt /sbin/init 时系统并没有从内核的rootfs进入挂载点/mnt里的真实根文件系统,只是提示switch_root的使用方法,而不是提示错误信息。提示如下:
Usage: switch_root [-c /dev/console] NEW_ROOT NEW_INIT [ARGS]

Free initramfs and switch to another root fs:
chroot to NEW_ROOT, delete all in /, move NEW_ROOT to /,
execute NEW_INIT. PID must be 1. NEW_ROOT must be a mountpoint.

我用mountpoint检查过挂载点/mnt是没问题的,不知u盘上的真实文件系统下的/sbin/init 程序是否有问题,但可以确定/sbin/init是可正常执行的。

再次请求哪位仁兄大侠能够鼎力相助,小弟感激不尽!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文