CentOS 시스템 시작 프로세스는 무엇입니까?
전원 버튼을 누르면 시스템의 비밀을 알 수 있나요? 여기서는 Linux 시스템 부팅 뒤에 숨은 비밀을 알아보도록 하겠습니다.
1. 전원 공급 자가 테스트
마더보드의 전원을 켜면 시스템은 먼저 POST 프로그램을 통해 다양한 내부 장치를 검사합니다. 두 가지 상황에서 처리됩니다. 심각한 오류(치명적인 오류)의 경우 기계가 정지됩니다. 이때 다양한 초기화 작업이 완료되지 않았으므로 심각하지 않은 오류, 프롬프트 또는 소리 경보 신호에 대한 프롬프트나 신호가 제공될 수 없습니다. 사용자 처리를 기다리는 동안 제공됩니다.
2. BIOS 시작 부팅 단계
자체 테스트를 통과한 후 부팅 프로그램이 있는 첫 번째 장치가 이 시작에 사용될 장치입니다. 일반적으로 컴퓨터는 "F2" 또는 "Del" 키를 눌러 BIOS로 들어가며, 여기에서 하드 디스크의 시작 순서를 조정할 수 있습니다.
부트로더가 있는 첫 번째 장치를 찾은 후 BIOS는 장치에서 MBR을 찾아 부트로더를 읽습니다.
3.GRUP 부팅 단계
이때 Centos 시스템을 볼 수 있지만 일반적으로 작업이 필요하지 않습니다. , 시스템이 자동으로 시작됩니다. 실제로 시스템을 직접 수동으로 시작할 수도 있습니다.
3.1 grub 명령줄 인터페이스를 통해 수동으로 시스템 시작:
grub> root (hd#,#) grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE grub> initrd /initramfs-VERSION-RELEASE.img grub> boot
3.2 grub의 명령줄 인터페이스:
e: 编辑模式,用于编辑菜单; c: 命令模式,交互式接口; help: 获取帮助列表 help KEYWORD: 详细帮助信息 find (hd#,#)/PATH/TO/SOMEFILE: root (hd#,#) 设定grup的根设备 kernel /PATH/TO/KERNEL_FILE: 设定本次启动时用到的内核文件;额外还可以添加许多内核支持使用的cmdline参数; 例如:init=/path/to/init, selinux=0 initrd /PATH/TO/INITRAMFS_FILE: 设定为选定的内核提供额外文件的ramdisk; boot: 引导启动选定的内核;
3.3 구성 파일: /boot/grub/grub .conf< /code><code>/boot/grub/grub.conf
配置项:
default=#: 设定默认启动的菜单项;落单项(title)编号从0开始; timeout=#:指定菜单项等待选项选择的时长; splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径; hiddenmenu:隐藏菜单; password [--md5] STRING: 菜单编辑认证; title TITLE:定义菜单项“标题”, 可出现多次;用来引导多个内核或者操作系统 root (hd#,#):grub查找stage2及kernel文件所在设备分区;为grub的“根”; kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核 initrd /PATH/TO/INITRAMFS_FILE: 内核匹配的ramfs文件; password [--md5] STRING: 启动选定的内核或操作系统时进行认证
4.加载内核阶段
内核会自身初始化:
探测可识别到的所有硬件设备;
加载硬件驱动程序;(有可能会借助于ramdisk加载驱动)
以只读方式挂载根文件系统;
运行用户空间的第一个应用程序:/sbin/init
5.init初始化阶段
内核加载完毕,会运行init程序,init进程起来后,系统启动的控制权移交给init进程
/sbin/init进程是所有进程的父进程,当init起来之后,它首先会读取配置文件/etc/inittab,进行以下工作:
1.执行系统初始化脚本(/etc/rc.d/rc.sysinit),对系统进行基本的配置,以读写方式挂载根文件系统及其它文件系统,到此系统基本算运行起来了,后面需要进行运行级别的确定及相应服务的启动; 2.确定启动后进入的运行级别; 3.执行/etc/rc.d/rc,该文件定义了服务启动的顺序是先K后S,而具体的每个运行级别的服务状态是放在/etc/rc.d/rcn.d(n=0~6)目录下,所有的文件均链接至/etc/init.d下的相应文件。 4.有关key sequence的设置 5.有关UPS的脚本定义 6.启动虚拟终端/sbin/mingetty 7.在运行级别5上运行X
配置文件:/etc/inittab
id:runlevels:action:process id:一个任务的标识符; runlevels:在哪些级别启动此任务;#,###,可以为空,表示所有级别; action:在什么条件下启动此任务; process:任务;(脚本或程序)
4. 커널 로딩 단계
커널이 자체적으로 초기화됩니다. 인식된 모든 하드웨어 장치를 검색합니다. 하드웨어 드라이버를 로드합니다. )읽기 전용 모드로 루트 파일 시스템을 마운트합니다. 사용자 공간에서 첫 번째 응용 프로그램을 실행합니다: /sbin/init
5.init 초기화 단계
커널이 로드됩니다. init 프로그램을 실행합니다. init 프로세스가 시작된 후 시스템 시작 제어가 init 프로세스로 이전됩니다.
action: wait:等待切换至此任务所在的级别时执行一次; respawn:一旦此任务终止,就自动重新启动之; initdefault:设定默认运行级别;此时,process省略; sysinit:设定系统初始化方式,此处一般为指定/etc/rc.d/rc.sysinit脚本;
/etc/inittab
🎜🎜 각 줄은 작업과 해당 프로세스를 정의합니다🎜查看:chkconfig --list [name] 添加:chkconfig --add name 删除:chkconfig --del name
chkconfig [--level LEVELS] name <on|off|reset> --level LEVELS:指定要控制的级别;默认为2345; init命令: 级别切换:init # 级别查看:who -r
위 내용은 CentOS 시스템 시작 프로세스는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!