linux启动、grub配置以及kickstart简介
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux启动、grub配置以及kickstart简介相关的知识,希望对你有一定的参考价值。
参考技术A 本文主要针对CenOS6系统的启动流程作简介。Linux的系统启动分为几个阶段,由于运行中的系统分为用户空间层面和内核空间层面,所以一个完整的系统启动也是先启动内核文件,然后在启动用户层面的各种应用程序。Linux系统的设计属于单内核设计,但是各功能模块却支持动态的装载和卸载,极大的压缩了内核的体积,让内核的启动也更加快捷和迅速。
过程简述:
1.POST(加电自检) :主要负责检测系统外围关键设备(如:CPU、内存、显卡、I/O、键盘鼠标等)是否正常。
2.boot sequence(选择启动设备) :按次序查找各引导设备,第一个有引导程序的设备即为本次启动要用到的设备;
上述两个功能都由Bios来完成,BIOS(Basic Input / Output System),又称基本输入输出系统,是一个固化在ROM中的软件,是操作系统输入输出管理系统的一部分。
3.bootloader(引导加载器):
Linux下的引导加载器有grub leancy和grub2两种,Cenos6中使用的是前者。
MBR(主引导记录):
MBR的共由512字节组成,前446字节存放的即是bootloader。所以在选定启动设备后,收件是读取MBR中的bootloader,打开grub菜单。
grub:
功能:提供一个菜单,允许用户选择要启动的系统或不同的内核版本; 把用户选定的内核装载到RAM中的特定空间中,解压、展开,而后把系统控制权移交给内核;
gurb的实现共有3个阶段:
1st stage:位于MBR的BootLoader中,用来加载2nd stage到内存中。
1.5 stage:1和2的桥梁,用来驱动文件系统来使1阶段过渡到2阶段。
2nd stage:grub核心,/boot/grub,存放在磁盘分上,用于加载内核文件。
4.加载内核
分四个步骤:
探测可识别到的所有硬件设备;
加载硬件驱动程序;(有可能会借助于ramdisk加载驱动)
以只读方式挂载根文件系统;即rootfs
运行用户空间的第一个应用程序:/sbin/init。
内核文件:/boot//vmlinuz-VERSION-release,ramdisk文件/boot/initramfs-VERSION-release.img。
在上述的内核启动后,后续的操作都交给init程序来完成。/sbin/init程序是用户空间的第一个程序,主要完成系统初始化,步骤如下:
设置默认运行级别:
运行级别的配置文件为/etc/inittab,共0-6七个运行级别,可以在该文件中自主定义,下次启动默认进入指定的运行级别。
运行系统初始化脚本:
/etc/rc.d/rc.sysinit即为系统的初始化脚本,系统通过自动执行该脚本,从而完成对系统的设置和信息的初始化。
关闭对应级别下需要停止的服务,启动对应级别下需要开启的服务:
这里主要是指通过chkconfig所配置的开机自动启动或者关闭的各类服务。
设置登录终端:
启动图形终端:级别5需要启动
GRand Unified Bootloader,系统启动后会首先打开一个grub菜单,上图所示,可以自主选择内核、定制内核参数。grub由三个阶段组成,1st stage,1_5stage以及stage2,stage2和内核文件等通常放置于一个基本磁盘分区。
grub有自己的命令行接口:
配置文件说明:/boot/grub/grub.conf
kickstart是什么
许多系统管理员愿意使用自动化的安装方法来安装linux系统。为了满足这种需要,红帽公司建立了kickstart安装方法。使用kickstart自动化安装,系统管理员可以创建一个ks文件,该文件包含了在典型的安装过程中所遇到的问题的答案。
Kickstart文件可以存放在一个固定的位置上,在安装过程中被独立的机器所读取。这个安装方法可以支持使用单一kickstart文件在多台机器上安装Linux系统,这对于网络和系统管理员来说是个理想的选择。
如何执行kickstart安装
kickstart 安装可以使用本地光盘,本地硬盘驱动器,或通过 NFS、FTP、HTTP 来执行。
要使用 kickstart,必须:
1.创建一个正确的kickstart文件。
2.创建有kickstart文件的引导介质或者让主机可以通过网络访问该文件。
3.筹备安装过程。
4.开始kickstart安装。
创建kickstart配置文件的方式:
1. 文本编辑器编辑生成:vim
2. 用图形化界面配置:system-config-kickstat(需要安装system-config-kickstart.noarch包)
步骤:
创建光盘根目录
复制光盘下的isolinux目录到根目录下
赋予isolinux里的所有文件和目录写权限(这样就可以自定义isolinux.cfg文件)
复制修改好的ks文件到myboot目录下(这里myboot目录相当于光盘的根目录)
建立镜像
linux下怎么修改grub.cfg
一、grub2的启动配置文件grub.cfg
grub2的启动配置文件grub.cfg是/boot/grub/grub.cfg,而不是以前的memu.lst。
如果你是多系统,有Ubuntu和windows,那么用下面的命令,可以使grub2得到所以可以启动的系统。
sudo update-grub
实际就是让系统自己生成合适的grub.cfg文件。
这个grub.cfg文件是只读属性,so如果你要修改它,需要权限。
sudo chmod +w /boot/grub/grub.cfg
然后可以编辑grub.cfg了。
sudo gedit /boot/grub/grub.cfg
二、默认系统和等待时间
1、set default=0
这是说从第一项启动。每个启动项都是以menuentry开始,menuentry后面“xxx”是启动项名称,然后{xxx}是启动代码。
###
BEGIN /etc/grub.d/10_linux ###menuentry “Ubuntu, Linux
2.6.31-14-generic” {recordfail=1if [ -n ${have_grubenv} ]; then save_env
recordfail; fiset quiet=1insmod ext2set root=(hd0,6)search –no-floppy
–fs-uuid –set 040508ff-fec7-4c66-ba64-a09f8abe8059linux
/boot/vmlinuz-2.6.31-14-generic
root=UUID=040508ff-fec7-4c66-ba64-a09f8abe8059 ro quiet splashinitrd
/boot/initrd.img-2.6.31-14-generic}menuentry “Ubuntu, Linux
2.6.31-14-generic (recovery mode)” {recordfail=1if [ -n ${have_grubenv}
]; then save_env recordfail; fiinsmod ext2set root=(hd0,6)search
–no-floppy –fs-uuid –set 040508ff-fec7-4c66-ba64-a09f8abe8059linux
/boot/vmlinuz-2.6.31-14-generic
root=UUID=040508ff-fec7-4c66-ba64-a09f8abe8059 ro singleinitrd
/boot/initrd.img-2.6.31-14-generic}### END /etc/grub.d/10_linux ######
BEGIN /etc/grub.d/20_memtest86+ ###menuentry “Memory test (memtest86+)”
{linux16 /boot/memtest86+.bin}menuentry “Memory test (memtest86+, serial
console 115200)” {linux16 /boot/memtest86+.bin
console=ttyS0,115200n8}### END /etc/grub.d/20_memtest86+ ###### BEGIN
/etc/grub.d/30_os-prober ###menuentry “Microsoft Windows XP Home Edition
(on /dev/sda1)” {insmod ntfsset root=(hd0,1)search –no-floppy –fs-uuid
–set 5c108a1c1089fd70drivemap -s (hd0) ${root}chainloader +1}if
keystatus; thenif keystatus –shift; thenset timeout=-1elseset
timeout=10fielseif sleep$verbose –interruptible 3 ; thenset
timeout=10fifi### END /etc/grub.d/30_os-prober ###### BEGIN
/etc/grub.d/10_linux ###
menuentry “Ubuntu, Linux 2.6.31-14-generic” {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd0,6)
search –no-floppy –fs-uuid –set 040508ff-fec7-4c66-ba64-a09f8abe8059
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=040508ff-fec7-4c66-ba64-a09f8abe8059 ro quiet splash
initrd /boot/initrd.img-2.6.31-14-generic
}
menuentry “Ubuntu, Linux 2.6.31-14-generic (recovery mode)” {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
insmod ext2
set root=(hd0,6)
search –no-floppy –fs-uuid –set 040508ff-fec7-4c66-ba64-a09f8abe8059
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=040508ff-fec7-4c66-ba64-a09f8abe8059 ro single
initrd /boot/initrd.img-2.6.31-14-generic
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry “Memory test (memtest86+)” {
linux16 /boot/memtest86+.bin
}
menuentry “Memory test (memtest86+, serial console 115200)” {
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry “Microsoft Windows XP Home Edition (on /dev/sda1)” {
insmod ntfs
set root=(hd0,1)
search –no-floppy –fs-uuid –set 5c108a1c1089fd70
drivemap -s (hd0) ${root}
chainloader +1
}
if keystatus; then
if keystatus –shift; then
set timeout=-1
else
set timeout=10
fi
else
if sleep$verbose –interruptible 3 ; then
set timeout=10
fi
fi
### END /etc/grub.d/30_os-prober ###
我
的第五个启动项是menuentry “Microsoft Windows XP Home Edition (on
/dev/sda1)”,我要它默认是以xp启动,所以修改为set
default=”4″。(hd0,1)表示第一块硬盘的第一个分区,我的Linux在(hd0,6)。
当然,你也可以把你需要默认启动的系统放到最前面,那么就还是set default=0
2、set timeout=10
if [ ${recordfail} = 1 ]; then
set timeout=-1
else
set timeout=10
fi
这里停留在grub选择系统界面的时间就是10秒,即set timeout=10。
有时候我并不想等待这么久,我直接启动xp,需要Ubuntu时才按几下Shift键进入grub选择系统界面。可以添加如下代码:
if keystatus; then
if keystatus –shift; then
set timeout=-1
else
set timeout=10
fi
else
if sleep$verbose –interruptible 3 ; then
set timeout=10
fi
fi
以上是关于linux启动、grub配置以及kickstart简介的主要内容,如果未能解决你的问题,请参考以下文章