课时21 Linux系统启动详解

Linux课程学习笔记来源于网易云课堂:Linux 入门基础

1 Linux系统启动流程:

BIOS à MBR: Boot Code(引导代码)à 执行引导程序 - GRUBà 加载内核 à执行inità runlevel

2 BIOS

       BIOS(Basic Input Output System),基本输入输出系统,一般保存在主板的BIOS芯片中

       计算机启动的时候第一个运行的就是BIOS,BIOS负责检查硬件并且查找可启动的设备

       可启动的设备在BIOS设置中进行定义,如USB、CDROM、HD

3 MBR

       BIOS找到可启动设备后执行引导代码

       引导代码为MBR的前446字节

4 GRUB

1)       Grub是现在linux使用的主流引导程序

2)       grub可以用来引导几乎所有操作系统

3)       相关文件保存在/boot/grub中

stage1 MBR

stage1_5  //stage1执行完之后再执行的

stage2  //stage1_5执行完之后再执行的

内核

4)       配置文件为/boot/grub/grub.conf,通过vim显示,#后的是注释语句

5)       配置格式:

default=0         //启动默认配置0

timeout=3        //开机时的,默认时间倒计时,如果不需要,可以改成0

splashimage=(hd0,1)/boot/grub/splash.xpm.gz       //启动时的背景图片,可以自己定制,设置为.xpm格式,放在/boot/grub/目录下

hiddenmenu     //隐藏菜单

title centos       //名字可以随便改

      root(hd0,1)     //启动分区,在第一个硬盘(hd0)的第2各分区下

      kernel /vmlinuz-2.6.32-279.el6.x86_64 roroot=UUID=b18ec4b9-367b-4e76-b180-e7e518f6adf2 rd_NO_LUKS rd_NO_LVMLANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgbquiet

//先启动内核kernel,在/boot/vmlinuz-2.6.32-279.el6.i686目录下。后面的都是参数设置。

initrd /initramfs-2.6.32-279.el6.x86_64.img

5 kernel(内核)

1)       MBR的引导代码将负责找到并加载linux内核

2)       Linux内核保存在/boot/vmlinuz-2.6.32-279.el6.1686

3)       一般还会加载内核模块打包文件:/boot/initramfs-2.6.32-279.el6.i686.img

4)       Linux为了保持kernel的精简,将一些不常用的驱动、功能编译成模块,在需要的时候动态加载,而这些模块被打包保存为一个initramfs文件。

5)       早期版本的linux使用initrd文件,initramfs是initrd的替代优化版本,比initrd更加节省空间、更加灵活。

6)       命令dmesg可以查看本次启动时内核的输出信息。同样的信息也保存在/var/log/dmesg文件中

6 INIT

内核启动完毕就会运行init进程

1)       init 是linux系统中运行的第一个进程,是所有进程的附进程。

2)       init负责使用/etc/rc.d/rc.sysinit负责对系统进行初始化,挂载文件系统,并且根据运行级别启动相应服务

3)       linux运行级别:

0  关机

1  单用户模式

2  不带网络的多用户模式

3  多用户模式(没有图形界面)

4  未使用

5  xll图形化多用户

6  重新启动

top 命令可以查看PID,其中1为init

4)       默认的运行级别可以通过文件/etc/inittab 下修改,修改其中的id:5:initdefualt中的数字即可,或者在/etc/init/目录下修改,此目录下有较多的设置文件。

5)       每个级别对应的启动服务保存在/etc/rc.d/rc[0123456].d中

6)       runlevel 显示当前及上一个运行级别

7)       命令init可以改变当前运行级别,init3 可以切换到3级别

7 单用户修改root密码

1)       为内核传递参数‘1’或者“single”系统进入单用户

2)       单用户模式下不启动任何服务

3)       单用户模式直接以root用户登录,并且不需要密码

4)       可以使用passwd修改root密码

忘记root密码时,可以在启动界面的时候,通过上下键进入pause界面,传递参数‘1’或者“single”系统进入单用户。

8 GRUB加密

       通过启动界面(重新启动,通过物理按键)进入单用户模式,存在安全隐患,需要通过GRUB加密对引导进行加密。

1)       通过在grub.conf中的启动配置中加入如下参数即可对grub进行加密:

Password –md5$1$aoWpTe$/MWUUYbBIF.2RUZK8nbWU0          //$后面的是通过grub进行加密后的密码

2)       加密后的密码可以通过grub-md5-crypt生成


阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为您提供一些思路和示例代码来实现一个基本的学生选课系统。 首先,您需要创建一个文本文件来存储学生的信息和课程的信息。例如,您可以创建两个文件:一个是student.txt,另一个是course.txt。 student.txt文件应该包含每个学生的姓名和学号,每行一个学生,如下所示: ``` 张三 101 李四 102 王五 103 ``` course.txt文件应该包含每门课程的名称和课程号,每行一个课程,如下所示: ``` 计算机网络 001 操作系统 002 数据库 003 ``` 接下来,您可以编写一个Shell脚本来实现学生选课功能。以下是一个示例代码: ```bash #!/bin/bash echo "欢迎使用学生选课系统!" while true do echo "请选择您要进行的操作:" echo "1. 查看所有课程" echo "2. 查看所有学生" echo "3. 选课" echo "4. 退课" echo "5. 退出系统" read choice case $choice in 1) echo "所有课程:" cat course.txt ;; 2) echo "所有学生:" cat student.txt ;; 3) echo "请输入您的学号:" read student_id echo "请输入您要选择的课程号:" read course_id if grep -q "^$student_id " student.txt && grep -q "^$course_id " course.txt; then echo "$student_id 选修了 $course_id" echo "$student_id $course_id" >> selection.txt else echo "无效的学号或课程号!" fi ;; 4) echo "请输入您的学号:" read student_id echo "请输入您要退选的课程号:" read course_id if grep -q "^$student_id $course_id$" selection.txt; then sed -i "/^$student_id $course_id$/d" selection.txt echo "$student_id 退选了 $course_id" else echo "无效的学号或课程号!" fi ;; 5) echo "谢谢使用学生选课系统!" exit 0 ;; *) echo "无效的选项!" ;; esac done ``` 该脚本使用一个无限循环来提供交互式界面。用户可以选择要进行的操作,包括查看所有课程、查看所有学生、选课、退课和退出系统。 当用户选择选课或退课时,脚本会检查输入的学号和课程号是否有效,并在selection.txt文件中记录学生的选课信息。 注意,这只是一个简单的示例,您可以根据需要对其进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静守道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值