内核移植及常见问题汇总

移植内核的基本操作步骤:
1.修改Makefile中的架构信息和交叉编译信息。
2.寻找内核中可用的默认配置  一般使用 find -name "*defconfig"
3.找到默认的配置后,使用make xxx_defconfig
4.make uImage 并将内核拷贝到可以启用虚拟机的nfs服务的目录中去
问题1:启动uboot的nfs服务是,发现最后会出现T T T T T *** ERROR: Cannot umount字样。
解决方法:sudo vi /etc/hosts
    单板uboot设置的IP /work/nfs_root
   
问题2:启动内核,出现乱码
解决方法: set machid 16a  //smdk2440
    set machid 7cf  //mini2440
   
    依旧出现乱码
    set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=jffs2
    save
   
问题3: 未找到根文件系统
解决方法:修改内核中默认的分区方式
制作根文件系统:
1.交叉编译busybox
2.创建根文件目录
3.编译 make
4.安装 make install CONFIG_PREFIX=根文件目录
5.安装glibc库,根据交叉编译工具链的路径找到glibc库
 mkdir 根文件目录/lib
 mkdir 根文件目录/usr/lib 
 cp 交叉编译工具链路径/arm-none-linux-gnueabi/libc/armv4t/usr/lib/*so* 根文件目录/usr/lib/ -d
 cp 交叉编译工具链路径/arm-none-linux-gnueabi/libc/armv4t/lib/*so* 根文件目录/lib/ -d
6.构建etc目录
 创建inittab
 创建fstab,挂载当中的所有文件系统
 创建init.d/rcS,执行脚本
7.构建dev目录
 创建console、null设备节点
 mknod dev/console c 5 1
 mknod dev/null c 1 3
8.构建虚拟文件系统需要挂载的其他目录
 mkdir proc mnt sys root tmp
9.制作映像文件
 cd mtd-utils-05.07.23/util/
 make
 sudo make install
 mkfs.jffs2 -n -s 2049 -e 128KiB -d 根文件系统所在目录 -o 根文件系统名称

下载根文件系统到nand中
nfs 30000000 192.168.2.3:/work/nfs_root/fs_mdev_new.yaffs2
nand erase.part rootfs
nand write.yaffs2 30000000 根文件系统所在分区起始地址 $filesize
内核裁剪原则,目的就是将内核烧写到指定大小的分区中。
1.将内核所支持的单板进行裁剪掉
2.将内核支持的多种文件系统根据实际情况进行裁剪。
3.根据内核打印信息,去掉无需的驱动。
 
 
posted @ 2020-04-24 18:50  小丑喵  阅读(330)  评论(0)    收藏  举报