Linux启动(续)
2015-08-06 17:20
621 查看
runlevel (启动级别): 查看命令 :who -r 或 runlevel
0:halt 关机
1:单用户模式,直接以管理员身份登录,不需要密码
2:多用户模式,但是不能挂载nfs
3:多用户模式
4:保留未用
5:图形界面
6:reboot重启
默认运行级别在/etc/inittab:
id:3:initdefault: 默认为3
我们知道bootloader有lilo、grub、spfdisk等,目前最常用的就是grub;
grub是放在MBR中,但是MBR总共只有512Bytes,分区表占64Bytes,grub只能用到446Bytes
grub被分为2个阶段:
stage 1 :存放grub主程序
stage 2 :主要配置文件,一般为/boot/grub/menu.lst ————> 其实是链接/boot/grub/grub.conf
来看一下grub.conf:
再就轻易的修改root密码,那是绝对不行的。所以我们可以给grub设置一个密码,先生成密码,然后再加到title上面那一行
cpio(copy in/out)主要是用来建立或者还原备份档的工具
参考:鸟哥Linux私房菜,马哥Linux教学视频。
0:halt 关机
1:单用户模式,直接以管理员身份登录,不需要密码
2:多用户模式,但是不能挂载nfs
3:多用户模式
4:保留未用
5:图形界面
6:reboot重启
默认运行级别在/etc/inittab:
id:3:initdefault: 默认为3
我们知道bootloader有lilo、grub、spfdisk等,目前最常用的就是grub;
grub是放在MBR中,但是MBR总共只有512Bytes,分区表占64Bytes,grub只能用到446Bytes
grub被分为2个阶段:
stage 1 :存放grub主程序
stage 2 :主要配置文件,一般为/boot/grub/menu.lst ————> 其实是链接/boot/grub/grub.conf
来看一下grub.conf:
default=0 #设定默认启动的title编号,读秒时间结束后,就会启动第一个title timeout=5 #设置默认读秒为5秒,给用户选择 splashimage=(hd0,0)/grub/splash.xpm.gz #grub背景图片在磁盘的位置 hiddenmenu #隐藏菜单 password --md5 $1$ImLrM$VqU.vu9UCq.M7M.Q0hN6c1 #给grub设定密码 title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64) #内核标题,系统名等,可以修改 root (hd0,0) #内核所在的磁盘,(hd0,0)表示第一块盘,第一个分区 kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=e39a2639-0c77-4b7e-8c6b-bb34bd658eb4 #内核文件及路径 initrd /initramfs-2.6.32-431.el6.x86_64.img #虚拟根文件系统当root用户密码忘记时,我们可以选择单用户模式来修改密码,但是什么人都可以重启然后进入单用户模式
再就轻易的修改root密码,那是绝对不行的。所以我们可以给grub设置一个密码,先生成密码,然后再加到title上面那一行
[root@Linux ~]# grub-md5-crypt Password: Retype password: $1$ImLrM$VqU.vu9UCq.M7M.Q0hN6c1我们可以尝试修复和安装一个grub:
[root@Linux ~]# grub grub> root (hd0,0) #判断内核在磁盘的位置 root (hd0,0) Filesystem type is ext2fs, partition type 0x83 grub> setup (hd0) #检查并修复grub setup (hd0) Checking if "/boot/grub/stage1" exists... no Checking if "/grub/stage1" exists... yes Checking if "/grub/stage2" exists... yes Checking if "/grub/e2fs_stage1_5" exists... yes Running "embed /grub/e2fs_stage1_5 (hd0)"... 27 sectors are embedded. succeeded Running "install /grub/stage1 (hd0) (hd0)1+27 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded Done.我们也可以尝试模拟grub引导加载内核:
先创建两个分区:/dev/hda1、/dev/hda2 [root@Linux ~]# mkdir /mnt/{boot,root} #创建两个目录,boot做引导区,root为根目录 [root@Linux root]# mkdir bin dev home proc sbin tmp var etc lib mnt root selinux sys usr [root@Linux ~]# mke2fs -j /dev/hda1 #初始化磁盘为ext3格式 [root@Linux ~]# mke2fs -j /dev/hda2 [root@Linux ~]# mount /dev/hda1 /mnt/boot #分别挂载 [root@Linux ~]# mount /dev/hda2 /mnt/root [root@Linux ~]# grub-install --root-directory=/mnt /dev/hda #安装grub指定安装目录 [root@Linux ~]# cp /boot/vmlinuz-2.6.18-194.el5 /mnt/boot/vmlinuz #将内核和虚拟根目录直接复制过来 [root@Linux ~]# cp /boot/initrd-2.6.18-194.el5.img /mnt/boot/ [root@Linux boot]# mv initrd-2.6.18-194.el5.img initrd-2.6.18-194.el5.img.gz #用file查看initrd文件类型并修改,再解压 [root@Linux boot]# gzip -d initrd-2.6.18-194.el5.img.gz [root@Linux boot]# cpio -id <initrd-2.6.18-194.el5.img #再用file查看,用 cpio 解压 [root@Linux boot]# vim init #修改init,指定真的根目录,这一步本来是启动过程中,执行程序的结果 mkrootdev -t ext3 -o defaults,ro /dev/VolGroup00/LogVol00 ——> /dev/hda2 [root@Linux boot]# find . | cpio -H newc --quiet -o | gzip -9 > /mnt/boot/initrd.gz #改完后再用cpio压缩为initrd.gz [root@Linux boot]# vim grub/grub.conf #配置自己的grub.conf default=0 timeout=5 title Linux (LFL Computer) root (hd0,0) kernel /vmlinuz initrd /initrd.gz [root@Linux root]# cp /sbin/init /mnt/root/sbin #复制系统init和bash [root@Linux root]# cp /bin/bash /mnt/root/bin 并用ldd命令查看他们所依赖的库文件,然后复制到/mnt/root/lib里面 [root@Linux ~]# chroot /mnt/root #测试 [root@Linux root]# vim etc/inittab #设置init配置文件 id:3:initdefault: si::sysinit:/etc/rc.d/rc.sysinit [root@Linux root]# vim etc/rc.d/rc.sysinit #设置默认运行环境 echo -e "Welcome to LFLong Computer " /bin/bash [root@Linux root]# chmod +x etc/rc.d/rc.sysinit续 cpio 命令的用法:
cpio(copy in/out)主要是用来建立或者还原备份档的工具
-i或--extract 执行copy-in模式,还原备份档。 -d或--make-directories 如有需要cpio会自行建立目录 -H<备份格式> 指定备份时欲使用的文件格式。 --quiet 不显示复制了多少区块。 -o或--create 执行copy-out模式,建立备份档。 -c:使用旧ASCII备份格式; cpio -id < initrd-2.6.18-194.el5.img #将该文件(输入重定向)还原 find . | cpio -H newc --quiet -o | gzip -9 > /mnt/boot/initrd.gz #将当前目录下所有文件已newc格式建立备份并压缩为.gz格式将这个配置好的磁盘拿下来,装在别的没有系统的主机上,开机就会出现自己配置的界面了,这就是基本的开机过程。这只是一个简单的模拟,而真正的启动过程会比这个复杂很多值得我们去学习和研究。
参考:鸟哥Linux私房菜,马哥Linux教学视频。
相关文章推荐
- CentOS 6.4下Percona Xtrabackup安装部署错误处理
- linux虚拟机安装vmtools
- 每天一个linux命令【转】
- 另一个ISIS配置-来自leaf(linux embedded a f)
- nodejs环境搭建(linux版)
- linux查看RAID信息
- 总结Linux下查看流量工具
- Linux学习(三) 展讯Android 4.0编译 -- Makefile
- linux内核日志 dmesg 出现的提示及含意
- 为Python配置caffe(基于linux)
- Linux 磁盘挂载共享
- 开发笔记-Linux-VI-MySQL
- Linux时间子系统之八:动态时钟框架(CONFIG_NO_HZ、tickless)
- Linux进程间通讯基础
- Linux时间子系统之七:定时器的应用--msleep(),hrtimer_nanosleep()
- 三条Linux命令查看硬件信息
- kickstart+vsftp+dhcp+tftp 无人值守安装centos6
- Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现
- Linux时间子系统之五:低分辨率定时器的原理和实现
- Linux时间子系统之四:定时器的引擎:clock_event_device