在VM上学习嵌入式Linux系统的构建之二--内存文件系统
来源:互联网 发布:mac上复制粘贴快捷键 编辑:程序博客网 时间:2024/06/04 18:04
上一篇文章说到了内核编译的问题,这篇文章记录了构造根文件系统的过程。
先大概说一下过程:原先想根据网上一些文章的内容,直接构建一个initrd,从我的redhat中把需要的目录、文件、库考过去,发现在挂在文件系统时出错,折腾了半天也没搞定。后来使用busybox,经过几天挣扎之后,终于看到可爱的concole了 ,下面把过程记录如下。
1、内核编译选项的调整
1.1 由于一开始总挂不上文件系统,所以在内核配置时,加了几个File System的选项,对具体选项的作用还要研究。 Compressed ROM file system support 、 Virtual file system support 、/proc file system support 、/dev file system support 等等。
1.2 如果VM把光驱和磁盘虚拟成 SICI 设备的话,还要选上 SICI support 。
2、建立ext2格式的文件系统印像initrd.img
2.1 创建一个空文件,将/dev/zero(0字符流)做为initrd.img的输入,块大小为1024,共4M空间。
dd if=/dev/zero of=/tmp/ramdisk.img bs=1024 count=4000
2.2 用mke2fs命令来创建一个使用这个空文件的ext2文件系统
sbin/mke2fs -F -m 0 -b 1024 /tmp/ramdisk.img 40000
2.3 以loop设备的形式挂载这个文件到/mnt/initrd
mount -o loop /tmp/ramdisk.img /mnt/initrd
3、文件系统的内容
3.1 创建一些必须的目录
mkdir /mnt/initrd/bin
mkdir /mnt/initrd/sys
mkdir /mnt/initrd/dev
mkdir /mnt/initrd/proc
mkdir /mnt/initrd/etc
3.2 创建一些设备文件,直接从redhat拷,注意用 -a 保持所有属性
cp -a /dev/console /mnt/initrd/dev
cp -a /dev/ramdisk /mnt/initrd/dev
cp -a /dev/ram0 /mnt/initrd/dev
cp -a /dev/null /mnt/initrd/dev
cp -a /dev/tty1 /mnt/initrd/dev
cp -a /dev/tty2 /mnt/initrd/dev
3.3 拷贝busybox 到bin先,建立一些符号连接,注意配置busybox时要选init ,这里就详细说busybox了。
cp $busybox_path/busybox ./mnt/initrd/bin
ln -s busybox ash
ln -s busybox mount
ln -s busybox echo
ln -s busybox ls
ln -s busybox cat
ln -s busybox ps
ln -s busybox init (初时话程序)
3.4 建立 etc/init.d/rcS 文件,这是 busybox 默认的 init
cat >> /mnt/initrd/etc/init.d/rcS 内容为:
echo
echo "hello alex :)"
echo
更改权限
chmod o+x rcS
在/mnt/initrd 下建立一个到rcS的连接 linuxrc
ln -s etc/init.d/rcS linuxrc
3.5 完成
umount /mnt/initrd
gzip -9 initrd.img
4、建立iso
4.1 把 initrd.img.gz 拷贝至 iso 制作目录
4.2 修改 loadlin 参数
loadlin vmlinuz initrd=initrd.img.gz root=/dev/ramdisk
5、搞定,贴张图show一下
很有成就感的说:P
后记
关于文件系统,可以有很多办法,用busybox 的 make all install 也可以生成。但要能构造一个能用的linux,还有很多路要走,下面还要想办法把文件系统放到VM的虚拟磁盘上、引导程序(lilo、grub)、驱动、gui等等,都能试试。
- 在VM上学习嵌入式Linux系统的构建之二--内存文件系统
- 预告:在VM上学习嵌入式Linux系统的构建
- 在VM上学习嵌入式Linux系统的构建之一--编译内核
- 【嵌入式Linux学习七步曲之第三篇 Linux系统bootlaoder移植】U-BOOT全线移植分析系列之三--U-BOOT在AT91RM9200上的移植
- 【嵌入式Linux学习七步曲之第三篇 Linux系统bootlaoder移植】U-BOOT全线移植分析系列之三--U-BOOT在AT91RM9200上的移植
- 构建嵌入式linux系统 、制作根文件系统
- Linux内核学习之五--嵌入式Linux系统构建
- YAFFS文件系统在嵌入式Linux上的实现
- YAFFS文件系统在嵌入式Linux上的实现
- YAFFS文件系统在嵌入式Linux上的实现.(论文,转载.)
- 在arm linux 上构建的系统
- 构建基本的嵌入式Linux根文件系统
- 构建基本的嵌入式Linux根文件系统
- 构建基本的嵌入式Linux根文件系统
- 构建基本的嵌入式Linux根文件系统
- 构建基本的嵌入式Linux根文件系统
- 构建基本的嵌入式Linux根文件系统
- 构建基本的嵌入式Linux根文件系统
- Berkeley DB简介
- 获取信息列表中每个类别下的最新一条记录的 SQL语句
- 深入浅出Win32多线程程序设计之基本概念
- Inline 函数
- webwork + ajax 整合实例2 ---- 实现滚动条效果
- 在VM上学习嵌入式Linux系统的构建之二--内存文件系统
- 应用反编译命令JavaP理解String和StringBuffer的区别
- Qt源码分析之QObject
- 三层C/S结构及其应用
- TCP的重传
- DSAPI应用
- 使用日志传送完成sql server数据库定期备份
- GridView中Checkbox使用一列
- GridView 中设置某列,截取字符串加"..." 和 鼠标放上去字符全部显示