首页 > 代码库 > 使用buildroot来编译文件系统

使用buildroot来编译文件系统

用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目录下
   tom@v:images$ mkdir rootfs
   tom@v:images$ sudo tar -xvf rootfs.tar -C rootfs


   生成ramdisk文件
   tom@v:images$ sudo ./genext2fs -b 8192 -d rootfs ramdisk.image
   tom@v:images$ ls
      genext2fs  ramdisk.image  rootfs  rootfs.tar


   用 gzip 压缩  ramdisk.image,生成  ramdisk.image.gz
   tom@v:images$ gzip -9 ramdisk.image 
   tom@v:images$ ls
      genext2fs  ramdisk.image.gz  rootfs  rootfs.tar 
  
   用 mkimage 添加文件头,生成新的uramdisk.image.gz供u-boot使用
tom@v: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文件系统即可.

使用buildroot来编译文件系统