在板上,我想闪现(NAND)分区,其中我的当前根资源是没有重新启动,并能够检查闪存是否成功。
为此,我试图:
不幸的是,我无法卸载原始根分区。
开始部分主要是在pivot_root手册页面中描述的步骤:
mount /dev/hda1 /new-root
cd /new-root
pivot_root . old_root
exec chroot . sh <dev/console >dev/console 2>&1
umount /old-root # <== unable to unmountKilling some processes:
psPID用户VSZ命令1根1524 S init 3. 2根0 SW< 卡特鲁德 3根0 SW< ksoftirqd/0 4根0 SW< 看门狗/0 5根0 SW< 事件/0 6根0 SW< khelper 126根0 SW< 克布洛克/0 132根0 SW< 克塞罗 136根0 SW< kmmcd 159根0 SW 二次冲洗 160根0 SW 二次冲洗 161根0 SW< kswapd0 209根0 SW< aio/0 213根0 SW< 西奥德 220根0 SW< 西夫索普 807根0 SW< 卡普姆873根0 SW< 姆特布洛克 919根0 SW< rpciod/0 925根0 SWN jffs2_gcd_mtd3 927根0 SW< 姆卡德 1806根2908 R -bash 2456根2072 R
mount /dev/mmcblk0p0 /mnt/disk
umount /sys
umount /tmp
cat /proc/mountsrootfs / rootfs rw 0 0 /dev/root / jffs2 rw 0 0 /proc /proc proc rw 0 /dev/mmcblk0p0 /mnt/disk ext2 rw,errors=continue 0 0 0
我想我必须找到卸载/dev/root和/或rootfs的方法,但是/mnt/disk不会成为一个问题,因为它还在使用中,但是,它是我想要着色的SD卡吗?
umount /proc
cd /mnt/disk
pivot_root . old-root
mount -t proc none /proc
ls -l /proc/1-rcoredump_filter lrwxrwx1根根0 11月30日:17 cwd -> // -rdr-x-r-1根根0 11 0 1:17 mountinfo r-1根0 11 0 0 1:17 root r-r--r-1根根0 11月30日:17 oom_adj -r-1根0 11月30日1:17 oom_score -r个性特征lrwxrwxrwx 1根根0 11月30 01:17根-> // -rw-r-1根0 11月0 01:17根根0 11月30日01:17根根0 11月30日1根根0 11 0 01:16 stat -r-r-r-1根根0 11月30日:17 statm -r-1根根0 11 0 01:17状态dr-xr-x3根根0 11月30 01:17任务/-r-1根根0 11 0 01:17 wchan
cat /proc/mountsrootfs / rootfs rw 0 /dev/root /old_root jffs2 rw 0 /dev/mmcblk0p0 / ext2 rw,errors=continue 0 0无/proc proc rw 0 0 0
exec chroot . sh <dev/console >dev/console 2>&1
umount /old_rootumount:不能umount /old_root/:设备或资源繁忙
fuser -m /old_root/
#> 1 # <= issue here我想知道我是不是忘了什么(也许我的策略被打破了?)
我和chroot / switch_root试过了。我还尝试使用mount --move /proc和/sys,而不是使用SD卡rootfs。
内核版本: 2.6.29.4←存在一个rootfs,那么它有可能创建根吗?Busybox版本: 1.16.1
发布于 2016-08-31 13:17:17
实际上,我的问题很容易解决,我只需要重新启动init运行init u
陷阱:
rootfs,也不关心/dev/root/proc,因此,fuser -m /old_root没有输出发布于 2016-08-30 07:20:51
我相信,您仍然是从旧根执行命令umount /old_root,因此它很忙。
我曾经做过一个类似的脚本,下面的脚本对我很有用:
#!/bin/sh
mount -v -n -t proc -onodev,noexec,nosuid proc /proc
mount -v -n -t sysfs -onodev,noexec,nosuid sysfs /sys
mount -v -t ext4 /dev/sdb1 /mnt/root
mount --move /dev /mnt/root/dev/
mount --move /proc /mnt/root/proc/
mount --move /sys /mnt/root/sys/
echo "Switching root filesystem..."
cd /mnt/root
pivot_root . mnt/tmp/
exec chroot . /sbin/init 然后,在新根目录中,新init执行的第一个命令是umount /mnt/tmp/。
https://unix.stackexchange.com/questions/306406
复制相似问题