创建含根路径前缀的cpio归档,解决路由器固件无法启动问题
重建带根路径前缀的SVR4格式cpio归档
操作步骤
- 切换到提取后的rootfs目录
确保当前工作目录是固件提取出的rootfs根目录(即包含dev、mnt等文件夹的目录):
cd /path/to/extracted/rootfs
- 生成带/前缀的路径并创建SVR4格式cpio归档
用find遍历当前目录内容,通过sed将路径中的./替换为/,再以SVR4格式归档:
find . -print0 | sed -z 's/^\.\//\//' | cpio -o -H svr4 > /home/kali/Desktop/Share/t.cpio
-print0和-z用于处理含特殊字符的文件名,避免出错sed -z 's/^\.\//\//'将find输出的./dev类路径替换为/dev-H svr4指定生成SVR4格式归档,与原归档格式保持一致
- 验证归档正确性
- 查看归档内容,确认路径带/前缀:
cpio -it < /home/kali/Desktop/Share/t.cpio - 确认归档格式:
输出应显示file /home/kali/Desktop/Share/t.cpioASCII cpio archive (SVR4 with no CRC)
关键说明
- 之前使用
-H newc生成的newc格式归档,与原固件要求的SVR4格式不兼容,这是路由器无法启动的核心原因之一 - 直接用
find /会遍历系统根目录,而find .结合sed替换的方式,仅针对当前rootfs目录生成带/前缀的路径
内容的提问来源于stack exchange,提问作者Hakim Darvish
相关产品推荐
相关产品推荐

