QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4078|回复: 5

busybox 的 switch_root 为什么总是提示 not rootfs ?

[复制链接]
发表于 2008-5-22 22:29:08 | 显示全部楼层 |阅读模式
哪位知道怎么回事?
怎么解决?
 楼主| 发表于 2008-5-23 16:02:07 | 显示全部楼层
解决,估计是需要 exec switch_root 方式调用 switch_root 才不会出错

  1. #!/bin/sh
  2. mount -t proc /proc /proc
  3. mount -t sysfs /sys /sys
  4. #mount -o mode=0755 -t tmpfs /dev /dev

  5. echo Mknod...

  6. mknod /dev/null c 1 3
  7. mknod /dev/zero c 1 5
  8. mknod /dev/systty c 4 0
  9. mknod /dev/tty c 5 0
  10. mknod /dev/console c 5 1

  11. echo Insmod ...
  12. insmod /lib/aufs.ko
  13. insmod /lib/unlzma.ko
  14. insmod /lib/sqlzma.ko
  15. insmod /lib/squashfs.ko

  16. #echo 0x0100 > /proc/sys/kernel/real-root-dev

  17. echo Start udev...
  18. /bin/udevd &
  19. sleep 2
  20. echo Scan device...
  21. /bin/udevadm trigger
  22. sleep 2
  23. #echo Start a sh prompt...
  24. #/bin/sh

  25. mkdir -p /usbdisk
  26. mkdir -p /aufs
  27. mkdir -p /squashfs

  28. mount -t vfat /dev/sda1 /usbdisk -o ro
  29. mount -t tmpfs /aufs /aufs
  30. mount -t squashfs /usbdisk/mgc.squ /squashfs -o ro

  31. mount -t aufs -o br:/aufs=rw:/squashfs=ro /sysroot /sysroot

  32. umount /proc
  33. umount /sys

  34. #ps

  35. killall udevd

  36. cd /sysroot
  37. exec /bin/switch_root /sysroot /sbin/init

复制代码
回复

使用道具 举报

发表于 2009-8-17 13:05:04 | 显示全部楼层
switch_root命令必须由PID=1的进程调用,也就是必须由init ramfs的init程序直接调用,不能由init派生的其他进程调用,否则会出错,提示:

  switch_root: not rootfs

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

  switch_root: not rootfs
回复

使用道具 举报

 楼主| 发表于 2009-8-17 15:11:01 | 显示全部楼层
BS 楼上晚了 2 个多月
回复

使用道具 举报

发表于 2009-8-17 17:45:44 | 显示全部楼层
原帖由 jiangtao9999 于 2009-8-17 15:11 发表
BS 楼上晚了 2 个多月

我只 BS 楼上那层的
回复

使用道具 举报

发表于 2009-8-17 18:22:36 | 显示全部楼层
哈哈哈!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-23 08:12 , Processed in 0.042800 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表