ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux移植到自己的开发板(三)根文件系统

2022-03-02 10:04:16  阅读:370  来源: 互联网

标签:ramdisk busybox lib 文件系统 cd Linux 开发板 arm rootfs


@

目录

为了快速调试,采用ramdisk进行根文件系统测试。要使内核能挂载ramdisk根文件系统,需要做如下工作:

1 Linux内核配置

(注意::测试了linux2.6linux4.14,以下流程都是一样的)
执行make menuconfig,并做如下配置:
a):General setup-->选择Initial RAM filesystem and RAM disk (initramfs/initrd) support项
b):Device Drivers-->Block devices-->选择 RAM disk support 项,Default RAM disk size (kbytes)设为12MB,即12288(kbytes)
在这里插入图片描述

c):File system-->选上Second extended fs support和Ext2 extended attributes
在这里插入图片描述

内核配置完成,make uImage生成镜像文件即可。

2 ramdisk制作

a)创建根文件系统目录:

#cd /home/test
#mkdir rootfs
#cd rootfs
#mkdir bin dev etc lib proc sbin sys usr mnt tmp var
#mkdir usr/bin usr/lib usr/sbin lib/modules

b)创建最基本的设备文件:

#cd dev
#mknod -m 666 console c 5 1
#mknod -m 666 null c 1 3
#cd ..

c)创建最简单的inittab文件:

#cd etc
#gedit inittab

inittab文本中输入以下内容 console::askfirst:-/bin/sh

3 busybox配置

3.1 busybox下载设置
下载busybox-1.7.0.tar.bz2
(新测试了不同版本 busybox-1.20.2.tar.bz2、busybox-1.33.1.tar.bz2都是可用的)
(新测试了arm-linux-gcc 4.3.2、arm-linux-gcc 4.4.3都是可用的)

进入工作目录,比如#cd /home/test
解压busybox:#tar xjf busybox-1.7.0.tar.bz2

#cd busybox-1.7.0
#make menuconfig

a)设置“TAB”键补全
Busybox Settings--->Busybox Library Tuning--->[*] Tab completion
b)在BusyBox installation prefix选项框设置安装目录
Busybox Settings--->Installation Options--->(/home/test/rootfs) BusyBox installation prefix

3.2 busybox安装
a)修改busybox顶层目录的Makefile文件,修改如下两行:

ARCH	 ?= arm
CROSS_COMPILE	?= arm-linux-
如果是高版本编译器使用:
CROSS_COMPILE	?= arm-none-linux-gnueabi-

b)然后执行make命令进行编译。
c)编译完成后执行:"make CONFIG_PREFIX=dir_path install"就可以将busybox安装到目录dir_path下。如果只执行"make install"不指定CONFIG_PREFIX目录,那么会安装到Busybox Installation Prefix (/xxx/rootfs)设置的目录里。
d)因为我们使用动态链接库,需要将编译链的库拷贝到根文件系统目录lib中,精华如下:

#cd xxx/gcc-3.4.5-glibc-2.3.6/arm-linux/lib
#cp *.so* /home/test/rootfs/lib –d  (-d是拷贝动态链接,必须加上)

或者(4.3.2版本):
#cd xxx/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
#cp *.so* /home/test/rootfs/lib –d

或者(4.4.3、4.5.1版本):
#cd xxx/4.4.3/arm-none-linux-gnueabi/lib
#cp *.so* /home/test/rootfs/lib –d

对于编译器,使用哪个版本的编译busybox,就必须拷贝哪个版本的动态库到rootfs,测试了不同版本的,运行报错。

到这里,最简根文件系统就创建完成。

4 genext2fs生成镜像

下载genext2fs-1.4.1.tar.gz;
使用tar -zxf genext2fs-1.4.1.tar.gz进行解压;

#cd genext2fs-1.4.1
#./configure    //生成Makefile文件
#make
#make install

#cd /home/test //安装好genext2fs后进入创建的根文件系统的上级目录
#genext2fs -b 12288 -d rootfs ramdisk //后续生成镜像可直接从这一步开始

#gzip -9 -f ramdisk

执行完就在当前目录下生成了ramdisk镜像文件ramdisk.gz

开发板运行UBOOT后,首先将内核镜像uImage下载到DDR地址0xX1000000,再将根文件系统镜像ramdisk.gz下载到DDR地址 0xX2000000,bootargs设为如下参数:

initrd=0xX2000000,0xC00000 root=/dev/ram0 rw console=ttySAC0,115200 mem=128M init=/linuxrc

再输入启动指令bootm X2000000

UBOOT跳转到Linux运行,Linux成功加载ramdisk根文件系统,通过串口我们可进行终端输入输出。

标签:ramdisk,busybox,lib,文件系统,cd,Linux,开发板,arm,rootfs
来源: https://www.cnblogs.com/solo666/p/15953706.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有