Linux移植到自己的开发板(三)根文件系统
@
为了快速调试,采用ramdisk进行根文件系统测试。要使内核能挂载ramdisk根文件系统,需要做如下工作:
1 Linux内核配置
(注意::测试了linux2.6和linux4.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移植到自己的开发板(三)根文件系统的更多相关文章
- Linux移植到自己的开发板(二)UBOOT和Linux
@ 目录 一.uboot跳转到Linux 二. Linux内核启动之解压阶段 三. Linux内核启动之汇编阶段 插曲:关于Kconfig和Makefile 四. Linux内核启动之C语言阶段 五. ...
- Linux移植到自己的开发板(一)环境搭建
环境搭建 vmware:VMware Workstation 15 Pro Linux系统:Ubuntu16.04 x64 1. 在Windows系统安装VMware15软件: 2. 网上下载并解压u ...
- Linux移植到自己的开发板(四)问题汇总
@ 目录 1 使ubuntu支持两个版本的编译链: 2 版本问题: 3 ubuntu版本的vscode下载网速太慢: 4 ubuntu占用空间过大 5 执行make zImage 出错 lzop: n ...
- 移植BOA服务器到开发板
移植BOA 服务器到GEC210 开发板 开发平台主机:VMWare--Ubuntu 10.04 LTS开发板:GEC210 / linux-2.6.35.7编译器:arm-linux-gcc-4.5 ...
- 物联网操作系统HelloX已成功移植到MinnowBoard MAX开发板上
在HelloX开发团队的努力下,以及Winzent Tech公司(总部在瑞典斯德哥尔摩)的支持下,HelloX最新版本V1.78已成功移植到MinnowBoard MAX开发板上.相关源代码已经发布到 ...
- live555 交叉编译移植到海思开发板
本文章参考了.http://blog.csdn.net/lawishere/article/details/8182952,写了hi3518的配置说明.特此感谢 https://blog.csdn.n ...
- 移植Mplayer到OK6410开发板
移植Mplayer到OK6410开发板 作者:vasage 项目需要,需要将Mplayer移植到开发板上,所以今天花了一下下午成功移植,其中参考很多文档,后发现许多文档陈旧,些许文档有少量错误,所以这 ...
- 小白自制Linux开发板 三. Linux内核与文件系统移植
上一篇完成了uboot的移植,但是想要愉快的在开发板上玩耍还需要移植Linux内核和文件系统. 1.Linux内核 事实上对于F1C100S/F1C200S,Linux官方源码已经对licheepi ...
- u-boot-2011.06在基于s3c2440开发板的移植之引导内核与加载根文件系统
http://www.linuxidc.com/Linux/2012-09/70510.htm 来源:Linux社区 作者:赵春江 uboot最主要的功能就是能够引导内核启动.本文就介绍如何实现该 ...
随机推荐
- 基于Xilinx XCKU115的半高PCIe x8 硬件加速卡
一.板卡概述 本板卡系我公司自主研发,采用Xilinx公司的XCKU115-3-FLVF1924-E芯片作为主处理器,主要用于FPGA硬件加速.板卡设计满足工业级要求.如下图所示: 二.功能和技术指标 ...
- 私有化轻量级持续集成部署方案--05-持续部署服务-Drone(上)
提示:本系列笔记全部存在于 Github, 可以直接在 Github 查看全部笔记 持续部署概述 持续部署是能以自动化方式,频繁而且持续性的,将软件部署到生产环境.使软件产品能够快速迭代. 在之前部署 ...
- 『无为则无心』Python面向对象 — 47、Python中的self详解
目录 1.self的作用 2.self的使用注意事项 (1)self代表类的实例,而非类 (2)self不必非写成self,只是一种规范. (3)类中方法的形参中一定要写self,包括内置函数 (4) ...
- 018 磁盘 IO 性能监控/压测工具(sar、iotop、fio、iostat)
1 sar 命令查看当前磁盘 IO 读写 sar(System Activity Reporter 系统活动情况报告)是 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告 ...
- [旧][Android] Retrofit 源码分析之执行流程
备注 原发表于2016.04.23,资料已过时,仅作备份,谨慎参考 前言 由于是第一次自己翻看源代码进行学习,加上基础不好,在看源代码的过程中简直痛苦不堪,但同时也暴露出了自己的许多问题.我觉得学习源 ...
- RFC3918组播组容量测试——网络测试仪实操
一.简介 1.RFC3918简介 历史 · 在1999年3月成为正式标准 功能 · 评测网络互连设备或网络系统的性能 · 网络设备: 交换机,路由器- 内容 · 定义了一整套测试方法,为不同厂家的设备 ...
- webpack5学习
目录 1. Why Webpack? 2. Webpack上手 2.1 Webpack功能 2.2 需要安装的包 2.3 简易命令 3. Webpack配置文件 3.1 局部webpack打包 3.2 ...
- 如何利用Smartbi做数据分析:车企销量排名TOP10的车型
下面我们来对比一下去年和今年的销量.同比增长情况: 图1. 轿车销量月趋势 图2. SUV销量月趋势 不难看出2月.7月为两个销量低点,而7月销量受天气影响较大,烈日.高温,毫无看车热情,复杂多变的外 ...
- C#内联函数 特性 MethodImplOptions.AggressiveInlining)
[MethodImpl(MethodImplOptions.AggressiveInlining)] 内联函数 Impl:implement的缩写 内联函数 在计算机科学中,内联函数(有时称作在线函数 ...
- 【C# 线程】内存屏障 MemoryBarrier
背景 同步基元分为用户模式和内核模式 用户模式:Iterlocked.Exchange(互锁).SpinLocked(自旋锁).易变构造(volatile关键字.volatile类.Thread.Vo ...