全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
转帖从ramdisk根文件系统启动Linux成功,总结一下 今天做了个试验,让Linux从ramdisk根文件系统启动成功,总结一下。其中涉及的内容较多,很多东西不再详述,如需深入研究请查阅相关资料(百度或谷歌一下一大堆)。开发环境:Fedora 9交叉编译工具链:arm-linux-gcc 4.3.2 with EABI嵌入式Linux内核版本:-FriendlyARM。昨天写贴子的时候具体记不清了,今天起来启动开发板用uname -r查一下,就是叫做-FriendlyARM,帖子已经改好了。本文就是友善之臂的-FriendlyARM的那个版本的内核的基础上改的。其它版本的应该也类似,仅供参考。开发板:mini2440-128M Nand FlashBootloader:u-boot-2009.11具体步骤如下:1.解压内核源码树解压linux-2.6.29-mini2440-20090708.tgz到自己的工作目录,会生成一个友善之臂修改过的并且有几个mini2440默认配置文件的内核源码目录linux-2.6.29。具体步骤参照友善之臂mini2440开发板用户手册,具体不详述了。2.修改内核配置选项进入内核源码目录linux-2.6.29目录#cp config_mini2440_t35 .config#make menuconfig ARCH=arm打开配置菜单,修改两个配置项,分别是:a):General setup-选择 Initial RAM filesystem and RAM disk. 项b):Device Drivers-Block devices-选择 RAM block device support 项并检查Optimize for size是否被选中,如果没有则选中,此项优化内核大小,根据需要进行配置。修改(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。然后特别要注意的一点是,ramdisk是一种内存虚拟磁盘技术,实质上并不是一种文件系统,它使用的文件系统时ext2文件系统。所以一定要在make menuconfig ARCH=arm的时候进入File systems菜单,选上 Second extended fs support。以提供内核对ext2文件系统的支持。我以前添加过了ext2文件系统了,所以开始的时候在此没有说明,在此为了说明为什么有的人照着我的方法做了,但是仍然kernel panic,特别把这一步也加上。然后保存配置退出。这样就为内核添加好了ramdisk启动功能和ramdisk的驱动支持了。3.修改内核启动参数方法有二:a):修改.config的第310行,修改CONFIG_CMDLINE=的定义修改为CONFIG_CMDLINE=initrd=0x31000000,0x200000 root=/dev/ram rw init=/linuxrc console=ttySAC0 mem=64M保存。意思为从ramdisk启动,ramdisk压缩文件起始地址在内存地址0x31000000处,文件大小为0x200000。此参数也可以在make menuconfig ARCH=arm时进入Boot options菜单,然后在Default kernel command string里修改。效果是一样的。b):或者不修改.config的的第310行CMDLINE定义,而是用u-boot的bootargs环境变量来传递启动参数。同样也是修改该环境变量为bootargs=initrd=0x31000000,0x200000 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内核映像了。好像友善之臂把内核源码目录里的uImage目标给注释了,以前在论坛里看到过有人说,直接make uImage好像提示没有uImage的目标。所以我就先制作zImage,然后再用u-boot的mkimage工具转化为uImage。其实uImage就是在zImage的开头部分增加了一个64字节的内核映像说明。5.制作uImage内核映像由于我使用的Bootloader是u-boot,所以要将zImage转化为uImage,方法如下:#mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -n Linux kernel Image -d zImage uImage-ramdisk说明:mkimage工具是u-boot格式uImage内核映像制作工具。如果成功编译u-boot之后,它会在u-boot源码树下的tools目录之下。建议将其拷贝到宿主机的/sbin/目录下,以方便使用。mkimage使用时的具体参数不再详述,不清楚的请自己查阅。6.制作ramdisk根文件系统该过程是制作ramdisk根文件系统的核心步骤,方法如下:a)创建根文件系统目录:#cd转入到你的工作目录。#mkdir rootfs#cd rootfs#mkdir bin dev etc lib proc sbin sys usr mnt tmp var#mkdir usr/bin usr/lib usr/sbin lib/modulesb)创建最基本的设备文件:#cd dev#mknod -m 666 console c 5 1#mknod -m 666 null c 1 3#cd .c)安装/etc配置文件:这里可以直接把友善之臂的root_qtopia里的几个基本的配置文件拷贝过来,只拷贝必要的即可,并对其内容进行删减,因为我做的ramdisk并不包含Qtopia等,全拷贝过来也没有用。我是从网上找的最小系统的etc配置文件直接解压到我制作的根文件系统里了,并做参照友善之臂的root_qtopia添加了一些内容,见最后的说明。操作如下:#tar etc.tar.gz -C /xxx/rootfsxxx表示你要制作的rootfs所在的目录。d)编译内核模块:方法是如下:进入Linux内核源码目录(linux-2.6.29)#make modules ARCH=arm CROSS_COMPILE=arm-linux-e)安装内核模块:#make modules_install ARCH=arm INSTALL_MOD_PATH=/xxx/rootfsxxx表示你要制作的rootfs所在的目录。f)配置busybox进入busybox目录执行#make menuconfig进入Busybox Settings - build Options -选中Build busybox as a static binary“,即静态链接,免去拷贝大量的库文件。Installation Options - 选中Dont use /usr,以免busybox不慎被安装到宿主机系统的相应目录下,破坏宿主机系统。Busybox Installation Prefix (/xxx/rootfs),修改该选项表明编译后的busybox将安装到该位置。g)编译、安装busybox#make ARCH=arm CROSS_COMPILE=arm-linux-几分钟编译完成后#make install安装到Busybox Installation Prefix (/xxx/rootfs)设定的目录里。当前为我要制作的根文件系统目录(/xxx/rootfs)。h)制作ramdisk根文件系统镜像方法如下:上/下载可以简单方便的制作ramdisk文件系统的工具genext2fs,这样就不用像网上大多数说的那样繁琐的制作ramdisk映像了,当前最新版本为genext2fs-1.4.1.tar.gz 。编译生成该工具genext2fs,并将其放入宿主机的/sbin/目录下以方便使用。跳转到要制作的rootfs的上一级目录#genext2fs -b 4096 -d rootfs ramdisk-b是指制作的ramdisk大小为4096K字节-d是指要制作成ramdisk的根文件系统目录最后的ramdisk是制作出来的ramdisk的名字,当然可以改名了。#gzip -9 -f ramdisk将该ramdisk以最优方式压缩为ramdisk.gz7.下载内核映像和ramdisk映像启动u-boot,暂停u-boot自动启动,在u-boot命令行中键入如下命令下载内核和ramdisk映像:u-bootMINI2440# tftp 0x32000000 uImage-ramdiskdm9000 i/o: 0x20000300, id: 0x90000a46DM9000: running in 16 bit modeMAC: 08:08:11:18:12:27operating at 100M full duplex modeUsing dm9000 deviceTFTP from server 17; our IP address is 30Filename uImage-ramdisk.Load address: 0x32000000Loading: T T # # #doneBytes transferred = 1917752 (1d4338 hex)u-bootMINI2440# tftp 0x31000000 ramdisk.gzdm9000 i/o: 0x20000300, id: 0x90000a46DM9000: running in 16 bit modeMAC: 08:08:11:18:12:27operating at 100M full duplex modeUsing dm9000 deviceTFTP from server 17; our IP address is 30Filename ramdisk.gz.Load address: 0x31000000Loading: T T # #doneBytes transferred = 1002594 (f4c62 hex)8)使用ramdisk根文件系统启动内核在u-boot命令行下键入如下命令启动系统:bootm 0x32000000# Booting kernel from Legacy Image at 32000000 . Image Name: Linux--FriendlyARM Created: 2010-04-09 15:13:52 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1917688 Bytes = 1.8 MB Load Address: 30008000 Entry Point: 30008000 Verifying Checksum . OK Loading Kernel Image . OKOKStarting kernel .Uncompressing Linux. done, booting the kernel.Linux version -FriendlyARM (rootlocalhost.localdomain) (gcc version 4.3.2 (Sourcery G+ Lite 2008q3-72) ) #3 Fri Apr 9 23:13:36 CST 2010CPU: ARM920T 41129200 revision 0 (ARMv4T), cr=c0007177CPU: VIVT data cache, VIVT instruction cacheMachine: FriendlyARM Mini2440 development boardMemory policy: ECC disabled, Data cache writeback中间过长的内容在此省略了RAMDISK: Compressed image found at block 0VFS: Mounted root (ext2 filesystem) on device 1:0.Freeing init memory: 136Keth0: link downProcessing /etc/profile. Done# eth0: link up, 100Mbps, full-duplex, lpa 0x45E1至
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 拆迁协议书的性质
- 奥迪轿车转让协议书
- tyec数字耳机协议书
- 2025年RCEP项下药品原料原产地规则应用考核试卷
- 2025初级商业人像摄影师布光失误后期补救技巧考核试卷
- 陪读幼儿安全协议书
- modbus协议书的实现
- 2025年广告营销行业数据挖掘与精准营销研究报告及未来发展趋势预测
- 2025年科技行业智慧物流供应链可视化转化科技成果转化考核试卷
- 2025年公共服务行业数字政府建设与公共服务创新研究报告及未来发展趋势预测
- 员工思想行为培训
- 土地政策学形成性考核一-国开(SC)-参考资料
- JJG 272-2024空盒气压表和空盒气压计检定规程
- 小学英语语法专题训练:名词所有格(含答案)
- 故宫里的大怪兽
- 小区物业服务投标方案(技术标)
- 代孕合同范本
- 小儿手术室外麻醉镇静
- 2024【高中英语】必背3500词汇
- 中国纺织文化智慧树知到期末考试答案2024年
- 通信工程生涯发展展示
评论
0/150
提交评论