2015-1-9
用buildroot来制作文件系统很方便,编译出来的文件系统是直接可用的,不用添加脚本等麻烦的工作,很多的库和app都可以
直接添加到文件系统里边,如常用的udhcpc,tftp等.本文以以ZYNQ 7010为例,制作一个ramdisk的文件系统,在z-turn开发
板上运行.
1. 到buildroot目录下执行make ARCH=arm menuconfig
Target options配置,这个根据CPU的手册来配置
2. toolchain设置,这里不使用buildroot编译出来的gcc, 使用外部的gcc来编译文件系统
主要注意External toolchain kernel headers series (3.0.x)这个选项的设置,选择编译工具的内核版本号,文件
Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/arm-xilinx-linux-gnueabi/libc/usr/include/linux/version.h
保存有版本号(每个编译工具都有这个文件的),是十进制的,把它转换成16进制就可以看出来版本号是多少,如我的version.h是这样
#define LINUX_VERSION_CODE 196609
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
196609版本的16进制是0x30001,那版本号就是3.00.01,就是3.0.1了,所以这里选3.0.x
3. System configration 的设置
/dev management选mdev,启动的时候自动创建/dev目录下的设备节点.
这个功能还需要内核的配合才行,内核需要配置:
Device Drivers->Generic Driver Options:选上下面这两项
[*] Maintain a devtmpfs filesystem to mount at /dev
[*] Automount devtmpfs at /dev, after the kernel mounted the rootfs
控制台的配置,也是在System configration下
[*] Run a getty (login prompt) after boot
getty options --->
(ttyPS0) TTY port --这里配置好串口号和速率
Baudrate (115200) --->
(vt100) TERM environment variable
() other options to pass to getty
4. 其他配置说明
只要这3项配置好了,编译出来的相当于一个最小的文件系统,如果需要添加其他的app,可以在
Target packages里边配置,其他选项可以不用动.
5. 编译
输入make,如果app是第一次编译,会自动从网上下载到dl目录下,下次编译就不会下载了.
编译出来的文件系统在output/image/rootfs.tar,用该文件来制作ramdisk
6. 制作ramdisk
制作ramdisk需要genext2fs, 该工具可以用buildroot来编译出来:
Host utilities
[*] host genext2fs 选上这个,编译出来的genext2fs在output/build/host-genext2fs-1.4.1目录下
到output/image目录下,解压文件系统到rootfs目录下
[email protected]:images$ mkdir rootfs
[email protected]:images$ sudo tar -xvf rootfs.tar -C rootfs
生成ramdisk文件
[email protected]:images$ sudo ./genext2fs -b 8192 -d rootfs ramdisk.image
[email protected]:images$ ls
genext2fs ramdisk.image rootfs rootfs.tar
用 gzip 压缩 ramdisk.image,生成 ramdisk.image.gz
[email protected]:images$ gzip -9 ramdisk.image
[email protected]:images$ ls
genext2fs ramdisk.image.gz rootfs rootfs.tar
用 mkimage 添加文件头,生成新的uramdisk.image.gz供u-boot使用
[email protected]:images$ mkimage -A arm -T ramdisk -C gzip -n Ramdisk -d ramdisk.image.gz uramdisk.image.gz
Image Name: Ramdisk
Created: Fri Jan 9 18:07:48 2015
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 2376529 Bytes = 2320.83 kB = 2.27 MB
Load Address: 00000000
Entry Point: 00000000
将uramdisk.image.gz copy到SD卡上,从SD卡启动,设置内核参数挂载ramdisk文件系统即可.