Linux内核裁剪、根文件系统制作、系统烧录
环境:
Redhat5
Mini2451开发板
linux-3.6内核
这几天学习了linux在mini2451开发板上的移植,以及后续的简单字符设备、混杂设备和平台总线驱动的编写,深入感受到了linux的强大和魅力,现将之一一记录。
一、Uboot和Superboot
这次linux移植,我没怎么用到uboot,主要还是使用三星自带的Superboot。uboot还没有来得及去学,只是简单的记录了一些编译uboot的命令,对于怎么把适配2440的uboot改成2451的uboot,这个还不太了解。
1、make distclean //清除原有残留文件
2、make ARCH=arm CROSS_COMPILE=arm-linux- mini2440_config //配置uboot为2440的配置方式
3、make ARCH=arm CROSS_COMPILE=arm-linux- //配置芯片为arm架构,交叉编译工具为arm-linux
二、linux内核的裁剪
linux内核裁剪也是固定的几个步骤,设置好配置文件,在图形化配置界面选中需要的驱动,然后编译内核,这样就完成了内核的定制和裁剪。本实验采用的是linux-3.6内核。(所以使用到的文件都会在博文最后提供下载)
1、make distclean //清除原有文件
2、cp mini2451_linux_config .config //拷贝原有的2451配置文件为.config文件
3、make menuconfig //图形化界面配置驱动等
4、make zImage //编译内核
内核编译完成之后,在linux-3.6/arch/arm/boot目录下,会出现zImage文件,这就是定制完成的内核文件。
三、根文件系统制作
根文件系统制作,本实验采用yaffs文件系统,用的的制作工具为mkyaffs2image(mktools-20130822-2451.tar.gz中)。首先在home目录下新建一个rootfs文件夹,然后在rootfs文件夹中新建etc、usr、home、mnt、tmp、opt、bin、sbin、lib、proc、sys等,将etc.tar.gz文件解压到rootfs文件下,这样在rootfs/etc目录下会生成一些配置文件。
最后一步就是生成一些其他文件夹文件,采用busybox-1.20.2-p1-Mini2451.tgz工具。
1、解压busybox-1.20.2-p1-Mini2451.tgz到home目录,进入解压后目录
2、make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig 显示图形化配置界面
3、Busybox Setting->Build options ->Build busybox as a static binary, 选中, 静态链接
4、Busybox Setting->Build options ->Cross Compiler prefix 配置编译工具为 arm-linux-
5、busybox settings--> Installation option->BusyBox installation prefix 配置安装路径
6、编译make ARCH=arm CROSS_COMPILE=arm-linux-
7、安装 make install
这几步完成之后,可以看到rootfs/usr目录下会出现很多的文件,剩下的还有一步就是复制c库:
cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/ld-linux.so.3 rootfs/lib/
cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/libc.so.6 rootfs/lib/
这样,简单的根文件系统就做好了,接下来就是对rootfs文件系统制作镜像,采用的是mkyaffs2image工具,生成rootfs.img镜像文件。
四、系统烧录
经过了前三个步骤,烧录的准备工作就完成了,接下来就是正式往开发板烧录系统,烧录系统有两种方法,我将之称为卡刷和线刷。
1、卡刷
准备SD卡一张,采用SD-Flasher.exe工具,将SD卡设置为需要的类型。

这边选中Mini2451,在下方点击Scran,如果Available显示No,点击ReLayout!然后在点击Scan,就可以使用卡刷了。

将image文件夹( {MOD}中有)拷贝到SD卡中,打开FriendlyARM.ini文件,将USB-Mode改为No,确保linux的BootLoader、Kernel和rootfs文件系统路径正确。将开发板启动模式改为SD卡启动,等待刷系统成功,再把开关拨动到Nand启动即可。

2、线刷
打开MiniTools,将开发板拨动到Nand,按住独立按键的第一个键,重启即可,选中BootLoader、Kernel和rootfs文件系统,开始刷机,刷完后按下图中选中按钮。

线刷成功!
本实验用到的工具:
Superboot: http://pan.baidu.com/s/1skMWUIx
uboot: http://pan.baidu.com/s/1eRI9BrG
linux-3.6内核: http://pan.baidu.com/s/1micahJU
etc.tar.gz: http://pan.baidu.com/s/1kVQNi31
busybox-1.20.2-p1-Mini2451.tgz: http://pan.baidu.com/s/1jHZw2aU
mktools-20130822-2451.tar.gz: http://pan.baidu.com/s/1kV9mp07
MiniTools: http://pan.baidu.com/s/1qYG3Dla
SD-Flasher.zip: http://pan.baidu.com/s/1geDNSiR
卡刷linux包: http://pan.baidu.com/s/1gf9usCj