OpenWRT 支持的硬件环境非常多,很多你懂的软件源码残缺不全导致没办法自行编译,而别人发布的bin固件又不是你需要的,这时候我们就需要解包bin固件来提取想要的文件。
本文为了小白能看的懂,码的比较啰嗦,有个心理准备哈
OpenWRT 是基于 Linux 的系统,bin格式固件是 Linux 文件系统,Windows 几乎没有办法操作,所以我们需要 Docker 容器或 Ubuntu on Windows 来操作。
首先默认你是全新安装 Docker for windows
开启命令行执行
docker run -it ubuntu bash
启动一个 ubuntu bash ,docker hub 官方提供的这个 ubuntu 镜像很迷你,所以“一般”常用的软件都需要自行安装。
首先根据喜好安装一个文本编辑器,这里选择 nano
apt-get install nano
因为环境需要下载的包比较多,所以第一步还是切换软件源为清华大学国内的镜像
nano /etc/apt/sources.list
接下来安装解包所需要的软件
apt-get install binwalk squashfs-tools
复制需要解包的bin文件到docker中,新开一个windows命令行窗口,使用 docker ps
命令 获取当前运行的 ubuntu 系统的id,然后执行
docker cp D:/test.bin dad510f38fd1:/root/
这里的 dad510f38fd1
是每个人不同的,不要直接复制
使用 binwalk 查看文件格式
binwalk /root/test.bin
如果你可以看到分区信息,那么 直接使用 binwalk -e *.bin
解压bin文件,我的bin是诡异的 POSIX tar archive (GNU) ,所以先解压tar
tar -xvf test.bin
cd 到 tar 解压的文件夹
ls -lht
找到体积最庞大的那个文件,我这里是 root,这次执行 binwalk root
就可以看到详细的分区信息了
binwalk -e root # 解压成功会生成一个 .extracted 文件夹 cd *.extracted # 开始解包固件内容 unsquashfs -dest output *.squashfs
OVER!
文章不错非常喜欢
请教下楼主,在win下docker安装nextcloud,到达配置数据库这步时,选择mysql(mysql 是宿主机里装的即当前win下,防火墙开了端口),老报错:Error while trying to create admin user: Failed to connect to the database: An exception occurred in driver: SQLSTATE[HY000] [2002] No such file or directory