Linux系统启动流程及系统裁剪
⼀、内核管理简要理论
1、内核的功能
李现(1)进程管理
(2)内存管理(内核管理代码中代码量最⼤的部分)
映像文件怎么打开(3)I/O管理:中断及中断处理
(4)⽂件系统:ext3,ext4,reiserfs,xfs等。。
(5)驱动程序
(6)安全相关:SELinux
2、内核设计流派
(1)单内核:单⼀体系结构(Linux)
<1>特点:
①模块化设计:核⼼+外围功能性模块组成
②内核⽀持动态装卸载模块
热门专业(2)微内核:内核⼦系统,更容易⽤于多线程编程(Windows、Solaris)
⼆、Linux系统的初始化流程
1、系统启动流程总结
(1)
POST(Power on self Testing)
–>BIOS(boot sequence)
–>GRUB(bootloader),分两阶段{stage1:在MBR中。stage2:在grub⽬录中}
–>Kernel(到initrd,被打包的模块)
2022国庆祝福语最短–>SHELL
2、POST(Power on self testing)的作⽤
(1)打开电源后,检测硬件设备是否正常⼯作。
3、BIOS的作⽤
(1)若电脑有多个存储设备,BIOS就会按照中的Boot Sequence(启动队列)来选择MBR所在的存储设备。
4、GRUB(Grand Unified Bootloader)
(1)1st stage(第⼀阶段):位于MBR中,为引导2nd stage。
(2)1.5 stage:位于boot基本磁盘分区中,为识别内核⽂件所在的⽂件系统提供⽂件识别扩展。
(3)位于boot基本磁盘分区中,GRUB的引导程序。
5、启动kernel
(1)启动vmlinuz,vmlinuz是⼀段压缩存放的代码,分为两端,⼀个解压代码,⼀个为内核代码。
(2)vmlinuz⼀般在boot⽬录下。
(3)vmlinuz完成对内核的初始化
(4)内核初始化时候需要启动⽤户进程:/sbin/ini,需要/lib/modules中的内核模块,但内核模块在根分区上,vmlinuz识别/分区⼜需要内核模块。(鸡和蛋问题)
<1>解决⽅案:安装操作系统的时候,安装程序能识别内核模块所在磁盘,并将内核模块打包为initrd供vmlinuz识别使⽤。
6、⽤户空间进程/sbin/init启动以后的⼯作
(1)执⾏/etc/rc.d/rc.ssysinit脚本完成系统初始化⼯作
三、系统裁剪流程详解
1、系统裁剪要求:有GRUB引导系统,并且使⽤init脚本实现⽹卡驱动的装载,以及IP地址的配置,添加tserver服务,并在系统启动时启动此服务并显⽰。
2、操作环境的⽬标
(1)在vmware12中操作,系统为Centos6.5
(2)基于宿主机(Host)制作⼀个简单可启动的Linux
3、流程概括
(1)为虚拟机添加⼀块新硬盘,并为其分区,安装GRUB
(2)复制内核⽂件(vmllinuz)和initrd⽂件⾄新硬盘中。
(3)移植bash,⽹络相关命令ifconfig、ip、ping命令,⽂件列表命令ls,服务管理命令chkconfig,模块装载卸载命令insmod、rmmod,挂载卸载命令mount、umount,⽂件查看命令cat⾄⽬标主机(Target)的/⽂件系统中。
(4)为grub提供配置⽂件。
(5)为⽬标主机配置/sbin/init⽂件启动⽹络服务和其他服务。
(6)将⽬标主机的硬盘装载其他电脑上。
4、添加新硬盘并分区、格式化和挂载
(1)在虚拟机上添加⼀块20G的硬盘,名为TinyLinux。
(2)为硬盘分区{⼀个为500M(boot分区),⼀个为1G(/分区)}
# fidk /dev/sdb
(3)检查分区是否成功
# partprobe /dev/sdb
# cat /proc/partitions
(4)分区格式化
母亲节黑板报# mke2fs -t ext4 /dev/sdb1
# mke2fs -t ext4 /dev/sdb2
(5)在/mnt⽬录下创建boot⽬录以及sysroot⽬录,并将上⾯两个⽂件系统进⾏挂载。
# mkdir /mnt/{boot,sysroot}
# mount /dev/sdb1 /mnt/boot
# mount /dev/sdb2 /mnt/sysroot
# mount
5、安装GRUB
(1)安装命令grub格式:
# grub-install –root-directory=(boot所在⽬录) /dev/sd[a-z] (2)例:演员于震
# grub-install --root-directory=/mnt /dev/sdb