内核移植之修改分区创建文件系统

在上一节最后我们已经成功传递了机器id,启动了内核,但是在挂接跟文件系统的时候出现了错误,这一节的内容我们就来解决这些问题
1、修改内核分区
先来修改内核中的分区信息,后面再来解决文件系统的问题,原来的内核在启动的时候会打印出分区的信息,可以根据这些输出信息来在内核中定位出分区信息的位置,由于我当时在启动的时候没有保存那些信息,所以这里就无法显示,我使用的smdk2440单板的分区信息是在
arch/arm/mach-s3c24xx/common-smdk.c,根据分区名称搜索,修改之后如下

 static struct mtd_partition smdk_default_nand_part[] = {
  [0] = {
   .name = "bootloader",	//分区名称
   .size = SZ_256K,		//大小
   .offset = 0,			//便宜1111111111偏移
  },
    [1] = {
   .name = "params",
   .offset = MTDPART_OFS_APPEND,	//这个宏表示紧跟上面
   .size = SZ_128K,
  },
    [2] = {
   .name = "kernel",
   .offset = MTDPART_OFS_APPEND,
   .size = SZ_2M,
  },
    [3] = {
   .name = "rootfs",
   .offset = MTDPART_OFS_APPEND,
   .size = MTDPART_SIZ_FULL,	//剩下所有的
  }
  };

把修改的文件更新到服务器上,编译内核,make uImage,使用nfs下载
cp arch/arm/boot/uImage /work/nfs_root //nfs目录
nfs 32000000 192.168.1.101:/work/nfs_root/uImage
bootm 32000000

内核启动之后打印出1111111111111111分区信息,已经改变
在这里插入图片描述
第一步就已经完成,emmm,挺简单的,要注意的是,我在做实验的时候,uboot给内核传递的机器id是16a,代表的是smkd2440
在这里插入图片描述
所以修改分区的时候修改的是文件mach-s3c24xx.c,如果实际使用的不是这个机器id,那么就根据内核打印出来的分区信息,查找是哪个文件,去修改即可

2、制作文件系统
这个版本的内核还不支持对yaffs2文件系统的挂载,它在启动的时候找不到这个类型的文件系统
在这里插入图片描述
所以要去创建jffs2文件系统,要使用busybox,版本是busybox-1.20.0,把压缩包上传到服务器上,解压,进入目录
make menuconfig
busybox setting ->
build option ->
cross compiler prefix 配置交叉编译前缀

保存,退出,make
然后创建一个目录,用于安装文件系统 mkdir -c /work/nfs_root/fs_mini_mdev_my
安装文件系统 make install CONFIG_PREFIX=/work/nfs_root/fs_mini_mdev_my
进入这个目录,会发现已经有了一些文件了
在这里插入图片描述
安装应用程序要用的库
查看交叉编译工具,看它的库在哪里
echo $PATH
/home/book/bin:/home/book/.local/bin:/usr/local/arm/4.3.2/bin:/usr/local/sbin:/usr/local/bin:
/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/work/tools/gcc-3.4.5-glibc-2.3.6/bin:/snap/bin

进入目标目录
cd /usr/local/arm/4.3.2/bin/

 find -name lib
  ./lib
  ./arm-none-linux-gnueabi/libc/usr/lib
  ./arm-none-linux-gnueabi/libc/thumb2/usr/lib
  ./arm-none-linux-gnueabi/libc/thumb2/lib
  ./arm-none-linux-gnueabi/libc/lib
  ./arm-none-linux-gnueabi/libc/armv4t/usr/lib    要使用
  ./arm-none-linux-gnueabi/libc/armv4t/lib        要使用
  ./arm-none-linux-gnueabi/lib

只有两个目录是我们要用的 ,因为其他目录里的文件残缺不全,所以并不需要
拷贝usr/lib (在刚在新建的文件夹下先创建/usr/lib目录)
cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib
cp so /work/nfs_root/fs_mini_mdev_my/usr/usr/lib -d(表示原来是连接文件,拷贝之后还是链接文件)

拷贝lib,同上
cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
cp so /work/nfs_root/fs_mini_mdev_my/lib -d

在这里插入图片描述

创建etc目录
因为我之前单独一篇中介绍了制作跟文件系统的过程,这里直接使用上次的etc目录,不懂得可以去看
pwd /work/nfs_root/fs
cp etc/ …/fs_mini_mdev_my/ -rf
cat /etc/init.d/rcS
一些文件的信息如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建dev目录
mkdir dev,这个目录下要有两个必要的文件
创建设备节点
sudo mknod dev/console c 5 1
sudo mknod dev/null c 1 3

其他目录
mkdir proc tmp mnt sys root

制作映像文件
mkfs.jffs2 -n -s 2048 -e 128KiB -d fs_mini_mdev_my -o my.jffs2

-s  flash一个block的大小
-e  擦除快的大小
-d 目录
-o 输出文件

生成my.jffs2文件系统映像,重新下载

//文件系统
  nfs 30000000 192.168.1.101:/work/nfs_root/my.jffs2 
  nand erase.part rootfs
  nand write.jffs2 30000000 260000  $filesize
  set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=jffs2
  //内核
    nfs 32000000 192.168.1.101:/work/nfs_root/uImage 
  bootm 32000000 
``
启动,可以发现,文件系统已经挂载成功,但是出现如下错误
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200426234450138.png)
**搜索exitcode,定位在exit.c**,继续寻找入下定义
	**#define SIGILL   4**
在网上搜索错误类型,发现是什么不支持的指令,因为我们编译文件系统的时候使用的交叉编译工具链带有eabi的属性
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200426234719502.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTc5MTU4MQ==,size_16,color_FFFFFF,t_70)
但是内核不支持,所以就有了这个错误,那就配置内核支持eabi
**make menuconfig** 搜索eabi
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200426234821653.png)
配置
																																																																		![在这里插入图片描述](https://img-blog.csdnimg.cn/20200426234840319.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTc5MTU4MQ==,size_16,color_FFFFFF,t_70)
																																																																		重新编译内核,下载内核和文件系统
	![在这里插入图片描述](https://img-blog.csdnimg.cn/20200426234938948.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTc5MTU4MQ==,size_16,color_FFFFFF,t_70)
																																																																																																																	
终于,可以挂载文件系统正常并启动
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200426235026215.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTc5MTU4MQ==,size_16,color_FFFFFF,t_70)
																																																																												

	

	  












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值