MiniLinux的制作

MiniLinux的制作

一.MiniLinux的制作就要涉及到内核的裁剪和重新编译。 回顾内核的相关知识

内核设计主要分为两种:(内核多为C语言研发)
单内核设计:相当于把所有的功能都集成与一个程序中,通过线程实现。
一个功能的崩溃会导致整个内核无法使用。Linux采用此内核。

微内核设计:每个功能都有一个独立子系统,相互调配使用。
内核各个服务之间的调用涉及进程间的通信,比较复杂,且效率低。Windows采用此内核。  

Linux内核虽然是基于单内核的但是,经过这么多年的发展,也具备微内核的一些特征。(体现了Linux实用至上的原则)  

Linux内核特点:
1.支持动态装载和卸载内核模块,利于驱动的后期维护
2.支持对称多处理(SMP)
3.内核可以抢占,允许内核运行的任务有优先执行的能力
4.不区分线程和进程  

二.关于Linux系统开机启动流程相关知识

CentOS系统开机
CentOS 6开机:
    POST-->BootSequence(BIOS)-->BootLoader(MBR)-->kernel(ramdisk)-->rootfs-->/sbin/init
CentOS 7开机:
    POST-->BootSequence(BIOS)-->BootLoader(MBR)-->kernel(ramfs)-->rootfs-->/sbin/systemd
CentOS 6和CentOS 7开机有一些不同,见其他文章。   

三.关于MiniLinux制作

1.首先内核重新编译
编译前的准备环境:  
#yum groupinstall "Development Tools" "Server Platform Development"
下载所需要的内核版本,我所下载的是3.10.105(www.kernel.org)
解压内核至/usr/src 目录中。
软链接内核文件至 /usr/src/linux 中。
#cd /usr/src/linux              #切换到内核的目录中
#make allnoconfig               #清空编译规则,回归原始的内核状态
#make menuconfig                #选择编译的选项,因为是miniLinux我是全部把内核编译进核心,
                                而不是编译成模块。
    编译时选择的基本模块与功能介绍
    1.[*] 64-bit kernel                     #编译64位内核
    2.Enable loadable module suppose        #支持内核的装载与卸载
        [*] module unloding 
    3.Bus options                           #相关PCI接口支持
    4.Processor type and features           #关于处理器版本选择,选择自己处理器合适的
    5.Device drivers                        #关于硬盘,网卡各设备的驱动lspci查看系统设备信息(自己选择)
    6.File Systems                          #文件系统支持(自己选择)
    7.Excutable file formates/Emulattions   #支持文件可执行文件的格式(自己选择)
    8.Networking Support                    #网络服务支持
#make -j # bzImage              #指定几个核心编译,并且只编译内核文件
2.编译后的准备工作
因为是使用虚拟机,所以添加一块新硬盘在虚拟机中。2G左右即可,作为miniLinux的启动虚拟磁盘。
#fdisk /dev/sdb                                     #分区硬盘,我的硬盘名称为sdb
#mke2fs -t ext4 /dev/sdb1                           #格式化两块硬盘
#mkdir /mnt/{boot,sysroot}                          #创建两个目录,作为miniLinux系统的根分区和boot分区
#mount /dev/sdb1 /mnt/boot                          #挂载boot分区
#group-install --root-directory=/mnt /dev/sdb       #安装grub到硬盘中
#mount /dev/sdb2 /mnt/sysroot                       #挂载系统根分区
#cp /usr/src/linux/arch/x86/boot/bzImage /mnt/boot  #复制编译的内核至boot分区
#sync                                               #同步到磁盘中
#vim /mnt/boot/grub/grub.conf                       #新建grub配置文件,grub安装成功后,/mnt/boot目录下存在grub目录
    default=0
    timeout=3
    title MiniLinux(3.10)
        root(hd0,0)
        kernel /bzImage ro root=/dev/sda init=/sbin/init

做到这一步没有错误,系统就可以跑起来了,但是没法运行。缺少init文件。
3.相关文件的编写
有时间再写,实际上,相关的配置文件,就按照正常的系统的配置文件写,就可以。但是还是会完善这篇文章的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值