Embedded
我的 cpio 命令中的錯誤是什麼意思?
我一直在我的系統上使用以下命令來創建 .cpio 存檔,以便為我的嵌入式目標設備創建一個 initramfs
sudo find . | cpio -H newc -oc > ~/initramfs.cpio
這一直對我有用,沒有任何問題。昨天我正在生成一個新的存檔,我收到以下錯誤:
cpio: Archive format multiply defined: Operation not permitted cpio: ./etc/shadow: Function open failed: Permission denied cpio: ./usr/lib/ssh-keysign: Function open failed: Permission denied 64842 blocks
我過去從未收到過這些錯誤,提到的文件打開失敗也沒有被觸及,所以我不明白為什麼會發生這種情況。我用 Ubuntu 包管理器更新了我的主機系統,所以我的
cpio
包也可能已經更新。由於所有讓我非常困惑的錯誤,我顯然對這裡生成的 initramfs 沒有信心。我能想到的唯一選擇是嘗試找出我的cpio
版本是否已更改,如果是,請刪除並替換為我擁有的舊版本。有什麼方法可以在我的系統(Ubuntu 12.04)上找到這些資訊?還是有其他方法可以解決這個問題?
第一個錯誤是因為您同時傳遞了
-H newc
and-c
。您必須決定要生成的存檔格式。“*不允許操作”*是 GNU cpio 中的一個錯誤,它將錯誤的參數傳遞給輸出該錯誤消息並應該退出的函式。其他錯誤是因為您沒有以超級使用者身份執行該命令,或者更有可能是您沒有從正確的位置執行它。只有超級使用者可以讀取文件,
/etc/shadow
因為它包含敏感資訊。您還應該確保您生成的存檔只能由超級使用者讀取。如果它是initramfs
您正在創建的,那麼很可能/etc/shadow
沒有業務存在,除非它initramfs
包含完整的作業系統。