linux 学习7

linux

1、简述linux操作系统启动流程

inux系统启动流程大致是这样的:

post ->BIOS(Boot Sequence) –> MBR(GRUB) –> Kernel(ramdisk) –> rootfs –> /sbin/init(/etc/inittab)

BIOS

主板在接通电源后,BIOS会第一个获得系统的控制权。BIOS首先会对系统硬件进行检测(POST, Power On Self Test, 上电自检),自检测过程大致为:加电-CPU-ROM-BIOS-System Clock-DMA-64KB RAM-IRQ-显卡等。如果关键部件有问题,计算机会发出报警声。

自检一切正常后BIOS会调用一些设备自身ROM中的初始化代码,对这些设备进行初始化,比如显卡。这时可以看到一些初始化信息,介绍生产厂商、芯片类型等内容。

最后,BIOS会根据COMS中设置的启动顺序(Boot Sequence),依次尝试启动。当启动设备是硬盘时,BIOS会把系统控制权交给硬盘MBR中的bootloader。

MBR

MBR是Master Boot Record的简写, 即主引导记录。MBR记录一般在磁盘 0 磁道 1 扇区,共512个字节。前446个字节是BootLoader(引导程序),后 4*16 的 64 个字节是存放分区信息的,最后 2 个字节是校验信息,一般是 55AA。

大多数Linux系统使用GRUB作为BootLoader。GRUB可以引导多种操作系统,它可以识别磁盘文件系统的格式,所以只需要内核文件名和内核所在分区就可以加载内核,通过/boot/grub/grub.conf文体来配置这些信息。

GRUB分为3个阶段:

bootloader:1阶段

Stage1 的代码保存在MBR中前446字节。

 

partition:filesystem driver 1.5阶段

Stage1_5的代码允许GRUB识别多种类型的文件系统,识别每个文件系统的代码的代码保存在/boot/grub/*stage1_5 的文件中。

 

partition:/boot/grub,2阶段

Stage 2 代码读取/boot/grub/grub.conf文件,决定如何加载内核

Kernel

GRUB的最后阶段stage2会根据/boot/grub/grub.conf文件中的配置加载kernel到内存中,并将系统控制权交给kernel。

initrd是”initial RAM disk”的缩写,随kernel一起被GRUB加载进内存,在系统引导过程中挂载的一个临时根文件系统。因为Kernel为了精简,只保留了最基本的模块,因此,Kernel上并没有各种硬件的驱动程序,也就无法识rootfs所在的设备,故产生了initrd这个文件,该文件装载了必要的驱动模块。

rootfs

真正的根文件系统,作为接手initrd的。

/sbin/init

/sbin/init进程是Linux启动的第一个进程,PID=1。是所有传统的 centos 5 中sysvinit 已经淡出历史舞台,新系统普遍采用 UpStart 和 systemd 。

运行级别

运行级别:为了系统的运行或维护等目的而设定的机制;

0-6 :7个级别;

0:关机 shutdown

1:单用户模式,root用户,无须认证,维护模式;

2:多用户模式,会启动网络功能,但不会启动NFS,维护模式;

3:多用户模式,完全功能模式,文本界面,

4:预留级别,

5:多用户级别,完全功能模式,图形界面

6:重启,reboot

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

GRUB(boot loader)

grub:0.x:grub legacy

grub: 1.x:grub2

grub legacy

stage1:mbr

stage1.5:mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统;

stage2:磁盘分区(/boot/grub)

配置文件:/boot/grub/grub.conf,<—/etc/grub.conf

stage2及内核等通常放置于一个基本磁盘分区:

功用:

1.提供菜单,并提供交互式接口

e:编辑模式,用于编辑菜单:

c:命令模式,交互式接口:

2.加载用户选择的内核或操作系统

允许传递参数给内核

可隐藏此菜单

3.为菜单提供了保护机制

为编辑菜单进行认证

为启用内核或操作系统进行认证

如何识别设备:

(hd#,#)

hd#:磁盘编号,用数字标识:从0开始编号

#:分区编号,用数字表示;从0开始编号  如:(hd0,0)

grub的命令行接口

help:获取帮助列表

help keyword:获得详细帮助信息

find (hd0,0)/path/to/somefile:

root(hd0,0)

kernel /path/to/kernel_file:设定本次启动时用到的内核文件:额外还可以添加许多内核支持使用的                 cmdline参数:例如   init=/path/to/init,selinux=0

initrd /path/to/initramfs_file:设定为选定的内核提供额外文件的ramdisk;

boot:引导启动选定的内核

手动在grub命令行几口启动系统

grub>root (hd0,0)

grub>kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE

grub>initrd /initramfs-VERSION-RELEASE.img

grub>boot

配置文件:/boot/grub/grub.conf

配置选项:

default=#:设定默认启动的菜单项:编号从零开始

timeout=#:指定菜单项等待选项选择的时长

splashimage=(hd0,0)/path/to/xpm_pic_file:指明菜单背景图片文件路径

heddenmenu:隐藏菜单

password [–md5] string:惨淡编辑认证

title title:定义菜单标题,可出现多次

root (hd0,0):grub查找stage2及kernel文件所在设备分区:为grub的根

kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE:启动的内核

initrd /initramfs-VERSION-RELEASE.img:内核匹配的ramfs文件

password [–md5] string:启动选定的内核或操作系统时进行认证

grub-md5-crypt命令用来生成password密码

进入单用户模式:

1.编辑grub菜单(选定要编辑的title,而后使用e命令)

2.在选定的kernel后附加 1,s,S或single都可以

3.在kernel所在行,键入b命令

安装grub:

1.grub-install

grub-install –root-directory=ROOT /dev/DISK

2.grub

grub>root (hd0,0)

grub>setup (hd0

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

​安装引导

​    ​ks:指明kickstart文件的位置;

​    ​    ​ks=

​    ​    ​    ​   DVD drive:ks=cdrom:/path/to/kickstart_file

​    ​    ​    ​    ​Hard Drive:ks=hd:/DEVICE/PATH/TO/KICKSTART_FILE

​    ​    ​    ​    ​HTTP Server:ks=http://HOST:[PORT]/PATH/TO/KICKSTART_FILE

​    ​    ​    ​    ​FTP Server:ks=ftp://HOST:[PORT]/PATH/to/KICKSTART_FILE

​    ​    ​    ​    ​HTTPS Server:ks=https://HOST:[PORT]/PATH/TO/KICKSTART_FILE

​    ​kickstart文件的格式

​    ​    ​  命令段:

​    ​    ​    ​    ​指定各种安装前配置选项,如键盘类型等;

​    ​    ​  1.命令段中的必备命令:

​    ​    ​    ​    ​authconfig:认证式配置

​    ​    ​    ​    ​    ​authconfig –enableshadow –passalgo=sha512

​    ​    ​    ​    ​bootloader:定义bootloader的装置位置及相关配置

​    ​    ​    ​    ​    ​bootloader –location=mbr –driveorder=sda -append=”crashkernel=auto rhgb quiet”

​    ​    ​    ​    ​keyboadr:设置键盘类型

​    ​    ​    ​    ​    ​keyboard us

​    ​    ​    ​    ​lang:语言类型

​    ​    ​    ​    ​    ​lang zh_CN.UTF-8

​    ​    ​    ​    part:分区布局;

​    ​    ​    ​    ​    ​    ​part /boot –fstype=ext4 –size=500

​    ​    ​    ​    ​    ​    ​part pv.008002 –size=51200

​    ​    ​    ​    rootpw:管理员密码

​    ​    ​    ​    ​    ​    ​rootpw –iscrypted     ​    ​

​    ​​timezone:时区

​    ​    ​    ​    ​    ​    ​timezone Asia/Shanghai

​    ​    ​    ​    ​补充:分区相关的其他指令

​    ​    ​    ​    clearpart:清除分区

​    ​    ​    ​    ​    ​clearpart –none –drives=sda:清空磁盘分区;

​    ​    ​    ​    ​volgroup:创建卷组

​    ​    ​    ​    ​    ​   volgroup myvg –pesize=4096 pv.008002

​    ​    ​    ​    ​logvol:创建逻辑卷

​    ​    ​    ​    ​    ​    ​logvol /home –fstype=ext4 –name=lv_home –vgname=myvg –size=5120

​    ​    ​    ​    ​生成加密密码的方式:

​    ​    ​    ​    ​    ​    ​    ​openssl passwd -1 salt `openssl rand -hex 4`

​    ​    ​    ​   2.可选命令:

​    ​    ​    ​    ​    ​install OR upgrade:安装或升级;

​    ​    ​    ​    ​    ​text:安装界面类型,text为tui,默认为GUI

​    ​    ​    ​    ​    ​network:配置网络接口

​    ​    ​    ​    ​    ​    ​    ​network –onboot yes –device eth0 –bootproto dhcp –noipv6

​    ​    ​    ​    ​    ​fairwall:防火墙

​    ​    ​    ​    ​    ​    ​    ​firewall –disabled

​    ​    ​    ​    ​    ​selinux:SELinux

​    ​    ​    ​    ​    ​    ​    ​selinux:disabled

​    ​    ​

​    ​    ​  程序包段

​    ​    ​    ​    ​指明要安装程序包,以及包组,也包括不安装的程序包;

​    ​    ​    ​    ​    ​%packages

​    ​    ​    ​    ​    ​@group_name

​    ​    ​    ​    ​    ​package

​    ​    ​    ​    ​    ​-package

​    ​    ​    ​    ​    ​%end

​    ​    ​  脚本段

​    ​    ​    ​    ​%pre:安装前脚本

​    ​    ​    ​    ​    ​    ​    ​运行环境:运行安装介质上的微型linux系统环境;

​    ​    ​    ​    ​%post安装后脚本

​    ​    ​    ​    ​    ​    ​    ​运行环境:安装完成的系统;

​    ​    ​    ​    ​

​    ​    ​系统安装后禁用防火墙:

​    ​    ​    ​CentOS 6

​    ​    ​    ​    ​    ​service iptables stop    ​

​    ​    ​    ​    ​    ​ chkconfig iptables off

​    ​    ​    CentOS 7

​    ​    ​    ​    ​    ​systemctl stop firewall

​    ​    ​系统安装完成后禁用SELinux

​    ​    ​    ​    ​编辑/etc/sysconfig/selinux或/etc/selinux/config文件,修改SELINUX参数的值为下面其中之一:

​    ​    ​    ​    ​    ​permissive

​    ​    ​    ​    ​    ​disabled

​    ​    ​    ​    ​立即生效:

​    ​    ​    ​    ​    ​getenforce

​    ​    ​    ​    ​    ​setenforce 0

​    ​    ​定制kickstart文件:

​    ​    ​    ​    ​yum install system-config-kickstart

​    ​    ​    ​    ​system-config-kickstart  图形化的ks配置命令

​    ​    ​检查语法错误:

​    ​    ​    ​ksvalidator

​    ​    ​ 光盘镜像制作

1、将制作好的kickstart文件改名;

2、将光盘挂载上:

[root@dns ~]# mkdir /media/cdrom [root@dns ~]# mount /dev/cdrom /media/cdrom

3、新建myboot文件夹,将kickstart文件和isolinux文件一起放入;

[root@dns ~]# mkdir myboot [root@dns ~]# cp -r /media/cdrom/isolinux/ myboot/ [root@dns ~]# cp ks.cfg ./myboot/isolinux/ [root@dns ~]# rm -f ./myboot/isolinux/isolinux.cfg  [root@dns ~]# cd ./myboot/isolinux/ [root@dns isolinux]# chmod +w *

4、最后执行光盘镜像制作命令:

[root@dns ~]# 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/104482

(1)
ヤ灬兵兵ヤ灬兵兵
上一篇 2018-08-04
下一篇 2018-08-04

相关推荐

  • 进程管理

    1.进程概念内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等Process: 运行中的程序的一个副本,是被载入内存的一个指令集合进程ID(Process ID,PID)号码被用来标记各个进程UID、GID、和SELinux语境决定对文件系统的存取和访问权限,通常从执行进程的用户来继承存在生命周期task struct:Linux内核存…

    Linux笔记 2018-05-14
  • YUM安装的MySQL(MariaDB)实现多实例运行

    生产环境中,可能需要多个数据库同时在线。但一台服务器只运行一个数据库实例势必会引起资源的浪费,因此,本文介绍如何将yum安装的MySQL多开,实现多实例运行。(二进制与编译安装步骤与此类似)

    Linux笔记 2018-06-12
  • 软件包管理 yum

    yum安装过程

    2018-05-05
  • liunx基础

    在shell中可执行的命令有两类: 执行外部命令hash 缓存表   hash 常见用法 :

    Linux笔记 2018-04-01
  • ansible进阶小技巧

    用ansible写playbook的朋友可能会发现,当配置工作很多时,如果在中间过程出错了,修改后想重新执行,前面的一大堆步骤让人感觉很烦躁。虽然提供了“retry”文件,但是却只是根据host来判断重新执行,仍然不够方便;又或者,中间的某些步骤特别耗时,比如下载一个很大的数据包,每次执行特别浪费时间,想要特别的跳过。怎么办?我猜你就是把不需要的部分给注释掉…

    Linux笔记 2018-06-03
  • 简述at和crontab命令

    制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00

    Linux笔记 2018-06-07

评论列表(1条)

  • 马哥教育
    马哥教育 2018-09-20 08:45

    总结的比较到位,实操部分能把遇到的问题或者思路写出来会更好点。继续加油哦。