Linux系统启动相关

Linux系统启动相关

一、Linux操作系统启动流程


  • Linux操作系统的启动流程为:POST(加电自检)–> BIOS –> Bootloader –> kernel –> /sbin/init。

Linux系统启动相关

POST介绍:

POST(POST ON SELF TEST)开机自检,主机接通电源后,系统进行的一个自我检测的过程,对系统的几乎所有的硬件设备进行检测。如果必需的硬件被发现而且发现正在适当地工作,计算机开始启动。如果硬件没有被发现或者被发现工作不正常,根据问题的性质,基本输出输入系统(BIOS)发出一个错误信息,可能是在荧屏显示的文本或一系列的特殊的蜂鸣声。有些设备的存在与否不影响系统的正常启动:如键盘、鼠标等。

BIOS介绍:

自检的功能是由BIOS(BASIC INPUT OUTPUT SYSTEM)程序来实现的,即基本输入输出功能,它是装在在硬件芯片CMOS之上。BIOS会列出一些可以启动的装置顺序,随后BIOS会读取该引导设备中的MBR来进行系统启动的下一阶段。MBR为第一个可以启动的硬盘的第一个扇区,即主引导记录(Master Boot Record)。MBR大小为512bytes,前446bytes为bootloader,后64bytes为分区表,最后2bytes为结束标识;

GRUB介绍:

GRUB系统引导启动工具,grub有两个版本,0.x系列被称为grub1,也被称为grub legacy,centos5,6上使用的是0.x系列;1.x被称为gurb2,用于centos7;grub分为3个阶段:           1:Stage1的作用是启动安装在MBR中的bootloader主程序,其作用便是指向stage2,引导stage2运行;                                         2:Stage1.5作用为让grub程序能够识别grub2所在的分区。或许你也已经发现,在/boot/grub目录下有诸多以stage15结尾的文件,表示各种文件系统所对应的stage15,和stage1文件一样,能够让grub识别stage2所在分区的文件不是这些,而是在系统安装时,早已确定了stage2所在目录的文件系统格式,并将与之对应的以stage1_5结尾的文件安装至MBR之后的62个扇区内;        3:Stage2 作用:提供菜单、并提供交互式接口;加载用户选择的内核或操作系统,并允许传递参数给内核;提供菜单保护机制。

kernel介绍:

系统进入kernel阶段,所有的硬件设备都已准备就绪,kernel进一步加载硬件驱动程序,在内存中生成临时只读的rootfs,运行用户控件的第一个应用程序:/sbin/init。在Centos 6中系统的初始化程序是/sbin/init,但是到了Centos 7 则该用了systemd作为系统的初始化程序。

init初始化:

系统开始完成初始化,运行第一个程序init,init主要实现的功能为:                 (1) 设置主机名;                                     (2) 设置欢迎信息;                                    (3) 激活udev和selinux;                                 (4) 挂载/etc/fstab文件中定义的所有文件系统;                        (5) 检测根文件系统,并以读写方式重新挂载根文件系统;                   (6) 设置系统时钟;                                    (7) 根据/etc/sysctl.conf文件来设置内核参数;                        (8) 激活lvm及软raid设备;                                 (9) 激活swap设备;                                   (10) 加载额外设备的驱动程序;                              (11) 清理操作;

Linux系统运行级别:

Linux系统共有7个运行级别:

      运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
      运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
      运行级别2:多用户状态(没有NFS)
      运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
      运行级别4:系统未使用,保留
      运行级别5:X11控制台,登陆后进入图形GUI模式
      运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

运行级别的原理:

 1:在目录/etc/rc.d/init.d下有许多服务器脚本程序,一般称为服务(service)
 2:在/etc/rc.d下有7个名为rcN.d的目录,对应系统的7个运行级别
 3:rcN.d目录下都是一些符号链接文件,这些链接文件都指向init.d目录下的service脚本文件,命名规则为K+nn+服务名或S+nn+服务名,其中nn为两位数字。
 4:系统会根据指定的运行级别进入对应的rcN.d目录,并按照文件名顺序检索目录下的链接文件
 对于以K开头的文件,系统将终止对应的服务
 对于以S开头的文件,系统将启动对应的服务
 5:查看运行级别用:runlevel
 6:进入其它运行级别用:init N
 7:另外init0为关机,init 6为重启系统

二、简述grub启动引导程序配置及命令行接口详解


GNU GRUB(GRand Unified Bootloader)是一个多操作系统启动程序;它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。GRUB主要分为三个步骤:stage1,stage1.5,stage2。

1:stage1:用于启动Boot loader来加载stage2的内容至内存中;
2:stage1_5:其能够识别内核和stage2所在的分区的文件系统格式类型,帮助引导stage2;
3:stage2:读取grub.conf 配置文件,并实现引导功能的扩展;

Linux GRUB的配置文件放置于:/etc/grub.conf;/boot/grub/grub.conf上:

  [root@localhost ~]# ll /etc/grub.conf /boot/grub/grub.conf 
  -rw-------. 1 root root 771 Apr 13 23:01 /boot/grub/grub.conf
  lrwxrwxrwx. 1 root root  22 Mar  5 17:17 /etc/grub.conf -> ../boot/grub/grub.conf

GRUB配置文件信息如下:

Linux系统启动相关

 default=0:表示有多个grub引导菜单时,选择哪一个作为默认启动引导菜单,default=0表示默认使用第一个title菜单中的配置;
 timeout=5:在grub选择菜单中,5秒内,如果用户没有选择任何一个title,则使用default中指定的titile菜单中的配置进行启动;
 splashimage:指定引导菜单中的背景图片的路径;
 titile:指定title菜单到的名称;
 root:表示kernel和initrd文件所在的分区路径,而不是“根分区”;其设置格式为:root (hd#,#),硬盘均会被识别为hd,第一个#表示第几个硬盘,从0开始;地第二个#表示同一个硬盘上的不同分区,也使用数字标识,从0开始;
 kernel:通常用于指定要运行的内核文件路径,如:/vmlinuz-2.6.32-642.el6.x86_64;另外也可在其后设置相关的内核参数,如:ro表示只读,root表示指定根分区所在路径,关闭selinux等等;
 initrd:为内核运行指定其可用的ramdisk文件,其版本须与内核版本相一致;

系统开机过程中按任意键,即可进入 GRUB菜单界面:Linux系统启动相关

GRUB命令行接口:

在菜单栏界面按c可进入grub命令行接口:Linux系统启动相关

GRUB的命令行接口常用指令包括如下:

  help:查看命令帮助; 
  root (DEVICE):指定系统和内核文件所在的分区,如root(hd0,0)。 
  find (hd0,0) /path/to/file:用于查找对应分区下的文件。常用于当不确认内核文件在哪个分区时,可使用此命令确认文件所在路径;支持tab补全; 
  kernel /path/to/kernel_file:用于指定要运行的内核文件。 
  initrd /path/to/kernel_file:指定initrd文件; 
  boot:以当前配置好的grub配置启动系统;

三、实现kickstart文件制作与光盘镜像制作


kickstart主要用于实现自动安装和配置的工作,通过使用kickstart,系统管理员能够创建一个单独的、包含安装过程中遇到的所有问题答案的文件。kickstart文件能被存储在服务器系统之上,机器在安装系统的时候可以读取该文件。在Centos系统中,完成系统安装后,在root目录下会生成一个名为anaconda-ks.cfg的kickstart文件。此文件即为配置自动安装的脚本

  • kickstart文件的组成部分包括三部分:命令段:用于配置系统安装时除了软件安装以外的自动应答;

    软件包段,用于选择系统安装哪些packages,通常以%packages开头,结尾;

    脚本段,为可选段落,用于设置自动执行的脚本,可设置在安装系统前或安装系统后执行。

kictstart的参考配置如下:

install
cdrom
lang en_US.UTF-8
keyboard us
network --onboot no --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted $6$Sb9pJZSdPRxv6w2t$Knsn1j/sh6hZ7yDueCMkJWfj/JSE7xQ19ciEL1PToemsUaDqro0jJKA9Y1SrKYTp4gn4KLS72mviDrIwcuvtQ.
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100
%packages
@base
@core
@debugging
@basic-desktop
@desktop-debugging
@desktop-platform
@directory-client
@fonts
@general-desktop
@graphical-admin-tools
@input-methods
@internet-applications
@internet-browser
@java-platform
@legacy-x
@network-file-system-client
@office-suite
@print-client
@remote-desktop-clients
@server-platform
@server-policy
@workstation-policy
@x11
mtools
pax
python-dmidecode
oddjob
wodim
sgpio
genisoimage
device-mapper-persistent-data
abrt-gui
samba-winbind
certmonger
pam_krb5
krb5-workstation 
libXmu
%end

光盘镜像制作:

mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6 x86_64 boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o  /root/boot.iso   myboot/

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95833

(0)
gw章gw章
上一篇 2018-04-13
下一篇 2018-04-13

相关推荐

  • 手把手系列(四)教你用kickstart自动化安装CentOS系统

    KickStart是一种半自动化的安装方式。安装者完全可以只告诉安装程序从何处获取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。

    2018-05-24
  • Linux系统软件包管理介绍

    Linux发行版中附带有成千上万的可用包,其中包括了Internet工具、开发工具、办公工具、游戏等,如果你没有选择完整安装,则只会安装这些包的“子集”,如何删除不想要的包,如何安装遗漏的包,学习LInux系统的软件包管理将解决你的这些问题

    2018-04-20
  • Linux上的文件管理类命令

    常用的文件目录管理命令:cd,pwd,ls,mkdir,rmdir,tree,more,less,head,tail,cp,mv,rm。 cd命令:改变目录 后面加绝对或者相对路径 命令格式:cd [options] [Dirname] [Azuth@azuth ~]$ cd /home/Azuth[Azuth@azuth ~]$ pwd/home/Azut…

    Linux笔记 2018-05-20
  • Centos7默认网卡名如何修改成eth*

    Centos7 新添加网卡默认的识别名ens*,用起来很不习惯,为了方便系统的统一化管理,如何将默认命名规则改成eth*?

    2018-04-29
  • TCP/IP协议

    无线网络标准 IEEE 802.3 802.11a/b/g/n/ac 物理层,数据链路层data link layer   以太网是工作在物理层和数据链路层上 单工,双工(物理层概念) 单工:单向传输数据    (广播,收音机) 双工:双向传输数据 全双工:同时双向       (手机) 半双工:轮流双向     (对讲机)   Hub集…

    Linux笔记 2018-06-24
  • 文件管理

    系统文件,规范常见命令,软硬链接和重定向

    Linux笔记 2018-03-31