配置内核自带文件系统ramdisk_及uImage的制作

移植linux 内核支持ramdisk 1.修改内核配置选项进入内核源码目录linux-2.6.32.2目录#cp config_mini2440_x35 .config#make menuconfig ARCH=arm(1).打开配置菜单,修改两个配置项,分别是:a):General setup-->选择 Initi 阅读详情
 1.修改内核配置选项
进入内核源码目录linux-2.6.32.2目录
#cp config_mini2440_x35 .config
#make menuconfig ARCH=arm

(1).打开配置菜单,修改两个配置项,分别是:
a):General setup-->选择 Initial RAM filesystem and RAM disk...... 项
b):Device Drivers-->Block devices-->选择 RAM block device support 项

c):并检查Optimize for size是否被选中,如果没有则选中,此项优化内核大小,根据需要进行配置。

d):device driver->block device里的一个选项,‍Default Ramdisk 设置ramdisk的大小.16384

Note:修改(8192)Default RAM disk size kbytes选项为(4096)Default RAM disk size kbytes, 之所以修改是因为我之后制作的ramdisk是4096KB大小的。当然如果你想制作8192KB大小的ramdisk,这里就要对应为8192了,以此 类推。但是最小系统嘛,是不用那么大的ramdisk的。此项的默认配置就是(4096),以前我改过这个配置,所以是(8192)了。如果这个大小和你 做的ramdisk不匹配,则启动时仍然会出现kernel panic内核恐慌,提示ramdisk格式不正确,挂载不上ramdisk。

(2).进入File systems菜单,选上<*> Second extended fs support
ramdisk是一种内存虚拟磁盘技术,实质上并不是一种文件系统,它使用的文件系统时ext2文件系统。
这样就为内核添加好了ramdisk启动功能和ramdisk的驱动支持了。

2.修改内核启动参数
方法有二:
a):修改.config的第310行,修改CONFIG_CMDLINE=""的定义
修改为CONFIG_CMDLINE="initrd=0x31000000,0x400000 root=/dev/ram0 rw init=/linuxrc console=ttySAC0 mem=64M"
保存。
意思为从ramdisk启动,ramdisk压缩文件起始地址在内存地址0x31000000处,文件大小为0x400000。
此参数也可以在make menuconfig ARCH=arm时进入Boot options菜单,然后在Default kernel command string里修改。效果是一样的

b):或者不修改.config的的第310行CMDLINE定义,而是用u-boot的bootargs环境变量来传递启动参数。
同样也是修改该环境变量为bootargs=initrd=0x31000000,0x400000 root=/dev/ram0 rw init=/linuxrc console=ttySAC0 mem=64M
并saveenv保存u-boot环境变量
以上a),b)的效果是一样的。

4.编译内核
#make zImage ARCH=arm CROSS_COMPILE=arm-linux-
编译完成后在当前目录下就出现了zImage内核映像了。


5.其实 uImage就是在zImage的开头部分增加了一个64字节的内核映像说明。说明一下:zImage是ARM Linux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明这个映像文 件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从uImage的0x40位置开始执行,zImage和uImage没有任何区别。另 外,Linux2.4内核不支持uImage,Linux2.6内核加入了很多对嵌入式系统的支持,但是uImage的生成也需要设置。


5.制作uImage内核映像
由于使用的Bootloader是u-boot,所以要将zImage转化为uImage,方法如下:

1.把zImage 拷到uboot 的tools 目录下
2. ./mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -n "Linux kernel Image" -d zImage uImage-ramdisk

说明:mkimage工具是u-boot格式uImage内核映像制作工具。如果成功编译u-boot之后,它会在u-boot源码树下的tools目录 之下。建议将其拷贝到宿主机的/sbin/目录下,以方便使用。

 

6.还有一个是启动到最后面,会提示

RAMDISK: Compressed image found at block 0
RAMDISK: incomplete write (2270 != 32768)

 之类,这问题就是上面说的内核配置的ramdisk大小不对,要去修改一下内核配置

我将它修改成12288(1024的整数倍)

Ramdisk文件系统烧写 randisk(虚拟内存盘)是通过软件将一部分内存(RAM)模拟硬盘来使用的一种技术。我们要做的工作就是将轻量级的文件系统镜像ramdisk.gz烧写到flash里面,当板子上电后将文件系统加载到内存。当然RAM的易失性也就意味着板子断电后这部分数据丢失。因此板子起来后,仍然需要通过网络(nfs)来传输文件(例如bin文件,或者动态库.so)。 注:使用DM3730开发板 前提 阅读详情

相关推荐

ramdisk文件系统制作和移植

RAMDISK简介: Linux中,rootfs是必不可少的。PC上主要实现有ramdisk和直接挂载HD(Harddisk,硬盘)上的根文件系统;嵌入式中一般不从HD启动,而是从Flash启动,最简单的方法是将rootfsload到RAM的RAMDisk,稍复杂的就是直接从Flash读取的Cramfs,更复杂的是在Flash上分区,并构建JFFS2等文件

fulinux的博客 8748

嵌入式Linux:制作ramdisk并启动

1.开发环境 主机:Ubuntu 18.04.5 交叉编译链:aarch64-none-elf- linux内核:4.19.165 2.配置Linux内核 1)Initial RAM filesystem and RAM disk (initramfs/initrd) support 使内核支持以ramdisk文件系统作为根文件系统启动。 从menuconfig下图所在位置配置,或者直接在配置文件添加CONFIG_BLK_DEV_INITRD=y 2)RAM block device support 使内

zzy570384336的博客 4893

ramdisk大小修改

我们制作的ramdisk有的时候会出现大小不够的情况,拖几个稍微大点的镜像到ramdisk就会提示溢出出错,这个时候我们就需要将ramdisk大小扩大。

linux 内核配置ramdisk

对于default_rootfs函数的编译将在没有设置initrd/initramfs的条件下进行。如果设置了【Initial RAM filesystem and RAMdisk(initramfs/initrd)support】选项。那么default_rootfs()函数将不会编译进linux内核!

chenliang0224的专栏 479

jmeter问题系列:Begin size 0 is not equal to fixed size 5

Begin size 0 is not equal to fixed size 5 ,问题的解决

雨水的早晨的博客 2411

Android逆向实战:用Xposed Hook微信消息发送(附完整代码)

本文提供了一份Android逆向实战指南,详细讲解如何使用Xposed框架Hook微信消息发送功能。内容涵盖环境搭建、逆向分析定位关键方法、编写Hook模块代码以及调试部署的全过程,并附有完整代码示例,帮助开发者深入理解Android应用底层交互与Hook技术。

weixin_29196315的博客 1118

内核ramdisk启动之根文件系统制作

内核ramdisk启动之根文件系统制作 涉及方面: uboot : 这里uboot需要传递启动命令行参数 kernel : 这里要修改启动方式为ramdisk启动 rootfs : 这里要制作目标 其中第一个uboot启动参数要与kernel的配置、rootfs的大小要保持一致。 uboot 修改启动参数 当前: bootargs='mem=256M console=ttyAMA0,115200 clk_ignore_unused root=/dev/ram0 rw init=/linuxrc init

weixin_38878510的博客 1310

手把手教你用TL431设计反激电源补偿器(附波特图调试技巧)

本文详细介绍了如何使用TL431设计反激电源补偿器,并提供了波特图调试技巧。通过实战经验分享,帮助工程师快速掌握补偿网络设计、分压电阻计算和稳定性判据,避免常见设计误区,提升电源稳定性与效率。

weixin_29201859的博客 377

ramdisk制作

之前写的一篇制作initramfs的总结是将initramfs和内核Image打包在一起的方案,因为我们有款产品需要将ramdisk和Image分开存储,所以这篇文章讲解ramdisk分开引导的方案。 1.Busybox文件系统制作 请参考之前的文章: https://blog.youkuaiyun.com/m0_38096844/article/details/97786761 2.打包ramdi...

发呆健将的博客 1702

Isaacgym使用操作指南

Isaac Gym 是一个强大的仿真工具,特别适合那些需要进行大规模并行仿真和训练的机器人和强化学习任务。通过 GPU 加速、深度学习集成和丰富的物理仿真能力,Isaac Gym 能够显著提高仿真和训练效率,是机器人学和 AI 研究中的一大利器。

Tony Wey的博客 1万+

求一个点到任意两个点所在直线距离 C#代码公式

求点C(X0,Y0) 到点A(x1,y1)和点B(x2,y2)所在直线的距离 1.已知任意两个点,求这两个点所在直线 已知点A(x1,y1),点B(x2,y2) 设直线上另外任意一个点为(x,y) 那么 (x-x1)/(y-y1) = (x2-x1)/(y2-y1); 整理后得方程: (y2-y1)x + (x1-x2)y + (y1-...

qq_29434987的博客 4492

制作在线升级工具-Ramdisk文件系统的制作与调试运行

开发环境:Fedora 9 交叉编译工具链:arm-linux-gcc 4.3.2 with EABI 嵌入式Linux内核版本:2.6.29.4-FriendlyARM。昨天写贴子的时候具体记不清了,今天起来启动开发板用uname -r查一下,就是叫做2.6.29.4-FriendlyARM,帖子已经改好了。本文就是友善之臂的2.6.29.4-FriendlyARM的那个版本的内核的基础上改

sanmaoljh的专栏 886

KEPServerEX物联网网关(IoT Gateway)REST客户端代理(非原创)

(中文版)资料来源于【OPC-KEPServerEX学习KEPWare交流】905485143群的【455196383】【零下一度】 一。KEPServerEX物联网网关REST客户端代理演示 在KSE中,首先构建一个带有通道/设备/标签的模拟器系统。 例如,下面是三个随机项目。 直接到IoT网关插件,添加新代理。 从类型列表中选择REST Client。 终结点...

-雲飛兄-博客 5806

MINI2440内核及文件系统的制作和移植

一.内核的制作1.首先建立一个工作目录sysbuild,将光盘里面的linux-2.6.32.2-mini2440-20110413.tar.gz解压到工作目录下,然后进入解压好的目录。2.清除原有配置与中间文件 make mrproper 然后可以再make clean 一下3

908

黑猫带你学UFS协议第23篇:UFS固件升级操作详解(FFU)

摘要:本文介绍了UFS固件更新(FFU)的实现方法与注意事项。根据UFS3.1 JEDEC协议,FFU通过write buffer命令(MODE=0Eh)下载FW固件,随后必须进行power cycle或硬件复位生效。文章详细阐述了FFU操作的10条规则,包括数据分片传输要求、寄存器访问限制等,同时指出协议未明确的厂商实现差异。关键寄存器包括bFFUTimeout、bDeviceFFUStatus和fPermanentlyDisableFwUpdate。

黑猫奥利奥的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

RAMDISK制作全纪录

本文的平台是基于OK6410,其余平台的RAMDISK的制作过程一样样的。另外本文参考了http://blog.chinaunix.net/uid-25314474-id-376420.html大神的文章,再次表示感谢。 嵌入式RAMDISK文件系统的制作主要分为以下几个步骤: 1.制作根文件系统 2.编译内核 3.测试内核和文件系统的完整性 4.烧写至开发板并配置启动参数    1

CSU_Freefancy 1218

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

从ramdisk根文件系统启动Linux成功

具体步骤如下: 1.解压内核源码树 解压linux-2.6.29-mini2440-20090708.tgz到自己的工作目录,会生成一个友善之臂修改过的并且有几个mini2440默认配置文件的内核源码目录linux-2.6.29。具体步骤参照友善之臂mini2440开发板用户手册,具体不详述了。 2.修改内核配置选项 进入内核源码目录linux-2.6.29目录 #cp config

zzobin的专栏 2204

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

制作Ramdisk文件系统

主机:ubuntu14.04 工具链:arm-none-linux-gnueabi-4.8.3 one_step: 配置内核: #make menuconfig ARCH=arm 打开配置菜单,修改两个配置项,分别是: a):General setup-->选择 Initial RAM filesystem and RAM disk...... 项 b):Device Drivers

u014213012的博客 1万+

linux ramdisk根文件系统,从ramdisk根文件系统启动Linux.doc

从ramdisk根文件系统启动Linux从ramdisk根文件系统启动Linux从ramdisk根文件系统启动LinuAuthor:窦少彬 Email:mail.dsb@163.com开发环境:Fedora 工具链:arm-linux-gcc 4.3.2 with EABI内核版本:-FriendlyARM。开发板:mini2440-128M Nand FlashBootloader:u-b...

weixin_35079944的博客 194

PHP ramdisk,linux ramdisk 配置

1.修改内核配置选项进入内核源码目录linux-2.6.32.2目录cp config_mini2440_x35 .configmake menuconfig ARCH=arm(1).打开配置菜单,修改两个配置项,分别是:a):General setup-->选择 Initial RAM filesystem and RAM disk...... 项b):Device Drivers--&g...

weixin_30373263的博客 232

嵌入式Linux内核以及根文件系统制作

内核制作 制作嵌入式平台使用的Linux内核,方法和制作PC平台的Linux内核基本一致。 清除原有配置与中间文件 x86: make distclean arm:make distclean 配置内核 x86: make menuconfig arm:make menuconfig ARCH=arm (一般来说有一个参考的配置文件) 编译内核 x86: make bzImage arm:make uImage ARCH=arm CROSS_COMPILE=arm-linux- (注意使用ARC

WillPower 1168

ramdisk根文件系统+initramfs

这几天做了下ramdisk根文件启动实验,小结下。   测试环境:Ubuntu 12.04   首先我认为先制作根文件系统好,因为配置内核中有一项跟你制作的ramdisk大小有关。 这里我是直接使用原先制作好的根文件系统。   1.   制作ramdisk根文件系统镜像     首先安装ext2文件系统的制作工具:     #sudo apt-

小饼仙子的专栏 1159

[Linux驱动开发] ramdisk文件系统制作及移植

工程实例 1、重新规划FLASH分区如下:      2、重新修改内核     根据“nand flash的布局图”,修改内核nandflash分区请修改内核源代码的vi arch/arm/ plat-s3c24xx/common-smdk.c         重新编译内核,后续用新的内核做实验     $ cp arch/arm/boot/uImage /tftpboot

Terry_Yuan的技术专栏 1603
上一篇: usb_gadget_ethernet
下一篇: mke2fs 制作ext2文件系统image
lamdoc
博客等级 码龄18年 155粉丝 655原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值