嵌入式Linux学习-------Linux内核移植

2019-07-12 19:58发布

二、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 客户端: ---Network File Systems     [*]   Provide NFSv3 client support
涂蓝选项选中,就可以了。 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.6 ools将mkimage工具拷贝到linux系统的/usr/bin/目录下,再次重新make clean,make 即可在arch/arm/boot/目录下生成uImage   通过u-boot下载uImage,重启看现象,内核移植完毕。     接下来讲根文件系统的移植。