从系统的启动过程分析,为什么我们划分分区的时候 /sbin 、/bin、/lib、/dev不能做为独立的分区?...
Bootload 从磁盘上加载 vmlinuz-2.6.18-194.el5 和 initrd-2.6.18-194.el5.img 到内存中并展开,进而完成系统的初始化工作。
[root@node2 ~]# vim /boot/grub/grub.conf # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda2 # initrd /initrd-version.img #boot=/dev/sda1 # 设置默认启动的操作系统,0 表示:第一个 title 定义的操作系统。 default=0 # 可以这么说,GRUB 是一个交互式的程序,这里定义的“超时时间”,超过 timeout 定义的 # 时间,用户不与 GRUB 进行交互,GRUB就自动启动default的操作系统。 timeout=5 # 设置 GRUB 的背景图片,图片位置在第一块磁盘的第一分区, 站在 Linux 磁盘系统的角度也 # 就是 /boot (dev/sda1 第一分区), # 也就是说图片的位置在 /boot/grub/splash.xpm.gz splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz # 使用 hiddenmenu 来隐藏 GRUB 菜单。 hiddenmenu # GRUB # GRUB 的密码有两种: # 1、设置 GRUB 的密码,password 设置密码的位置在title定义系统前面。在启动系 # 统时候,如果想要操作控制(如进入单用户模式) GRUB 则需要输入该密码。 # 2、如果 title 使用 password 设置了密码。启动该系统时,要要求用户输入正确有 # 口令,才可以启动该系统的。 password --md5 $1$28AGIPNd$u85jSwiyrsReVQGkZv6JD/ title CentOS (2.6.18-194.el5)root (hd0,0)kernel /vmlinuz-2.6.18-194.el5 ro root=LABEL=/ quietinitrd /initrd-2.6.18-194.el5.img
说明:
上述就是 grub(boot load)的配置文件,在 grub 的指挥下把磁盘上的 kernel 和 initrd 加载到内存中并运行。
查看 /boot/initrd-2.6.18-194.el5.img 把它拆开就成下述样子
root@node2 ~]# ll /tmp/test/ total 5912 drwx------ 2 root root 4096 Jun 19 07:44 bin drwx------ 3 root root 4096 Jun 19 07:44 dev drwx------ 2 root root 4096 Jun 19 07:44 etc -rwx------ 1 root root 2536 Jun 19 07:44 init drwx------ 3 root root 4096 Jun 19 07:44 lib drwx------ 2 root root 4096 Jun 19 07:44 proc lrwxrwxrwx 1 root root 3 Jun 19 07:44 sbin -> bin drwx------ 2 root root 4096 Jun 19 07:44 sys drwx------ 2 root root 4096 Jun 19 07:44 sysroot
lib 目录保存了,initrd 加载的模块
[root@node2 ~]# ll /tmp/test/lib/ total 1200 -rw------- 1 root root 17908 Jun 19 07:44 dm-log.ko -rw------- 1 root root 11188 Jun 19 07:44 dm-mem-cache.ko -rw------- 1 root root 8808 Jun 19 07:44 dm-message.ko -rw------- 1 root root 75644 Jun 19 07:44 dm-mod.ko -rw------- 1 root root 74148 Jun 19 07:44 dm-raid45.ko -rw------- 1 root root 18512 Jun 19 07:44 dm-region_hash.ko -rw------- 1 root root 147376 Jun 19 07:44 ext3.ko -rw------- 1 root root 177220 Jun 19 07:44 scsi_mod.ko -rw------- 1 root root 31560 Jun 19 07:44 scsi_transport_spi.ko ...
bin 目录保存了, initrd 需要使用到的命令工具
[root@node2 ~]# ll /tmp/test/bin/ total 4752 -rwx------ 1 root root 1075172 Jun 19 07:44 dmraid -rwx------ 1 root root 476292 Jun 19 07:44 insmod -rwx------ 1 root root 862468 Jun 19 07:44 kpartx lrwxrwxrwx 1 root root 10 Jun 19 07:44 modprobe -> /sbin/nash -rwx------ 1 root root 2427036 Jun 19 07:44 nash
查看该小的 linux 的运行过程
#!/bin/nash mount -t proc /proc /proc setquiet echo Mounting proc filesystem echo Mounting sysfs filesystem mount -t sysfs /sys /sys echo Creating /dev mount -o mode=0755 -t tmpfs /dev /dev mkdir /dev/pts mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts mkdir /dev/shm mkdir /dev/mapper echo Creating initial device nodes mknod /dev/null c 1 3 。。。 mknod /dev/systty c 4 0 mknod /dev/tty c 5 0 mknod /dev/console c 5 1 。。。 mknod /dev/tty0 c 4 0 。。。 mknod /dev/tty12 c 4 12 。。。 mknod /dev/ttyS3 c 4 67 echo Setting up hotplug. hotplug echo Creating block device nodes. mkblkdevs echo "Loading ehci-hcd.ko module" insmod /lib/ehci-hcd.ko echo "Loading ohci-hcd.ko module" insmod /lib/ohci-hcd.ko echo "Loading uhci-hcd.ko module" insmod /lib/uhci-hcd.ko mount -t usbfs /proc/bus/usb /proc/bus/usb echo "Loading jbd.ko module" insmod /lib/jbd.ko echo "Loading ext3.ko module" # 装载 ext3 文件系统 insmod /lib/ext3.ko echo "Loading scsi_mod.ko module" # 由于 Linux 是宏(单)内核设计的,它把磁盘驱动做成了模块。bootload 从 MBR 把内核加 # 载到内存展开并初始化,它首先要启动init 进程对系统的各项工作 # 进行初始化操作。启动init进程,就需要把二进制运行程序/sbin/init,从磁盘中加载到内 # 存。就要从磁盘上读取数据。但是 bootload 加载的内核中没有磁盘的驱动程序, # 所以就没法从磁盘中读取数据。所以 Linux 就使用了initrd-2.6.18-194.el5.img 把 # scsi 磁盘驱动装载进来。 # ext2文件系统是直接做进内核的,可以使用该方法来查看是否把 ext2 文件系统做进了内核 # [root@node2 ~]# cat /boot/config-2.6.18-194.el5 | grep -i ext2 # CONFIG_EXT2_FS=y ----> 值不为 m ,所以不是做成模块的。 # CONFIG_EXT2_FS_XATTR=y # # 上面也使用了 insmod /lib/ex3.ko 把 ex3 文件系统装载进来了。GRUB 包含了磁盘的 # 分区表,所以这个时候内核就可以访问磁盘上的数据了。 insmod /lib/scsi_mod.ko echo "Loading sd_mod.ko module" insmod /lib/sd_mod.ko echo "Loading scsi_transport_spi.ko module" insmod /lib/scsi_transport_spi.ko 。。。 echo "Loading dm-mem-cache.ko module" insmod /lib/dm-mem-cache.ko echo "Loading dm-mod.ko module" insmod /lib/dm-mod.ko echo "Loading dm-log.ko module" insmod /lib/dm-log.ko echo "Loading dm-region_hash.ko module" insmod /lib/dm-region_hash.ko echo "Loading dm-message.ko module" insmod /lib/dm-message.ko echo "Loading dm-raid45.ko module" insmod /lib/dm-raid45.ko echo Waiting for driver initialization. stabilized --hash --interval 1000 /proc/scsi/scsi mkblkdevs echo Scanning and configuring dmraid supported devices resume LABEL=SWAP-sda3 # 创建 root 根设备,并以只读方式挂载之。 echo Creating root device. mkrootdev -t ext3 -o defaults,ro sda2 echo Mounting root filesystem. mount /sysroot echo Setting up other filesystems. setuproot # 切换至“根目录”并启动 init 进程。 cho Switching to new root and running init. switchroot
说明:
由于系统启动的时候,只以只读的方式挂载了 ”/“ 根目录,根目录存储有系统启动所需的各项工具,配置文件和链接库。
对于Red Hat Enterprise Linux来说,其根文件系统必须至少包括/etc、/bin、/sbin、/bin和/dev等目录,否则无法启动。
所以,要注意我们装系统划分分区的时候,是不可以把 /etc、/bin、/sbin、/lib 、/dev 划分为独立的分区的。
转载于:https://blog.51cto.com/9528du/1428127
从系统的启动过程分析,为什么我们划分分区的时候 /sbin 、/bin、/lib、/dev不能做为独立的分区?...相关推荐
- Linux系统开机启动过程分析
开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程.分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径. 启动第一步--加载BIOS 当你打开计算机电源,计算机 ...
- linux内核中启动页面,Linux内核启动过程分析
下面给出内核映像完整的启动过程: arch/x86/boot/header.S: --->header第一部分(以前的bootsector.S): 载入bootloader到0x7c00处,设 ...
- android动态分区AB升级,Android A/B System OTA分析(四)系统的启动和升级
Android从7.0开始引入新的OTA升级方式,A/B System Updates,这里将其叫做A/B系统,涉及的内容较多,分多篇对A/B系统的各个方面进行分析.本文为第四篇,系统的启动和升级. ...
- ghost系统无法启动
http://www.utosee.com/post/ghost180.html 今天在做样机的时候,遭遇了一个很少遇到的问题,ghost系统之后无法启动,于是今天就写写ghost系统无法启动的若干可 ...
- Android A/B System OTA分析(四)系统的启动和升级
Android从7.0开始引入新的OTA升级方式,A/B System Updates,这里将其叫做A/B系统,涉及的内容较多,分多篇对A/B系统的各个方面进行分析.本文为第四篇,系统的启动和升级. ...
- TD-SCDMA系统中随机接入过程分析
URL:http://tonyduan823.spaces.live.com/blog/cns!1AF1C2173485F09C!4584.trak TD-SCDMA系统中随机接入过程分析(广东通信技 ...
- 关于嵌入式系统的启动(装载)
关于嵌入式系统的启动 (SHARE FOR ALL) 嵌入式 Linux 启动分为两个部分,系统引导与 Linux 启动.系统引导将完成 Linux 装入内存前,初始化 CPU 和相关 IO 设备, ...
- 嵌入式系统的启动过程
嵌入式系统的启动过程 嵌入式Linux启动分为两个部分,系统引导与Linux启动.系统引导将完成Linux装入内存前,初始化CPU和相关IO设备,并将Linux调入内存的工作.系统引导主要由BootL ...
- 详解linux系统的启动过程及系统初始化
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://chrinux.blog.51cto.com/6466723/1192004 一. ...
最新文章
- 04封装 里氏转换 多态
- 【Android 逆向】arm 汇编 ( 使用 IDA 解析 arm 架构的动态库文件 | 使用 IDA 打开 arm 动态库文件 | 切换 IDA 中汇编代码显示样式 )
- mysql 索引生命周期_MYSQL 索引(一)--- 简介
- 数字转字符函数_Excel之文本函数CONCATENATE/TEXT/LEFT/MID/RIGHT/FIND/LEN
- 微信小程序格创校园跑腿小程序v1.1.64+前端
- 谷歌大脑联手Hinton提出SimCLR新框架,疯狂提升自监督学习性能
- How to check firmware and drivers of a VMware ESXi host
- java 发送邮件怎么抄送,Java实现邮件发送(二)
- SLA服务可用性4个9是什么意思?如何保证服务的高可用性 HA(High Availability)?...
- 360浏览器如何设置默认极速模式
- OpenGL GLM环境配置
- 网易云音乐 linux x32,网易云音乐 Win10 UWP 正式变为 Win32 转制版
- Ngnix 配置文件快速入门
- 为FishBot模型注入物理属性并在Gazebo中显示
- mongodb数据库自动备份
- h5活动是什么意思_浅谈什么是H5页面,怎么制作h5页面
- 【Oracle】plsql连接64位的Oracle
- css使用定义动画anima,CSS Transform和动画
- 环德无人便利店面向全国代理加盟连锁便利店
- Jenkins使用6--jenkins git timeout
热门文章
- 从事数据科学前必须知道的五件事儿
- ie8下jquery改变PNG的opacity出现黑边,ie6下png透明解决办法
- Word组件 Spire.Doc for .NET V6.0.3发布 | 修复多个重大bug
- 基于docker部署的微服务架构(四): 配置中心
- 【转】IOS中Json解析的四种方法
- NBU备份之一 Windows操作系统BMR的配置
- PLSQL_海量数据处理系列3_索引
- 如何正确使用SqlConnection
- 移植uboot第一步:下载,编译,烧到板子上试验
- Linux查看CPU相关信息