Linux启动过程中文件系统的加载
Linux引导与配置文件加载过程

Linux引导及配置文件加载过程解读文章分类:操作系统??本文包括3部分内容1、 Linux的引导过程2、 Linux 的运行级别3、 /etc/inittab与/etc/rc.d/ 与/etc/rc.d/init.d的关系关键词:Linux引导过程、运行级别、inittab与 init.d 与 rc.d一、 Linux的引导过程系统加电之后,首先进行的硬件自检,然后是bootloader对系统的初始化,加载内核。
内核被加载到内存中之后,就开始执行我们的系统设置了。
一旦内核启动运行,对硬件的检测就会决定需要对哪些设备驱动程序进行初始化。
从这里开始,内核就能够挂装根文件系统(这个过程类似于Windows识别并存取C盘的过程)。
内核挂装了根文件系统,并已初始化所有的设备驱动程序和数据结构等之后,就通过启动一个叫init的用户级程序,完成引导进程。
二、运行级别(run level)Init进程是系统启动之后的第一个用户进程,所以它的pid(进程编号)始终为1。
init 进程上来首先做的事是去读取/etc/目录下 inittab文件中initdefault id值,这个值称为运行级别(run-level)。
它决定了系统启动之后运行于什么级别。
运行级别决定了系统启动的绝大部分行为和目的。
这个级别从0到 6 ,具有不同的功能。
不同的运行级定义如下:# 0 - 停机(千万别把initdefault设置为0,否则系统永远无法启动)# 1 - 单用户模式# 2 - 多用户,没有 NFS# 3 - 完全多用户模式(标准的运行级)# 4 –系统保留的# 5 - X11 (x window)# 6 - 重新启动(千万不要把initdefault 设置为6,否则将一直在重启)三、 /etc/rc.d/与/etc/rc.d/init.d的关系先解释一下init.d。
这个目录存放的是一些脚本,一般是linux以rpm包安装时设定的一些服务的启动脚本。
linux操作系统试卷(1)

一.填空题:1. 在Linux系统中,以()方式访问设备。
2. Linux内核引导时,从文件()中读取要加载的文件系统。
3. 链接分为:()和 ()。
4. 某文件的权限为:d-rw-_r--_r--,用数值形式表示该权限,则该八进制数为:(),该文件属性是目录。
5. 前台起动的进程使用()终止。
6. 安装Linux系统对硬盘分区时,每个磁盘最多可以有()个分区。
7. 编写的Shell程序直接使用前必须赋予该脚本文件()权限。
8. 系统()分区是作为系统虚拟存储器的一块区域。
9. 在安装Linux系统中,使用()程序对网卡的网络进行配置。
10. 唯一标识每一个用户的是()。
11. DHCP可以实现()。
12.()命令可以测试网络中本机系统是否能到达一台远程主机,所以常常用于测试网络的连通性。
13. vi编辑器具有三种工作模式:()模式和()模式以及()模式。
14. 可以用ls –al命令来观察文件的权限,每个文件的权限都用10位表示,并分为四段,其中第一段占 1 位,表示(),第二段占3位,表示()的权限。
15. DNS实际上是分布在internet上的主机信息的数据库,其作用是实现()和()之间的转换。
16. ()是实现WWW服务器功能的应用程序,即通常所说的“浏览web服务器”,在服务器端为用户提供浏览 web服务的就是apache应用程序。
17. CD-ROM标准的文件系统类型是()。
18. Linux使用支持Windows9.x/2000长文件名的文件系统的类型是()。
19.在Linux系统中,用来存放系统所需要的配置文件和子目录的目录是()。
20. Linux中()只能建立对文件链接。
()可以跨不同文件系统创建。
21. 结束后台进程的命令是()。
22. 在超级用户下显示Linux系统中正在运行的全部进程,应使用的命令及参数是()。
23. 管道文件的属性位是()。
24. 将前一个命令的标准输出作为后一个命令的标准输入,称之为()。
Initrd的加载过程

执行 /linuxrc 脚本;
init()函数分析
static int init(void * unused) {
lock_kernel(); do_basic_setup();
prepare_namespace();
/* * Ok, we have completed the initial bootup, and * we're essentially up and running. Get rid of the * initmem segments and start the user-mode stuff.. */ free_initmem(); unlock_kernel();
优点
把更的内核功能条目编译成模块,减小
了内核大小;
面对各种不同的硬件架构,可以使用initrd
中的linuxrc按需进行模块加载以驱动硬件, 从而提高kernel的可移植性。
使用initrd时的系统启动顺序
1. bootloader将内核和initrd根文件系统加载到内存中;
2. 内核初始化 ram disk 空间并把initrd根文件系统解压释放到 ram disk 中,同时释放原initrd使用的内存;
• do_basic_setup():对系统初始化,系统硬
件此时只有cpu子系统在运转,内存管理和 进程管理也开始工作了;
• prepare_namespace(void):决定根设备
的挂载以及切换根文件系统;
• initrd_load(): 创建 ramdisk 设备文件,
将initrd文件系统释放到 ramdisk 中去;
LINUX网络管理认证试题

1. 红旗Linux典型安装:A. 占用的硬盘空间较少B. 没有Xwindow图形系统C. 无KDE桌面环境D. 适合对于Linux系统比较熟悉的用户2. 为使来访者具有一定的权限同时保证系统的安全,我们一般将guest acount 来宾帐户设置为________A. guestB. nobodyC. otherD. common3. 当系统工作负载增加时,CPU的_______将占很大比重。
A. 用户时间B. 系统时间C. 空闲时间D. 进程时间4. 我们可以使用________命令来查看导出的环境变量,这一命令的输出结果由两列组成,左边一列是变量的名字,右边一列是相应变量的值。
A. whichB. manC. atD. env5 . 可加载模块一般位于系统的_______目录下:A. /lib/modulesB. /lib/modules/x.y.z(x.y.z是内核的版本号)C. /usr/libD. /usr/local/lib6. 命令fdisk /mbr的作用是:A. 格式化主分区B. 删除安装在主分区的LiloC. 备份安装在主分区的LiloD. 安装Lilo到主分区7. 使用PS获取当前运行进程的信息时,输出内容PPID的含义为:A. 进程的用户IDB. 进程调度的级别C. 进程IDD. 父进程ID8. 如果我们先用mount命令加载光驱设备到/mnt/cdrom下,接着我们cd 进入该目录,但用IS列出光盘内容后,我们需要换一张CD,这时我们需要先执行_____操作。
A. 使用umount卸载该设备B. 直接按光驱的退盘键C. 退出/mnt/cdrom目录D. 重新加载设备mount -a为了统计文件系统中未用的磁盘空间,我们可以使用________命令。
A. duB. dfC. mountD. ln关于安装方式说法错误的是:A. 图形安装模式耗费的系统资源比较少,字符方式耗费的系统资源较多B. 字符方式速度也比图形方式略快C. 图形安装方式易于使用D. 如果红旗Linux的安装程序无法启动图形安装程序,即使用户选择图形安装,也会自动的转入字符安装方式为加载WinNT的NTFS文件系统,我们需要指定该分区的类型号为________A. 82B. 83C. 0bD. 17一个完整的/etc/fstab文件如下所示,在这个文件中,表示引导时检查磁盘的次序的参数是第________列信息。
linux grub 参数

linux grub 参数Linux Grub是一个开源的引导加载程序,用于在计算机启动时加载操作系统。
Grub的参数是在启动时传递给Grub引导程序的一系列选项和设置。
这些参数可以用于配置和调整系统的各种功能和行为。
本文将介绍几个常用的Grub参数,并详细解释它们的作用和用法。
1. root:指定系统根目录的设备或分区。
这个参数告诉Grub操作系统的根文件系统在哪里。
例如,root=/dev/sda1表示根文件系统位于第一个硬盘的第一个分区上。
2. kernel:指定要加载的操作系统内核文件。
这个参数告诉Grub 要加载哪个操作系统的内核。
例如,kernel /vmlinuz-5.4.0-42-generic表示要加载名为vmlinuz-5.4.0-42-generic的内核文件。
3. initrd:指定用于引导过程中的初始内存文件系统镜像。
这个参数告诉Grub在引导过程中使用哪个内存文件系统镜像。
例如,initrd /initrd.img-5.4.0-42-generic表示使用名为initrd.img-5.4.0-42-generic的镜像。
4. quiet:禁用内核启动信息的输出。
这个参数告诉Grub在启动过程中不显示任何启动信息。
这在需要静默启动系统时非常有用。
5. splash:显示启动画面。
这个参数告诉Grub在启动过程中显示一个启动画面,提供更好的用户体验。
6. single:以单用户模式启动系统。
这个参数告诉Grub在启动时进入单用户模式,只启动基本的系统服务。
这在需要进行系统维护或故障排除时非常有用。
7. nomodeset:禁用显卡的核心模式设置。
这个参数告诉Grub在启动过程中不使用显卡的核心模式设置,避免可能的显卡兼容性问题。
8. acpi=off:禁用高级配置和电源接口。
这个参数告诉Grub在启动过程中禁用高级配置和电源接口,可以解决一些与电源管理相关的问题。
9. noapic:禁用高级可编程中断控制器。
linux系统管理选择题参考..

系统管理考试模拟题一、单选题1当系统工作负载增加时,CPU 的 A.用户时间 B.系统时间C.空闲时间D.进程时间2、系统交换分区的类型代号为 ______________ A A.82B.83C.ObD.17 3、内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,通过启动一个用户 init 的方式,完成。
在这个过程中in it 进程的进程号 PID 为___________ B A.D.1005、在缺省情况下,使用ls -color 命令显示当前目录下的所有文件时,对于可执行文件一般 显示为 B A. 红 B.绿 C.黄D.蓝6、 我们将逻辑分区建立在 _____________ B 分区上 A. 从分区 B.扩展分区 C.主分区D.第二分区7、 命令fdisk /mbr 的作用是 _____________ B A.格式化主分区 B.删除安装在主分区的 LiLoC.备份安装在主分区的 LiLoD.安装LiLo 到主分区8、 命令” hdparm -g /dev/had ”的含义是: ___________ C A.删除设备hda B.改变设备hda C.显示had 设备的参数 D.检查had 设备9、一般情况下,系统启动过程4、通过修改文件 A./etc/mtabC ,可以设定开机时候自动安装的文件系统B./etc/fastbootC./etc/fstabD./etc/i netd.conf ___________ A 将占很大比重B.1C.2自动加载的文件系统信息是存放在 ____________ D文件中A. /usr/sbi n/cfdisk B./sb in /fdiskC./etc/mtabD./etc/fstab10、当程序正从键盘上读取标准输入时,如果希望终止输入,告诉系统已经输完了全部内容,可以键入_____________ CB.Ctrl+WD.Ctrl+V11、 执行ps 命令,有如下输出,如果需要终止 bash 的运行,需要采用的方法是: PID TTYTIME CMD 336 pts/1 00:00:00 logi n 337 pts/1 00:00:00 bash 356 pts/1 00:00:00 ps ________ CA. #kill bashB. #kill pts/1C. #kill 337D. #kill !33712、 假设用户guest 拥有文件test 的所有权,现在他希望设置该文件的权限使得该文件仅他 本人能读、写和执行该文件,如果他用 ls -al 查看设置好后的文件权限位,并将显示结果换算成形如XXX 的数字表达,结果是: ______________ CA. 566B. 666C. 700D. 77713、 root 文件系统一旦安装完毕, 内核将启动名为 —C ________ 的程序,这也是引导过程完成 后,内核运行的第一个程序。
解决mount root fs问题的方法

解决mount root fs问题的方法在Linux系统中,"mount root fs"问题是一个常见的技术难题,通常发生在系统启动过程中,由于根文件系统未能正确挂载而导致系统无法正常加载。
下面将详细介绍几种解决这一问题的方法。
一、理解"mount root fs"问题"mount root fs"问题指的是在Linux系统启动时,内核未能成功挂载作为根文件系统的分区。
这可能是由于多种原因造成的,如文件系统损坏、分区表错误、挂载选项问题等。
二、解决方法1.修复文件系统如果文件系统受损,可以使用fsck工具进行修复。
通常,在系统启动时,可以通过以下步骤进行:- 重启系统,进入GRUB引导加载器界面。
- 选择需要启动的Linux内核,按e键进入编辑模式。
- 找到以"linux"或"linux16"开头的行,通常包含启动参数。
- 在行尾添加"init=/bin/bash"或"rw init=/sysroot/bin/sh",按Ctrl + X或F10启动。
- 在紧急模式下,运行"fsck -y /dev/sdXn"(将sdXn替换为根文件系统的设备名和分区号)来检查和修复文件系统。
- 修复完成后,执行"exec /sbin/init"或"exec switchroot /sysroot"来继续启动。
2.修改GRUB启动参数如果是挂载选项问题,可以在GRUB启动参数中修改:- 同样进入GRUB编辑模式。
- 找到启动参数行,修改或添加"ro"为"rw",表示以读写模式挂载根文件系统。
- 或者,尝试移除"rhgb"(redhat graphics boot)和"quiet"参数,以便在启动过程中查看可能的错误信息。
RHCE课程RHLinu管理笔记二Linu系统启动流程

RHCE课程-RH131Linux管理笔记二-Linux系统启动流程这节课程是相当重要的。
也是RHCE考试上午的考的主要内容,系统排错。
只要你看懂了系统的启动流程,排错就基本没有多大问题了。
计算机启动,上电自检检查BIOS就不说了,所有系统都那样。
下面就是LINUX的启动流程:1、硬件读取引导扇区2、加载LILO或者Grub(一般我们使用的是GRUB,这个是重点)3、加载内核(以只读方式挂载)4、挂载根文件系统5、启动init,一切进程的“祖父”6、读取/etc/inittab文件7、读取rc.sysinit文件8、运行rcX.d下的文件(文件都是init.d下的符号链接)其中有一个xinetd的超级进程,调用/etc/xinetd.conf配置文件,从配置文件中知道读/etc/xinetd.d文件,结束后调用Miggetty9、读取/etc/rc.d/rc.local文件具体步骤在启动的时候大家都能看见滴哈~~~BIOS初始化检查外围设备检查启动设备读区MBR启动引导工具引导并运行核心,分为两个独立的阶段:第一阶段:存放在启动扇区第二阶段;/boot目录下的文件第一阶段即BIOS从启动扇区中读入IPL(初始化程序引导工具)这一过程。
因为MBR的空间太小,所以启动引导工具往往还需要从其他地方进一步读入数据,即所谓第二阶段。
这通常是一个可以做选择的交互界面。
在Linux中常用的启动引导工具:grub和lilo在某些时候,WINDOWS支持多系统就需要安装GRUB哈GRUB:Grand Unified Bootloader被广泛地用于替代lilo支持在启动时使用命令行模式支持md5加密保护可以从ext2/ext3、ReiseFS、JFS、FAT、minix及FFS文件系统上启动其配置文件为/boot/grub/grub.conf,更改grub.conf即可立时生效如果硬盘上的MBR被更动过,可以用/sbin/grub-install/dev/hda来重安装grub现在我们打开/boot/grub/grub.conf查看一下哈:vim/boot/grub/grub.conf这就是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/sdadefault=0#default=0表示默认启动第一个系统,如果系统有两个系统是用什么做为分隔符的呢?title就是系统的分隔符,第一个title后面就是第一个系统,用0表示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux 启动过程中文件系统的加载
我觉得我的文章相对来说都是比较浅显的。
一些初学者可以看看,这也是我不在嵌入式那个版上发文的原因。
对于高手来说,如果你们不吝啬时
间的话,希望也能帮我看看,指点一下其中的错误。
这也是我到这里来和大
家交流的目的。
在完成了模块驱动后,就要挂载文件系统了。
我一直以为:
我编译的内核是采用了initrd 的模式,设备是在RAM DISK 文件系统下的/linuxrc 脚本程序加载的,因此在这上面浪费了很多时间。
不过对initrd
算是有了比较深的理解,这个等一下再说。
其实,内核挂载的第一个文件系统就是nand flash 中的root.cramfs,关于挂载相关的代码mount_root()在文件/fs/super.c 里面。
随后将devcie 文件系统挂载到/dev 目录下面,代码为mount_devfs_fs()。
因为采用了noninitrd 的模式,因此文件系统的挂载就完毕了,init 进程继续往下走到一直到运行:。