@

为了快速调试,采用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根文件系统,通过串口我们可进行终端输入输出。

Linux移植到自己的开发板(三)根文件系统的更多相关文章

  1. Linux移植到自己的开发板(二)UBOOT和Linux

    @ 目录 一.uboot跳转到Linux 二. Linux内核启动之解压阶段 三. Linux内核启动之汇编阶段 插曲:关于Kconfig和Makefile 四. Linux内核启动之C语言阶段 五. ...

  2. Linux移植到自己的开发板(一)环境搭建

    环境搭建 vmware:VMware Workstation 15 Pro Linux系统:Ubuntu16.04 x64 1. 在Windows系统安装VMware15软件: 2. 网上下载并解压u ...

  3. Linux移植到自己的开发板(四)问题汇总

    @ 目录 1 使ubuntu支持两个版本的编译链: 2 版本问题: 3 ubuntu版本的vscode下载网速太慢: 4 ubuntu占用空间过大 5 执行make zImage 出错 lzop: n ...

  4. 移植BOA服务器到开发板

    移植BOA 服务器到GEC210 开发板 开发平台主机:VMWare--Ubuntu 10.04 LTS开发板:GEC210 / linux-2.6.35.7编译器:arm-linux-gcc-4.5 ...

  5. 物联网操作系统HelloX已成功移植到MinnowBoard MAX开发板上

    在HelloX开发团队的努力下,以及Winzent Tech公司(总部在瑞典斯德哥尔摩)的支持下,HelloX最新版本V1.78已成功移植到MinnowBoard MAX开发板上.相关源代码已经发布到 ...

  6. live555 交叉编译移植到海思开发板

    本文章参考了.http://blog.csdn.net/lawishere/article/details/8182952,写了hi3518的配置说明.特此感谢 https://blog.csdn.n ...

  7. 移植Mplayer到OK6410开发板

    移植Mplayer到OK6410开发板 作者:vasage 项目需要,需要将Mplayer移植到开发板上,所以今天花了一下下午成功移植,其中参考很多文档,后发现许多文档陈旧,些许文档有少量错误,所以这 ...

  8. 小白自制Linux开发板 三. Linux内核与文件系统移植

    上一篇完成了uboot的移植,但是想要愉快的在开发板上玩耍还需要移植Linux内核和文件系统. 1.Linux内核 事实上对于F1C100S/F1C200S,Linux官方源码已经对licheepi ...

  9. u-boot-2011.06在基于s3c2440开发板的移植之引导内核与加载根文件系统

    http://www.linuxidc.com/Linux/2012-09/70510.htm  来源:Linux社区  作者:赵春江 uboot最主要的功能就是能够引导内核启动.本文就介绍如何实现该 ...

随机推荐

  1. insert/delete/select/update 以及一些在select中常用的函数之类的

    crud程序员:create,read,update.delete 一.insert 细节说明: 1.插入的数据应与字段的数据类型相同.比如把'abc'添加到int类型会错误2.数据的长度应在列的规定 ...

  2. Solution -「HNOI 2009」「洛谷 P4727」图的同构计数

    \(\mathcal{Description}\)   Link.   求含 \(n\) 个点的无标号简单无向图的个数,答案模 \(997\). \(\mathcal{Solution}\)   首先 ...

  3. Vue2.0源码学习(1) - 数据和模板的渲染(上)

    准备 一.首先去GitHub上把vue源码download下来,传送门:https://github.com/vuejs/vue 二.搭建一个vue-cli跑起来,用于代码调试,不看着代码动起来只看源 ...

  4. 利用DP-SSL对少量的标记样本进行有效的半监督学习

    作者 | Doreen 01 介绍 深度学习之所以能在图像分类.自然语言处理等方面取得巨大成功的原因在于大量的训练数据得到了高质量的标注. 然而在一些极其复杂的场景(例如:无人驾驶)中会产生海量的数据 ...

  5. 如何设置IPv4和IPv6报文的DSCP值——网络测试仪实操

    一.操作说明 在QoS测试中,经常要设置不同优先级的报文,来验证被测设备对于优先级的调度.所以,我们就要了解如何设置IPv6和IPv6报文中的DSCP(大部分使用DSCP值,也会用到TOS值) 这里我 ...

  6. SaccadeNet:使用角点特征进行two-stage预测框精调 | CVPR 2020

    SaccadeNet基于中心点特征进行初步的目标定位,然后利用初步预测框的角点特征以及中心点特征进行预测框的精调,整体思想类似于two-stage目标检测算法,将第二阶段的预测框精调用的区域特征转化为 ...

  7. Mac下的平铺式桌面 - Yabai

    Mac下的平铺式桌面 - Yabai 近来无事,凑着周末休息的时间,想折腾一下 Mac.很久之前就有朋友给我推荐过一款名为"Yabai"的平铺式桌面管理软件,今天,就折腾起来了. ...

  8. Java:IO流(二)——InputStream/OutputStream具体用法:FileXXXStream、ByteArrayXXXStream

    1.说明 InputStream和OutputStream是Java标准库中最基本的IO流,它们都位于java.io包中,该包提供了所有同步IO的功能. 2.模块:java.io.InputStrea ...

  9. 解决 Page 'http://localhost:63342/v3/js/math/math.map' requested without authorization页面未授权问题

    用webstorm调试页面时,老是弹出对话框说页面未授权,如下图: 解决方法尝试了两种都有效,感觉第一种是正解通用,第二种大家也可以了解一下作为参考 第一种: File--Settings如下图 第二 ...

  10. sprintf的用法总结

    大概知道sprintf的用法,今天在CSDN上看到一篇关于sprintf比较好的总结,现在抄下来,emmmmmmm....... srpintf()函数的功能非常强大:效率比一些字符串操作函数要高:而 ...