Linux基礎 – 在內存中使用chroot修復eMMC
概述
本教程將介紹如何在Linux系統中,使用chroot
在內存中構建一個臨時系統,并在不依賴原有系統的情況下修復eMMC(如/dev/mmcblk2
)磁盤。該方法適用于嵌入式系統修復、磁盤清理以及離線維護操作。
為什么選擇chroot
chroot
(Change Root)命令用于更改當前進程或其子進程的根目錄。通過將根目錄切換到內存中的臨時系統,我們可以安全地卸載和修復原有的磁盤(如eMMC),而不會干擾當前系統。
環境準備
- Linux操作系統,支持
chroot
命令。 - 足夠的內存空間(根據臨時系統大小確定)。
- 目標磁盤:eMMC(如
/dev/mmcblk2
)。
搭建內存中的臨時系統
1. 創建臨時根文件系統
mkdir -p /tmp/newsys/{bin,lib,lib64,dev,proc,sys}
2. 復制必要的二進制和庫
cp /bin/bash /tmp/newsys/bin/
cp /bin/busybox /tmp/newsys/bin/ldd /bin/bash
ldd /bin/busyboxcp -r /lib/x86_64-linux-gnu/* /tmp/newsys/lib/
cp -r /lib64/* /tmp/newsys/lib64/
3. 創建設備節點
mknod -m 666 /tmp/newsys/dev/null c 1 3
mknod -m 666 /tmp/newsys/dev/zero c 1 5
mknod -m 666 /tmp/newsys/dev/tty c 5 0
mknod -m 666 /tmp/newsys/dev/random c 1 8
mknod -m 666 /tmp/newsys/dev/urandom c 1 9
4. 掛載 /proc, /sys, /dev 到新根目錄
mount --bind /proc /tmp/newsys/proc
mount --bind /sys /tmp/newsys/sys
mount --bind /dev /tmp/newsys/dev
5. 使用 chroot 進入臨時系統
chroot /tmp/newsys /bin/bash
在chroot中修復eMMC
1. 確保eMMC未被占用
umount /dev/mmcblk2
2. 修復或格式化eMMC
fsck.ext4 /dev/mmcblk2p1
mkfs.ext4 /dev/mmcblk2p1
退出chroot并清理
exit
umount /tmp/newsys/proc
umount /tmp/newsys/sys
umount /tmp/newsys/dev
rm -rf /tmp/newsys
總結
通過在內存中搭建的臨時系統,我們可以靈活地卸載和修復磁盤而不影響現有系統。此方法安全、快速,適用于嵌入式設備維護與故障排查。