为linux建立最小的根文件系统
2009-12-22 21:31
363 查看
在编译内核时候,可以指定一个文件夹作为内核启动时候的根文件系统,linux中管这个文件系统叫做initramfs。
具体做法如下(以i386为例)
1.下载内核文件
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.tar.bz2
2.解压内核
bzip2 -d linux-2.6.26.tar.bz2 生成一个linux-2.6.26.tar文件,然后
tar xvf linux-2.6.26.tar
解压后,将有个linux-2.6.26文件夹存在
3.准备一个iniramfs文件系统的文件夹
在linux-2.6.26文件夹下建立一个文件夹 myinitramfs
写一个测试用的hello world,起名为hello.c,如下:
#include <stdio.h>
#include <unistd.h>
int main(int argc,char *argv[])
{
int i = 0;
while (1) {
printf("hello world (%d)\n",i);
}
return 0;
}
编译 gcc -static -o init hello.c
把init拷贝到myinitramfs文件夹下。
cp init myinitramfs/
由于需要显示文字,还需要在文件夹下准备console设备文件。
mkdir myinitramfs/dev
cp -a /dev/console myinitramfs/
4.编译内核
在linux-2.6.26文件下下,执行make help。
将看到很多帮助信息,其中有一项是 i386_defconfig
执行 make i386_defconfig,将生成一个.config文件。
为了把之前准备好的文件夹添加到内核配置文件中,还需要重新配置下config文件
make config
在 General Setup --->
Initial RAM filesystem and RAM disk (initramfs/initrd) support (BLK_DEV_INITRD) [Y/n/?]
Initramfs source file(s) (INITRAMFS_SOURCE) [myinitramfs]
处,输入准备好的文件夹.
配置好后,在.config文件中会有如下一条定义
CONFIG_INITRAMFS_SOURCE="myinitramfs"
保存.config
make 编译内核
5.用qemu测试内核和initramfs
qemu -kernel linux-2.6.26/arch/i386/boot/bzImage -initrd linux-2.6.26/usr/initramfs_data.cpio.gz /dev/zero
initramfs_data.cpio.gz 这个文件是内核自动生成的,具体名字可能不同的系统或者内核有差异,但是后缀应该是.cpio.gz
具体做法如下(以i386为例)
1.下载内核文件
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.tar.bz2
2.解压内核
bzip2 -d linux-2.6.26.tar.bz2 生成一个linux-2.6.26.tar文件,然后
tar xvf linux-2.6.26.tar
解压后,将有个linux-2.6.26文件夹存在
3.准备一个iniramfs文件系统的文件夹
在linux-2.6.26文件夹下建立一个文件夹 myinitramfs
写一个测试用的hello world,起名为hello.c,如下:
#include <stdio.h>
#include <unistd.h>
int main(int argc,char *argv[])
{
int i = 0;
while (1) {
printf("hello world (%d)\n",i);
}
return 0;
}
编译 gcc -static -o init hello.c
把init拷贝到myinitramfs文件夹下。
cp init myinitramfs/
由于需要显示文字,还需要在文件夹下准备console设备文件。
mkdir myinitramfs/dev
cp -a /dev/console myinitramfs/
4.编译内核
在linux-2.6.26文件下下,执行make help。
将看到很多帮助信息,其中有一项是 i386_defconfig
执行 make i386_defconfig,将生成一个.config文件。
为了把之前准备好的文件夹添加到内核配置文件中,还需要重新配置下config文件
make config
在 General Setup --->
Initial RAM filesystem and RAM disk (initramfs/initrd) support (BLK_DEV_INITRD) [Y/n/?]
Initramfs source file(s) (INITRAMFS_SOURCE) [myinitramfs]
处,输入准备好的文件夹.
配置好后,在.config文件中会有如下一条定义
CONFIG_INITRAMFS_SOURCE="myinitramfs"
保存.config
make 编译内核
5.用qemu测试内核和initramfs
qemu -kernel linux-2.6.26/arch/i386/boot/bzImage -initrd linux-2.6.26/usr/initramfs_data.cpio.gz /dev/zero
initramfs_data.cpio.gz 这个文件是内核自动生成的,具体名字可能不同的系统或者内核有差异,但是后缀应该是.cpio.gz
相关文章推荐
- 为linux建立最小的根文件系统
- Linux最小根文件系统的建立,内核模块的编译,Qemu模拟测试最小系统
- Linux文件系统的建立、加卷标、建立文件系统入口图文详解
- mkfs在特定的分区上建立 linux 文件系统
- LINUX 新增的磁盘不建立分区,直接建立文件系统并挂载怎么办?
- arm linux上建立nfs文件系统
- 构建最小linux 文件系统----ssh, ftpd 服务器配置
- [转]Linux下NFS(网络文件系统)的建立与配置方法
- Linux下NFS(网络文件系统)的建立与配置方法
- 制作根文件系统的问题(页1) - Linux 0.1X系统的建立和实验- OldLinux
- 基于嵌入式Linux平台的最小文件系统的制作
- [嵌入式开发入门]4412开发板从零建立Linux最小系统
- linux debian系统的两台主机之间建立安全信任关系及scp传输文件的免密操作
- 读书笔记《Building embedded linux system》Chapter 8 根文件系统的建立
- 编译文件系统移植linux-3.0.62 + busybox最小系统到单板TQ2440
- Linux下NFS(网络文件系统)的建立与配置方法
- Linux下NFS(网络文件系统)的建立与配置方法
- Linux下NFS(网络文件系统)的建立与配置方法
- Linux下NFS(网络文件系统)的建立与配置方法
- 构建最小linux 文件系统----mysql 服务器移植