制作一个自定义的极小操作系统(Linux系统裁减)

制作一个自定义的极小操作系统


$ mkdir tinyos
$ cd tinyos

准备一个编译好的内核镜像(https://www.kernel.org/ 下载源码,根据需要编译出内核)
$ cp ../bzImage bzImage

准备initrd目录,作一个最小的init程序

$ mkdir initrd
$ cd initrd
$ vim init.c

内容如下:---------------------

#include <stdio.h>
#include <unistd.h>

void main(){
    int i = 0;
    while(1){
        printf("%d\n", i++);
        usleep(1000000);
    }
}


-----------------------------

静态编译生成init可执行程序
$ gcc --static -o init init.c        (注意一定要静态编译!!!)
$ ll
total 900
-rwxrwxr-x. 1 yeqiang yeqiang 913752 May  5 09:42 init
-rw-rw-r--. 1 yeqiang yeqiang    123 May  5 09:27 init.c


返回上一层目录,编写initrd制作脚本
$ cd ..
$ vim mkinitrd.sh

内容如下:
------------------------------

#!/bin/bash

cd initrd
find . | cpio -c -o > ../initrd.img
gzip ../initrd.img

------------------------------


运行脚本,生成 initrd.img.gz
$ sh mkinitrd.sh
$ ll
total 6744
-rw-rw-r--. 1 yeqiang yeqiang 6510896 May  5 09:46 bzImage
drwxrwxr-x. 2 yeqiang yeqiang    4096 May  5 09:42 initrd
-rw-rw-r--. 1 yeqiang yeqiang  377292 May  5 09:29 initrd.img.gz
-rw-rw-r--. 1 yeqiang yeqiang      79 May  5 09:29 mkinitrd.sh
-rw-rw-r--. 1 yeqiang yeqiang     991 May  5 09:46 Readme


制作基于qemu的测试脚本并测试
$vim testImage.sh

内容如下:
------------------------

#!/bin/bash
qemu-system-x86_64 -kernel bzImage -initrd initrd.img.gz

------------------------

$ sh testImage.sh


截图:


 

转载于:https://my.oschina.net/u/3139108/blog/892956

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值