火云血神

linux系统下SD卡boot image自定义修改方法初探

0
阅读(9240)

首先,利用现有FAT32位的系统SD卡进行启动,通过boot后进入系统后 ,查看系统挂载内容

在shell端输入命令为:

zynq> mount
none on /proc type proc (0)

none on /sys type sysfs (0)
none on /tmp type tmpfs (0)
devpts on /dev/pts type devpts (0)
zynq>

 

可以发现SD卡并没有真正挂载。(/dev/mmcblk0) 

下面创建一个文件夹来实现SD卡的挂载

zynq> cd /
zynq> mkdir sdcard

zynq> ls
bin         lib         lost+found  proc        sdcard      usr
dev         licenses    mnt         root        sys         var
etc         linuxrc     opt         sbin        tmp
zynq>

现在可以发现已经可以挂载SD卡了,下面使用挂载命令

zynq> mount /dev/mmcblk0p1 /sdcard
zynq> cd sdcard/

zynq> ls
BOOT.BIN                devicetree_ramdisk.dtb  zImage
README                  ramdisk8M.image.gz
zynq>

现在已经有SD卡的路径了,证明SD卡已经挂载到linux系统中了。现在开始可以对SD卡映像进行解压、装载、然后改变其配置(此处是我们的一切工作的关键)、然后在进行压缩、之后卸载SD卡

1、首先解压映像、并装载,具体命令为:

zynq> cp /sdcard/ramdisk8M.image.gz /tmp/
zynq> gunzip /tmp/ramdisk8M.image.gz

zynq> mount -o loop /tmp/ramdisk8M.image /mnt/
[  605.300000] EXT4-fs (loop0): couldn't mount as ext3 due to feature incompatibilities
[  605.350000] EXT4-fs (loop0): mounting ext2 file system using the ext4 subsystem
[  605.350000] EXT4-fs (loop0): warning: mounting unchecked fs, running e2fsck is recommended
[  605.360000] EXT4-fs (loop0): mounted filesystem without journal. Opts: (null)
zynq> cd /mnt
zynq> ls
bin         lib         lost+found  proc        sys         var
dev         licenses    mnt         root        tmp
etc         linuxrc     opt         sbin        usr
zynq>

从命令中可以看出,映像已装载,但还不能进行编辑。因此,可以在根目录下/root下创建一个文件,命令为zynqgeek.txt,随便写一些内容进去,以便稍等我们可以证明已经改变。具体命令为:

zynq> cd /mnt/root/
zynq> ls

logo.bin
zynq> touch zynqgeek.txt
zynq> cat > zynqgeek.txt
The ZynqGeek Blog Rocks!
^C
zynq> ls -al
total 4
drwxr-xr-x    2 12319    300           1024 Jan  1 00:11 .
drwxr-xr-x   17 12319    300           1024 Jul 12  2012 ..
-rw-r--r--    1 root     0              512 Jul 12  2012 logo.bin
-rw-r--r--    1 root     0               25 Jan  1 00:11 zynqgeek.txt
zynq> cat zynqgeek.txt
The ZynqGeek Blog Rocks!
zynq>

由此,我们可以看到,该文件以创建,大小为25KB,内容为 "The ZynqGeek Blog Rocks!"

现在已经对镜像内容进行了自定义修正,现在需要卸载影响、重新压缩,并且卸载SD卡。然后重新启动zedboard板子,就可以发现新修正的ramdisk 映像。具体命令为:

zynq> umount -l /mnt
zynq> gzip -9 /tmp/ramdisk8M.image
zynq> mv /tmp/ramdisk8M.image.gz /sdcard/
zynq> umount -l /sdcard/
zynq> mount
none on /proc type proc (0)
none on /sys type sysfs (0)
none on /tmp type tmpfs (0)
devpts on /dev/pts type devpts (0)
zynq>

其中gzip命令 会花费几秒钟。重启板子后,可以发现根目录的变化。

zynq> cd /root
zynq> ls

logo.bin      zynqgeek.txt
zynq> cat zynqgeek.txt
The ZynqGeek Blog Rocks!
zynq>

至此,已经全部完成。