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用户名即可登录。
 

posted on   tycoon3  阅读(277)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源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协议

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示