Files

使用busybox複製根目錄樹

  • October 16, 2019

我有一個基於 TI DaVinci(類似於 OMAP 的 ARM 架構)的系統,該系統使用 TFTP 和 NFS 安裝的根文件系統進行網路引導,並試圖使其在沒有網路引導伺服器的情況下獨立引導。

基本方法是將核心映像複製到 NAND 快閃記憶體並將根文件系統複製到連接的 SATA 磁碟(NAND 快閃記憶體遠不足以容納整個系統),然後配置 u-boot 以從 NAND 快閃記憶體載入核心並通過一個適當的root=論據。

我被困在復製文件系統的步驟上。 這個問題是相關的,但沒有任何建議有效,因為我只有cpcpio工具的busybox版本,並且--one-file-systembusybox不支持該選項。

當我只有busybox提供的工具能力時,如何複製根文件系統?在 NFS 伺服器(執行 Ubuntu 的 x64 架構)上執行存檔創建命令然後在目標上解壓縮是否有幫助?

BusyBoxfind支持該-xdev選項,因此您可以通過這種方式製作根文件系統的 cpio 存檔。與 tar 不同,cpio 在歸檔目錄時不會歸檔該目錄的內容。

find . -xdev | cpio -H newc -o |
{ cd /mnt && cpio -m -i; }

不過,我不太明白您為什麼要從設備建構圖像。我希望在開發機器上使用您的建構腳本建構文件系統映像,並部署該映像。

我認為您可以使用cp. 來自busybox.net 網站

cp

Usage: cp [OPTION]... SOURCE DEST

          or: cp [OPTION]... SOURCE... DIRECTORY

Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

Options:

           -a      Same as -dpR
           -d      Preserve links
           -p      Preserve file attributes if possible
           -R      Copy directories recursively

例子

$ cp -a / /mnt/newroot

柏油

如果cp無法處理任何設備,例如/dev/zero我很確定它不能處理的設備,您也許可以使用tarBusyBox 中也包含的設備。

$ (cd /; tar cf - .)|(cd /mnt/newroot; tar pxvf -)

引用自:https://unix.stackexchange.com/questions/84964