玩转mini2440开发板之【rootfs根文件系统全过程记录】

前段时间研究了一下如何使用busybox编译和生成最简linux根文件系统(rootfs),并在mini2440开发板上使用NFS网络文件系统进行挂载启动,今天继续研究如何将该根文件系统烧录到开发板上去,以便实现本地启动,无需借助NFS。

第1步、生成rootfs根文件系统

这一步可参考我另一篇博客(如何使用busybox编译和生成最简linux根文件系统(rootfs))中的方法和步骤。如果想简单起见,也可直接下载我已经编译好的成果(mini2440最精简的rootfs文件系统)。里面的压包解开来就是一个rootfs根文件系统的全部目录,可以直接用于下一步的操作。

第2步、生成img镜像文件

这里我们按照友善之臂的官方推荐,使用mkyaffs2image工具。首先将光盘里的mkyaffs2image.tgz解压出来。具体方法是,进入到mkyaffs2image.tgz所在的目录,然后使用下面的命令:

sudo tar -xvzf mkyaffs2image.tgz -C /

便可将压缩包里的工具解压到/usr/sbin目录下了。注意此处会解压出2个文件,分别是:

  • usr/sbin/mkyaffs2image
  • usr/sbin/mkyaffs2image-128M

其中第一个mkyaffs2image是制作适用于NANDFLASH为64M版本文件系统映象的工具,mkyaffs2image-128M则是 制作适用于128M/256M/512M/1GB版本文件系统映象的工具。由于我本人的开发板是64M的版本,因此以下我直接使用mkyaffs2image,请各位根据自己的情况调整。

然后进入到你所生成好的rootfs根文件系统所在的目录,比如我的就放在/opt/FriendlyARM/mini2440目录下,采用mkyaffs2image工具直接进行打包即可:

leon@Ubuntu:/opt/FriendlyARM/mini2440$ mkyaffs2image rootfs rootfs.img
mkyaffsimage: image building tool for YAFFS built Apr 29 2008
Processing directory rootfs into image file rootfs.img
Object 257, rootfs/sys is a directory
Object 258, rootfs/.ash_history is a file, 1 data chunks written
Object 259, rootfs/sbin is a directory
Object 260, rootfs/sbin/loadkmap is a symlink to "../bin/busybox"
Object 261, rootfs/sbin/blockdev is a symlink to "../bin/busybox"
Object 262, rootfs/sbin/mkdosfs is a symlink to "../bin/busybox"
Object 263, rootfs/sbin/klogd is a symlink to "../bin/busybox"
Object 264, rootfs/sbin/mdev is a symlink to "../bin/busybox"
Object 265, rootfs/sbin/lsmod is a symlink to "../bin/busybox"
【这里略去1234567.......】
Object 649, rootfs/usr/bin/beep is a symlink to "../../bin/busybox"
Object 650, rootfs/usr/bin/unexpand is a symlink to "../../bin/busybox"
Object 651, rootfs/usr/bin/sort is a symlink to "../../bin/busybox"
Object 652, rootfs/usr/bin/xargs is a symlink to "../../bin/busybox"
Object 653, rootfs/usr/bin/uuencode is a symlink to "../../bin/busybox"
Object 654, rootfs/usr/bin/unxz is a symlink to "../../bin/busybox"
Object 655, rootfs/usr/bin/free is a symlink to "../../bin/busybox"
Object 656, rootfs/usr/bin/rx is a symlink to "../../bin/busybox"
Object 657, rootfs/usr/bin/sha256sum is a symlink to "../../bin/busybox"
Object 658, rootfs/linuxrc is a symlink to "bin/busybox"
Operation complete.
402 objects in 13 directories
12103 NAND pages
FriendlyARM Computer Technology Inc.

工具就会将rootfs目录打包成一个img镜像文件,如下:

leon@Ubuntu:/opt/FriendlyARM/mini2440$ ll
总用量 6276
drwxrwxr-x  8 leon leon    4096  815 16:13 ./
drwxr-xr-x  4 leon leon    4096  815 10:47 ../
drwxrwxr-x 11 leon leon    4096 106  2017 rootfs/
-rw-------  1 leon leon 6390384  815 16:13 rootfs.img

第3步、将镜像文件烧录到开发板中

这里我使用的boot是supervivi及其配套的下载工具,具体的步骤请参见我的另一篇博客(如何在64位WIN7/WIN10系统中安装mini2440开发板的USB驱动和调试工具)。

给开发板上电,串口端会输出以下提示信息:

##### FriendlyARM BIOS for 2440 #####
[x] bon part 0 320k 2368k
[v] Download vivi 
[k] Download linux kernel 
[y] Download root_yaffs image 
[a] Absolute User Application
[n] Download Nboot 
[l] Download WinCE boot-logo
[w] Download WinCE NK.bin 
[d] Download & Run 
[z] Download zImage into RAM 
[g] Boot linux from RAM 
[f] Format the nand flash 
[b] Boot the system 
[s] Set the boot parameters 
[u] Backup NAND Flash to HOST through USB(upload) 
[r] Restore NAND Flash from HOST through USB 
[q] Goto shell of vivi 
[i] Version: 1026-12
Enter your selection: 

直接输入y,启动下载流程。然后在SuperViVi USB Transfer Utility中,点击upload选择img镜像文件即可。

这里写图片描述

这里写图片描述

同时,串口助手端也会给出信息:

Now, Downloading [ADDRESS:30000000h,TOTAL:6390394]
Downloaded file at 0x30000000, size = 6390384 bytes
Flash params: oobsize = 16, oobblock = 512, erasesize = 16384, partition size = 61456384
Erasing and programming NAND with yaffs image
 Block erasing(addr/count) --- Block bad(addr/count) --- Block processed/All(%)
--------------------------------------------------------------------------------
     0x03ff8000/03749            0x030e8000/00002           03751/03751=100%
Load yaffs OK:
Blocks scanned: 3751, Blocks erased: 3749, Blocks are bad: 2
RECEIVED and Writed FILE SIZE: 6390394 (156KB/S, 40S)

然后给开发板断电重启,就会看到所下载的rootfs根文件系统已经稳稳的运行在你的mini2440开发板中了。

[root@LEON2440 ~]# ls -l
total 3928
drwxrwxr-x    1 1000     1000           512 Feb  3  2017 bin
-rw-rw-r--    1 1000     1000            71 Oct  3  2017 changelog@leon
drwxr-xr-x    2 root     root             0 Jan  1 00:00 dev
drwxrwxr-x    1 1000     1000           512 Feb  3  2017 etc
lrwxrwxrwx    1 1000     1000            11 Feb  3  2017 linuxrc -> bin/busybox
drwx------    1 root     root           512 Jan  1 00:00 lost+found
drwxrwxr-x    1 1000     1000           512 Oct  3  2017 mnt
dr-xr-xr-x   25 root     root             0 Jan  1 00:00 proc
drwxrwxr-x    1 1000     1000           512 Feb  3  2017 sbin
drwxr-xr-x   11 root     root             0 Jan  1 00:00 sys
drwxr-xr-x    2 root     root             0 Jan  1 00:00 tmp
-rw-rw-r--    1 1000     1000       1751132 Feb  4  2017 uImage.img
drwxrwxr-x    1 1000     1000           512 Feb  3  2017 usr

猜你喜欢

转载自blog.csdn.net/LEON1741/article/details/81707575