实验三 Linux内核编译实验
实验目的:了解并掌握内核编译过程,进一步理解make命令,学习Makefile文件,并对linux 2.4.18 和linux2..6.18内核有初步的了解,学习里面的编码,弄明白它们代表的什么意思。
实验内容:
一.解包内核源码文件
在自己的主目录下,输入cp –a /tmp/linux-
2.4.18
-br.tar.gz ./ 将linux-2.4.18的内核复制到自己的主目录下,再输入cp –a /tmp/linux-2.6.18.tar.bz2 ./ 将linux-2.6.18的内核也复制到自己的主目录下。
输入tar –zxvf linux-2.4.18-br.tar.gz 和 tar –jxvf linux-2.6.18.tar.bz2 分别解压这两个文件
二.修改Makefile
进入linux目录,用vi查看Makefile文件,改成下列配置。
2.4.x内核:
ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
CROSS_COMPILE =
将这两行改为:
ARCH ?= arm
CROSS_COMPILE ?= /opt/host/armv 4l /bin/armv 4l -unknown-linux-
2.6.x 内核:
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
将这两行改为:
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
三. 编译
# cd /linux内核源码目录
# make mrproper
# make smdk2410_config (对内核2.4)
# make menuconfig
如选择System Type后,出现:
支持启动;改变 AIJI;支持s3c2410 USB 接口;支持s3c2410 USB驱动;
支持ARM920T CPU 空闲;支持ARM920T I-缓存;支持ARM920T D-缓存;
# make dep ----- 内核2.6不需要此步
# make zImage ----- bzImage 与 zImage区别
# make modules 配置时有模块选项,则需要这后两步
# make modules_install INSTALL_MOD_PATH=$TARGETDIR
General setup下:(普通的属性配置)
ROM的基地址设为0 ;支持热插驱动;支持网络;
MTD下:(存储器技术驱动)
支持存储器技术驱动;支持MTD;字符驱动直接接收为MTD驱动;缓存块驱动接收为MTD驱动;
File systems
文件系统。内容又太多了,老法子,在缺省选项的基础上进行修改。介绍以下几项:
Quota support:Quota可以限制每个用户可以使用的硬盘空间的上限,在多用户共同使用一台主机的情况中十分有效。
DOS FAT fs support:DOS FAT文件格式的支持,可以支持FAT16、FAT32。
ISO 9660 CD-ROM file system support:光盘使用的就是ISO 9660的文件格式。
NTFS file system support:ntfs是NT使用的文件格式。
/proc file system support:/proc文件系统是Linux提供给用户和系统进行交互的通道,建议选上,否则有些功能没法正确执行。
还有另外三个大类都规到这儿了:Network File Systems(网络文件系统)、Partition Types(分区类型)、Native Language Support(本地语言支持)。值得一提的是Network File Systems里面的两种:NFS和SMB分别是Linux和Windows相互以网络邻居的形式访问对方所使用的文件系统,根据需要加以选择。
Block devices
块设备支持。这个就得针对自己的情况来选了,简单说明一下吧:
Normal PC floppy disk support:普通PC软盘支持。这个应该必选。
XT hard disk support:
Compaq SMART2 support:
Mulex DAC960/DAC1100 PCI RAID Controller support:RAID镜像用的。
Loopback device support:
Network block device support:网络块设备支持。如果想访问网上邻居的东西,就选上。
Logical volume manager(LVM)support:逻辑卷管理支持。
Multiple devices driver support:多设备驱动支持。
RAM disk support:RAM盘支持。
实验总结:
在实验中遇到一些问题,例如在复制的时候我记得原来用cp –a /tmp/linux- 2.4.18 -br.tar.gz 就可以了,可这次不行必须要用cp –a /tmp/linux- 2.4.18 -br.tar.gz ./到自己的目录下。还有解压linux-2.6.18时,必须要解压两次,才能成功。不过最后都顺利解决了问题,在编译S 3C 2410时又一次复习了make menuconfig的编译配置。逐步慢慢理解嵌入式系统这门课应该怎么学。