linux内核配置与编译、文件系统的制作

来源:互联网 发布:淘宝骑行头盔 编辑:程序博客网 时间:2024/05/24 07:43
linux内核配置与编译(实验目标机是X210)
----------------------------------------------
1.将桌面上的内核源码解压,并cd进内核解压目录
$ export ARCH=arm


$ ls arch/arm/configs/


$ make x210ii_initrd_defconfig(上面结果的第一个)  


$ make menuconfig


$ make clean


$ make


$ make zImage


其中make menuconfig需要注意:
1.設置交叉編譯器---/opt/arm-2011.08/bin/arm-linux-(老師說2016編譯不了內核)


2.在“Block devices→”中选中“RAM block device support”,并设置适当的ramdisk大小。


3.在“General setup”设置分支里选中“Initial RAM filesystem and RAM disk(initramfs/initrd)support”。並且要去掉Initramfs source file(s)。


4.Console drivers 终端设备驱动配置。为了以后实验中要用到的支持图像的功能,要选择“support for framebuffer devices”和“PXA LCD support“(本实验不需要做这步)


5.在“Multimedia capabilities port drivers->UCB 1400 Touchscreen support on the xsBase 270 Board->GUI to be supported”选中“Qtopia”。这是因为在使用LCD时将能使屏幕持续亮大约十分钟而不睡眠。(还没验证正确性/11.29)


//将目标板的开机画面换成自己设定的画面的做法是:将/usr/src/linux目录下的内核源代码拷贝到自己的目录下,进入这个目录,在arch/arm下找到开发板启动画面的文件,将其删除,用自己的图画替换。有两个小的注意事项是目标板只是别.ppm文件,所以需要改变原来图画的文件格式,可直接改文件后缀名,或者在终端中用命令convert。且图画的文件名必须为linux_logo。 
//(还没验证其正确性)
$ convert linux_logo.jpg linux_logo.ppm
----------------------------------------
将编译的内核文件复制到tftp服务器目录,在目标机中下载并运行
x210# tftp 30008000 zImage


x210# bootm 30008000




文件系统制作过程:
----------------------------------------------
编译BusyBox
----------------------------------------------
将下载的BusyBox软件包解压缩。进入解压目录,执行“make menuconfig”,仿照内核配置编译过程:


1.在Build Option菜单下,选择静态库编译方式,并设定交叉编译器


2.Installation Options配置中,自定义安装路径。编译后的文件系统以这个路径为起点


3.用户可以根据需要对文件系统的功能选项进行配置,这样可以减少文件系统的大小,以节省存储空间
-----------------------------------------------------
下面简要对Busybox的配置作一些说明:  
1.在Build Option菜单下,选择静态库编译方式,这样不用为Busybox提供动态链接库支持。 
 
2.设置交叉编译器的路径,在cross compiler prefix中输入/opt/arm-2011.08/bin/arm-linux-


3.在 Installation Option菜单下,自定义安装目录,一般使用默认目录./_install即可。
  
4.在Linux System Utilities中有一些重要组件,如mount、umount。因此要选上Support mounting NFS file systems,
即支持加载网络文件系统,如果不选此项,则影响与PC机的通信。  


5.在Networking Utilities菜单下配置和网络有关的命令,为了使用网络连接,其中ping和ifconfig必选。 


=================================================
配置完成后便可对BusyBox进行编译(make)和安装(make install),安装完毕,在安装目录下可以看到
bin,sbin和usr(usr目录是否存在取决于配置的安装选项)这些目录。在这些目录里可以看到许多应用程
序的符号链接,这些符号链接都指向BusyBox。
=================================================


配置文件系统
--------------------------------------------------
在BusyBox的安装目录下创建etc目录,在etc下建立inittab,rc,motd三个文件
---------------------------------------
/etc/inittab
=======================================


# /etc/inittab


::sysinit:/etc/init.d/rcS


::askfirst:-/bin/sh


::once:/usr/sbin/telnetd -l /bin/login


::ctrlaltdel:/sbin/reboot


::shutdown:/bin/umount -a -r


----------------------------------------
/etc/rc
========================================
#!/bin/sh


hostname x210


mount -t proc proc /proc


/bin/cat /etc/motd
此文件要求可执行属性:用命令“chmod +x rc”修改其属性。rc文件和其他脚本文件(.sh)第一行的#不是注释。
-----------------------------------------
/etc/motd
=========================================
Welcome to


==================================================


ARM-LINUX WORLD


==================================================


x210v3 @ S5PV210/Cortex-A8
ported by LIUJIAYOU


------------------------------------------
在etc目录下再创建init.d目录
==========================================
$mkdir init.d


$cd init.d


$ln -s ../rc rcS


-------------------------------------------
创建dev目录,并在该目录下建立必要的设备
===========================================
$mknod console c 5 1


$mknod null c 1 3


$mknod zero c 1 5


-------------------------------------------
建立proc空目录,供proc文件系统使用
===========================================
建立lib目录,将交叉编译器链接库路径下的下面几个库复制到lib目录
ln -s ld-2.13.so ld-linux.so.3


ln -s libc-2.13.so libc.so.6


ln -s libm-2.13.so libm.so.6


它们分别是linux的动态加载器、libc标准的c库函数和数学库。


如果BusyBox以静态链接方式编译,没有这些库不影响系统的正常启动,
但会影响其他动态链接的程序运行。
------------------------------------------


至此文件系统的目录构造完毕,从根目录看下去,应该有至少以下几个目录:


bin dev etc lib proc sbin usr(是否存在看BusyBox配置) mntlost+found


-----------------------------------------


它们是下面制作文件系统的基础


===============================================================================================


三--制作ramdisk文件映像


配置内核时ramdisk要求在“Block devices→”中选中“RAM block device support”,并设置适当的ramdisk大小。
在“General setup”设置分支里选中“Initial RAM filesystem and RAM disk(initramfs/initrd)support”。


为了生成并修改ramdisk,需要在主机上创建一个空文件并将它格式化成ext2fs文件系统映像。格式化后的文件就
可以像普通文件系统一样在主机上进行挂载和卸载。挂载后可以进行正常的文件和目录操作,卸载后,如果原映像
文件仍然存在,则更新到卸载之前的操作内容。
-------------------------------------------------
$ dd if=/dev/zero of=ramdisk_img bs=1k count=8192


$ mke2fs ramdisk_img


$ mount ramdisk_img


$ (复制文件系统目录和文件,及其他一些必要的设置//其中dev无法直接复制过去,需要再重新在/mnt/ramdisk目录下再创建dev)


$ umount /mnt/ramdisk


注意,此时虽然ramdisk_img从形式上看和普通文件没什么不同,但它却是一个完整独立的文件系统映像。逻辑上,它和U盘,SD卡甚至硬盘是等同的。


内核支持压缩方式的ramdisk,以节省FLASH占用空间。通常用下面的方式压缩和解压(mount之前必须解压):


$ gzip ramdisk_img      压缩


$ gunzip ramdisk_img.gz


----------------------------------------------------------
bootloader通过bootargs向内核传递信息,提示它挂载ramdisk作为根文件系统。同时ramdisk的映像文件也应装入内存的对应位置:


x210# setenv ramdisk root=/dev/ram rw initrd=0x40000000,8M


x210# setenv bootargs console=ttySAC2,115200 $ramdisk


x210# tftp 0x40000000 ramdisk_img.gz


===========================================================


选做:制作init_ramfs


也可以将之前制作的根文件系统做进内核映像中,使内核成为一个完整的独立系统。
-------------------------------------------------------------
首先,进入根文件系统结构所在目录、mnt/ramdisk,将根文件系统用cpio打包并压缩:


$ find ./ -print |cpio -H newc -o |gzip -9 > ~/ramdisk.cpio.gz


注意将生成的文件ramdisk.cpio.gz放在另外的目录(这里放到用户主目录下),以免被递归。


这种做法不要求制作独立的文件系统。之所以这里使用“/mnt/ramdisk”,是因为之前恰好做过一个完整的根文件系统并挂载到这个目录下。


将生成的文件ramdisk.cpio.gz复制到内核源码目录,并在内核配置选项中的“Initial RAM filesystem and RAM disk”下面的“Initramfs source file(s)”写上这个文件名。


重新编译内核,将该文件编入内核文件zImage,并复制到tftp目录下。


在目标板中加载该内核,启动。



0 0
原创粉丝点击