linux初学-内核编译以及文件系统1
最近正在对ATmel AT9200 的K9s开发板进行熟悉,想移植Linux操作系统到开发板上。学习在linux下的编程技能。涉及到了u-Boot的移植以及编译以及Linux内核的编译。下面就对我近期的操作简要阐述如下:(由于刚刚接触Linux,有错误的地方希望大家指出)。
1。到ftp站点下载交叉编译工具链:ftp.arm.linux.org.uk 上面有2.95.3版本以及3.x版本。(注意 :Linux 2.4.xx及其以下的内核源码用2.95.3的交叉编译器来编译就可以了;而2.6.xx的内核源码一般要用到cross-3.x以上的版本来编译)
2. 读取Readme文件,了解安装路径;一般是/usr/local/arm/
命令如下:
#mkdir /usr/local/arm
#cd /usr/local/arm
#tar jxvf cross-2.95.3.tar.bz2
然后添加路径(设置环境变量):
$cd
$ls -a
$vi .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export TARGET=arm-linux
export PRJROOT=/home/armlinux
export PREFIX=${PRJROOT}/tools
export TARGET_PREFIX=${PREFIX}/${TARGET}
export
PATH=$PATH:$HOME/bin:$PREFIX/bin:/usr/local/arm/2.95.3/bin:/sbin:/usr/sbin:/usr/local/sbin
unset USERNAME
(环境变量的设置涉及到linux下用户的管理,以及shell的编程,由于刚刚接触,对其不甚了解,后面将继续介绍,大家可以参考一下shell的知识,环境变量的设置主要涉及到.bash_profile 和.bashrc两个文件。)
3.交叉编译的工具链建立后,我们就可以去下载linux的内核了。内核可以到www.kernel.org上下载。注意这样下载下来的是标准内核版本,而我们需要的是ARM平台的linux内核。这是通过安装armlinux的内核补丁来完成的。所以我们还必须到ftp.arm.linux.org.uk下载相关的内核补丁。注意版本的一致性! 针对9200,我下载的是 2.4.27 版本,补丁是patch-2.4.27-vrs1.bz2。 原来下载的2.4.18版本,但是该版本的arch/arm/def-config中没有at9200开发板的配置文件。所以采用27版本。
将内核 2.4.27 版本在/usr/local/arm解压(tar jxvf linux-2.4.27.tar.bz2);
将patch- 2.4.27 -vrs1.bz2进行解压(bunzip2 patch-2.4.27-vrs1.bz2),将解压出来的文件拷贝
到 2.4.27 的解压目录内,用目录patch -p1 < patch-2.4.27-vrs1.bz2进行补丁安装;
修改根目录的Makefile文件,只需修改ARCH和CROSS_COMPILE即可。
ARCH :=arm
CROSS_COMPILE=/usr/local/arm/ 3.3.2 /bin/arm-linux-
# make at91rm9200dk_config进行开发板的配置;
#make menuconfig 对内核进行配置,在里面可以看到9200的选项,这就是上面一步添加的。
#make clean dep 建立文件依赖关系
make Image 或者 make zImage。这要看你后面使用什么方式的内核映象。如果是make Image,则生成vmlinux,需要arm-linux-objcopy进行处理,生成uImage影响文件。如果是make zImage,则生成zImage,vmlinux,system.map。
zImage和uImage对应的u-boot处理的方式也不相同。
上面就是我编译内核的过程,可能有很多错误,过程也不尽详细。后续对linux了解更深后,会继续对其修改以及增加内容。