在学习Linux操作系统时会遇到这样那样的成功程问题,本文讲解一些会遇到的完成文件问题,比如说怎样为Linux建立最小根文件系统,立最希望你能学会Linux建立最小根文件系统。小根在编译内核时候,成功程可以指定一个文件夹作为内核启动时候的完成文件根文件系统,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 -kernelLinux-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建立最小根文件系统的过程。
【编辑推荐】
(责任编辑:综合)
爱美客(300896.SZ)年报推10转8派35元 除权除息日为2021年3月16日
V观财报|天娱数科2023年预亏最多12.5亿:参股公司业绩下滑明显
1月浙江新设外商投资企业287家 实际使用外资规模居全国第五
受贿4087万,套取公款783万!南航深圳分公司原总经理刘国军一审获刑14年
深大团队研发长余辉发光聚合物材料,或可用于防伪加密和信息安全