平台:VmWare+Fedora7
版本:Linux2.6.21-1.3194.fc7
1.安装gcc
由于默认安装没有gcc,所以只能选择rpm安装。因为各个安装文件有依赖关系,故按以下顺序安装(安装文件存放在安装光盘的Fedora目录下)才能成功:
rpm -ivh cpp-4.1.2-12(默认已安装)
rpm -ivh gcc-4.1.2-12.i386.rpm
rpm -ivh gcc-c++-4.1.2-12.i386.rpm(C++编译器)
rpm -ivh glibc-devel-2.6-3.i386.rpm
rpm -ivh glibc-headers-2.6-3.i386.rpm
rpm -ivh glibc-common-2.6-3.i386.rpm
rpm -ivh libgcc-4.1.2-12.i386.rpm
查看是否完成: gcc -v
卸载安装(由于依赖性,卸载时按上面的逆顺序卸载): rpm -e XXX.rpm
2.下载linux-2.6.21.tar.bz2(内核源文件和内核版本号匹配)
网址: http://download.chinaunix.net/download/0007000/6156.shtml
将该文件拷贝到/usr/src文件夹下,解压
tar -xjvf linux-2.6.21.tar.bz2
3.安装ncurses-devel(安装文件在Fedora安装光盘的Fedora目录下,安装光盘路径:/media)
rpm -ivh ncurses-5.6-6.20070303.fc7.i386.rpm
rpm -ivh ncurses-devel-6.6-6.20070303.fc7.i386.rpm
4.配置内核生成.conf文件(/usr/src/linux-2.6.21目录下)
make prepare
make menuconfig
相关内核配置方式说明:
make config 命令行界面更新配置
make menuconfig 菜单界面更新配置
make xconfig QT图形界面更新配置
make gconfig GTK图形界面更新配置
make oldconfig 通过已经提供的.config文件更新当前配置
make defconfig 所有选项默认配置
make randconfig 所有选项随机配置
make allmodconfig 所有选项"m"配置
make allyesconfig 所有选项"y"配置
make allnoconfig 所有选项"n"的最小配置
5. 模块安装(/usr/src/linux-2.6.21目录下)
make modules_install
6. 将《Linux设备驱动程序》例子中的misc-modules下的hello.c和Makefile拷贝到/home/hello下
修改Makefile(修改后):
KERNELDIR ?= /usr/src/linux-2.6.21
...
obj-m := hello.o
编译及运行:
make
insmod hello.ko
rmmod hello
运行正常但无打印,这个可以通过dmesg | tail查看(在文件/var/log/messages环形缓冲区中)。
也可以通过修改/etc/syslog.conf的配置将打印信息输出到自定义的文件中。
至此,算是配置好运行环境了。
7. 交叉编译环境的配置
我用的是飞凌OK6410的板子,具体步骤
安装交叉编译器
下载2.6.28的内核源文件拷贝到/usr/src下
此处要修改内核的Makefile(默认是i386的体系结构,改成arm的)
修改hello的Makefile(默认是gcc编译器,改成arm下的gcc编译器)
编译及运行,具体有时间在说吧。 下一篇准备写下 OK6410内核移植(由自带的2.6.28的内核移植到2.6.32)