Linux内核移植 上一节介绍了u-boot的移植,这一节来介绍Linux内核移植。 工具和源码在路径:F:韦东山CD1_主光盘system。 通过Samba,将工具和源码拷贝到共享目录,Samba配置详见相关文章,执行以下命令。 tar xjf linux-2.6.22.6.tar.bz2 //解压linux内核源码包 cd linux-2.6.22.6 //进入内核源码目录 patch -p1 < ../linux-2.6.22.6_jz2440.patch //打补丁,命令为patch,-p1中的1是指忽略掉第 一个目录,p只路径path make s3c2410_defconfig //产生配置文件 执行上述命令后,将会在 linux-2.6.22.6跟目录生成.config文件。 也可以通过命令:cp config_厂家 .config 来拷贝配置文件 在本实验中,打完补丁后,会在根目录生成config_ok文件, 我们直接执行命令:cp config_ok .config 命令即可。 make menuconfig //进入菜单配置界面,一定要选择以下菜单,否则会导致引导根文件系 统失败 Kernel Features ---> Use the arm EABI to compile the kernel Allow old ABI binaries to run with this kernel (EXPERIMENTAL) (NEW) File system --》 Miscellaneous filesystems-------》 YAFFS2 file system support(选中) 如果没有yaffs2选项,那是yaffs文件系统补丁包没有打上,选中支持yaffs2才能引导yaffs2文件系统。 倘若不选择上述菜单,会导致linux内核引导根文件系统的时候,卡死在这里 block 535 is bad block 809 is bad block 937 is bad block 1898 is bad VFS: Mounted root (yaffs filesystem). Freeing init memory: 136K 原因在于:编译内核和busybox使用的编译器是arm-linux-gcc 4.3.2,而这个编译器默认是打开"EABI选项"的,这样编译出来的busybox就是EABI的。但是内核编译的时候,默认是把"EABI选项"关掉的。所以busybox和内核无法正常配合。把"EABI选项"打开,重新编译内核后,一切正常。 可能遇到的问题 mount -t nfs -o nolock 192.168.1.132:/share /mynfsc mount: mounting 192.168.1.132:/share on /mynfsc failed: Protocol not supported 原因:内核配置有问题,没有支持 NFS 客户端: 涂蓝选项选中,就可以了。 kernel配置
network filesystem-> ·Enable NFS file system ·NFS client support ·NFSV3 client support
还有就是busybox中的mount要支持nfs make uImage //生成内核镜像文件 UIMAGE arch/ARM/boot/uImage "mkimage" command not found - U-Boot images will not be built 该镜像文件在目录:arch/arm/boot/,如果在该目录找不到uImage,需要转换工具,到u-boot的tools目录u-boot-1.1.6tools将mkimage工具拷贝到linux系统的/usr/bin/目录下,再次重新make clean,make 即可在arch/arm/boot/目录下生成uImage 通过u-boot下载uImage,重启看现象,内核移植完毕。
|