ramdisk uboot
root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# gzip -d umy_ramdisk.image.gz gzip: umy_ramdisk.image.gz: not in gzip format root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# ls kernel_standard_linux my_device_defconfig my_devicetree.dtb my_devicetree.dts my_zynq_defconfig uImage umy_ramdisk.image.gz root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# file umy_ramdisk.image.gz umy_ramdisk.image.gz: u-boot legacy uImage, , Linux/ARM, RAMDisk Image (gzip), 8067184 bytes, Wed Jul 1 08:03:40 2020, Load Address: 0x00000000, Entry Point: 0x00000000, Header CRC: 0x1CC0B4A6, Data CRC: 0x6BC0C2F0 root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# ls kernel_standard_linux my_device_defconfig my_devicetree.dtb my_devicetree.dts my_zynq_defconfig uImage umy_ramdisk.image.gz root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# dumpimage -l umy_ramdisk.image.gz Command 'dumpimage' not found, but can be installed with: apt install u-boot-tools root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# apt install u-boot-tools -y
或者dumpimage -l ramdisk.gz命令查看如下:
dumpimage -l umy_ramdisk.image.gz Image Name: Created: Wed Jul 1 16:03:40 2020 Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 8067184 Bytes = 7878.11 KiB = 7.69 MiB Load Address: 00000000 Entry Point: 00000000
可知ramdisk.gz实际为ramdisk.img,且增加了u-boot头,64Bytes大小。
2.首先去掉ramdisk.gz镜像的前64Bytes数据,通过dd if=ramdisk.gz of=ramdisk bs=64 skip=1命令如下,并通过file ramdisk命令查看如下:
dd if=umy_ramdisk.image.gz of=ramdisk bs=64 skip=1 126049+1 records in 126049+1 records out 8067184 bytes (8.1 MB, 7.7 MiB) copied, 0.144469 s, 55.8 MB/s
root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# ls kernel_standard_linux my_device_defconfig my_devicetree.dtb my_devicetree.dts my_zynq_defconfig ramdisk uImage umy_ramdisk.image.gz root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# file ramdisk ramdisk: gzip compressed data, was "my_ramdisk.image", last modified: Wed Jul 1 08:01:05 2020, from Unix, original size modulo 2^32 16777216 root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional#
可知此时ramdisk为一个gzip压缩的文件。
3.修改ramdisk为*.gz文件格式,并使用gunzip ramdisk.gz命令解压,并用file ramdisk命令查看如下:
root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# mv ramdisk ramdisk.gz root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# gunzip ramdisk.gz root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# file ramdisk ramdisk: Linux rev 1.0 ext2 filesystem data, UUID=b831e2b6-7b3b-4ce1-8015-1022967d076e, volume name "ramdisk" (large files) root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional#
4、mount处理
root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# file ramdisk ramdisk: Linux rev 1.0 ext2 filesystem data, UUID=b831e2b6-7b3b-4ce1-8015-1022967d076e, volume name "ramdisk" (large files) root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# ls kernel_standard_linux my_device_defconfig my_devicetree.dtb my_devicetree.dts my_zynq_defconfig ramdisk tmp uImage umy_ramdisk.image.gz root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# mount ramdisk /tmp root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# ls /tmp/ bin boot dev etc home init lib lost+found media mnt proc run sbin sys tmp usr var root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional#
root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# umount /tmp root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# gzip ramdisk root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# ls kernel_standard_linux my_device_defconfig my_devicetree.dtb my_devicetree.dts my_zynq_defconfig ramdisk.gz tmp uImage umy_ramdisk.image.gz root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# mkimage -A arm -T ramdisk -C gzip -d ramdisk.gz ramdisk.img.gz Image Name: Created: Tue Mar 29 17:48:29 2022 Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 8727782 Bytes = 8523.22 KiB = 8.32 MiB Load Address: 00000000 Entry Point: 00000000 root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional#
root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# mkimage -A arm -T ramdisk -C gzip -d ramdisk.gz ramdisk.img.gz Image Name: Created: Tue Mar 29 17:48:29 2022 Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 8727782 Bytes = 8523.22 KiB = 8.32 MiB Load Address: 00000000 Entry Point: 00000000 root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq/Prebuilt_functional# cd .. root@x86:/home/ubuntu/QEMU_CPUFreq_Zynq# qemu-system-arm -M xilinx-zynq-a9 -serial /dev/null -serial mon:stdio -display none -kernel Prebuilt_functional/uImage -dtb Prebuilt_functional/my_devicetree.dtb --initrd Prebuilt_functional/ramdisk.img.gz -net tap,ifname=qtap,script=no,downscript=no -net nic,model=cadence_gem,macaddr=0e:b0:ba:5e:ba:12 qemu-system-arm: warning: nic cadence_gem.1 has no peer PetaLinux 2016.4 zedboard-zynq7 /dev/ttyPS0 zedboard-zynq7 login: root root@zedboard-zynq7:~# ethtool -h ethtool version 4.17 Usage: ethtool DEVNAME Display standard information about device ethtool -s|--change DEVNAME Change generic options [ speed %d ] [ duplex half|full ] [ port tp|aui|bnc|mii|fibre ] [ mdix auto|on|off ] [ autoneg on|off ] [ advertise %x ] [ phyad %d ] [ xcvr internal|external ] [ wol p|u|m|b|a|g|s|d... ] [ sopass %x:%x:%x:%x:%x:%x ]
如果可知此时ramdisk为一个cpio格式的压缩包如下处理
cpio格式的压缩包
4.创建tmp文件夹,并使用sudo cpio -idv < …/ramdisk命令解压至tmp文件夹,查看如下:
$ mkdir tmp $ cd tmp/ $ sudo cpio -idv < ../ramdisk
此时已将ramdisk.gz文件解压为目录形式,可进行相应修改。
5.修改完,在tmp目录执行如下命令find . |cpio -ov -H newc |gzip > …/ramdisk.img,并返还到上一级目录使用file ramdisk.img命令查看如下:
$ find . |cpio -ov -H newc |gzip > ../ramdisk.img
.
./boot
find: ‘./root’: Permission denied
./boot/zImage
./boot/myd_c335x_emmc.dtb
./boot/myd_c335x.dtb
./linuxrc
./init
./lib
...
var/tmp
./var/www
./libexec
./libexec/rmt
98048 blocks
$ cd ../;file ramdisk.img
ramdisk: gzip compressed data, last modified: Wed Feb 20 05:44:14
可知此时已经打包为gzip格式
6.使用mkimage命令添加uboot头,由于上面显示没有压缩格式,所以打包时选择none,打包完打印信息显示如下:
$ mkimage -n "ramdisk" -A arm -O linux -T ramdisk -C none -a 88080000 -e 88080000 -d ramdisk.img ramdisk.gz
Image Name: ramdisk
Created: Wed Feb 20 14:31:13 2019
Image Type: ARM Linux RAMDisk Image (uncompressed)
Data Size: 50200576 Bytes = 49024.00 kB = 47.88 MB
Load Address: 88080000
Entry Point: 88080000
可知此时已全部还原ramdisk.gz。
7.在使用过程中发现ramdisk文件系统登录输入root用户名后仍需要输入密码,故应在文件系统中去掉密码。在/etc/passwd文件中去掉‘x’ 修改如下:
将 root❌0:0:root:/root:/bin/sh
修改为:root::0:0:root:/root:/bin/sh
修改后,登录时输入root用户名即可登录。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2021-03-29 5G MEC
2021-03-29 E百科 | 第2期 扒一扒能加速互联网的QUIC协议