第十二周作业

1、简述linux操作系统启动流程

1、硬件启动:机器上电,主板上的ROM中的自检程序开始对硬件自检,接着bios检测启动设备,并将启动设备的MBR读到内存的控制区。
2、GRUB启动引导:分为三个阶段,分别是state1、state1.5、state2。
state1:MBR的前446个字节,主要作用是引导加载程序bootloader
state1.5:MBR之后的扇区,为了到达2阶段,找到/boot分区的grub配置文件,就需要识别/boot分区的文件系统,1.5阶段就是这个作用
state2:目的是找到内核文件所在的位置,通过initrd文件建立虚拟文件系统,便于内核加载真正的根文件系统。进入/boot/grub下,读取grub的配置文件/boot/grub/grub.conf,首先显示内核菜单,并找到内核文件所在。因为根分区的文件系统驱动在根分区里,导致进入死循环,此时通过/boot中的微型内核文件initrdramfs文件提供文件系统驱动,建立虚拟的文件系统,便于后面内核加载真正的根。
3、内核初始化阶段:加载驱动模块初始化系统中的硬件设备,以只读的形式挂载内核真正的根文件系统(grub.conf中所指定的),协助内核呼叫根文件系统第一个应用程序/sbin/init
4、系统初始化阶段:通过/etc/inittab获取用户级别;根据/etc/rc.sysinit脚本初始化系统的相关配置;根据/etc/rc.d/rc#.d和/etc/rc.local加载系统的开机服务
5、启动终端:执行/sbin/mingetty打开6个纯文本终端,在这个终端上可以输用户名和密码来验证登陆;如果用户级别为5则打开界面模式。

2、制作一个只运行shell的linux系统

1、给虚拟机添加一块硬盘20Gsdb,重启虚拟机
[20:56:43 root@CentOS6 ~]$lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0  100G  0 part /
├─sda3   8:3    0    2G  0 part [SWAP]
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0   50G  0 part /data
sdb      8:16   0   20G  0 disk 
sr0     11:0    1  4.5G  0 rom 
2、对新增硬盘sdb进行分区,一个主分区/boot分区,另一个主分区/分区,并对两个分区创建文件系统
[21:03:08 root@CentOS6 ~]$echo -e 'n\np\n1\n\n+1G\nw\n' | fdisk /dev/sdb
[21:04:35 root@CentOS6 ~]$echo -e 'n\np\n2\n\n\n\nw\n' | fdisk /dev/sdb
[21:05:35 root@CentOS6 ~]$lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0  100G  0 part /
├─sda3   8:3    0    2G  0 part [SWAP]
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0   50G  0 part /data
sdb      8:16   0   20G  0 disk 
├─sdb1   8:17   0    1G  0 part 
└─sdb2   8:18   0   19G  0 part 
sr0     11:0    1  4.5G  0 rom 
[21:07:57 root@CentOS6 ~]$mkfs.ext4 /dev/sdb1
[21:08:56 root@CentOS6 ~]$mkfs.ext4 /dev/sdb2
[21:09:56 root@CentOS6 ~]$blkid
/dev/sda1: UUID="7050d8d6-4b69-4cc6-803f-9d4ae7e4789d" TYPE="xfs" 
/dev/sda2: UUID="7b65e69d-bcab-4dae-87cc-e50b4401a01a" TYPE="xfs" 
/dev/sda3: UUID="9bbc06d0-f15c-4b32-b318-9bd36a7b64fb" TYPE="swap" 
/dev/sda5: UUID="0254a8eb-c926-41b1-bbe4-1e1751b73c73" TYPE="xfs" 
/dev/sdb1: UUID="6fe50929-1097-4469-88a5-c459cf07b81f" TYPE="ext4" 
/dev/sdb2: UUID="61cdc58c-193c-41e5-a8d3-077ee8038e49" TYPE="ext4" 
/dev/sr0: UUID="2020-04-22-00-54-00-00" LABEL="CentOS 6 x86_64" TYPE="iso9660" PTTYPE="dos" 
3、创建两个文件夹/mnt/boot和/mnt/sysroot,并将创建好的文件系统挂载在这两个目录下,充当自制linux系统的/boot和/分区。
[21:11:38 root@CentOS6 /mnt]$mkdir /mnt/boot
[21:11:45 root@CentOS6 /mnt]$mkdir /mnt/sysroot
[21:12:02 root@CentOS6 /mnt]$ls -l
total 0
drwxr-xr-x 2 root root 6 Mar  8 21:11 boot
drwxr-xr-x 2 root root 6 Mar  8 21:12 sysroot
[21:12:06 root@CentOS6 /mnt]$mount /dev/sdb1 /mnt/boot
[21:16:59 root@CentOS6 /mnt]$mount /dev/sdb2 /mnt/sysroot
4、安装grub,自动生成1、1.5、2阶段所需文件
[21:17:58 root@CentOS6 /mnt]$grub-install --root-directory=/mnt /dev/sdb
5、将内核文件和initramfs文件拷贝到新的boot文件夹下
[21:18:28 root@CentOS6 /boot]$cp -p 
[21:18:53 root@CentOS6 /mnt]$cp -p
6、创建并编写grub.cfg文件
[21:20:25 root@CentOS6 /mnt/boot]cat grub.cfg
7、依照/下的文件夹在/mnt/sysroot下的创建相关文件夹
[21:20:25 root@CentOS6 /mnt/sysroot]mkdir /mnt/sysroot/{boot,sys,etc,proc,dev,bin,sbin,lib,lib64,mnt,media,opt,home,root,tmp,var}
8、在新根下准备bash shell的程序和库

[20:53:49 root@CentOS6 ~/script]$cat copycmd.sh 
#!/bin/bash

while read -p "请输入要拷贝的命令:" cmd;do
    if [[ "$cmd" =~ [Qq][Uu][Ii][Tt] ]];then
        break
    elif [ -z "$cmd" ];then
        echo "输入的命令不能为空"
        continue
    else
        dir=`which --skip-alias $cmd`;
        if [ -z "$dir" ];then
            echo "输入的命令不存在"
            continue
        else
            ldd "$dir" | sed -nr 's/.* (\/.*) .*/\1/p' > .tmp.lib
        fi
        cp $dir /mnt/sysroot$dir
        while read so
        do
            if [ ! -d /mnt/sysroot`dirname $so` ]
            then
                mkdir /mnt/sysroot`dirname $so`
            fi
            cp $so /mnt/sysroot$so
        done < .tmp.lib
    fi
done
运行此拷贝脚本,将bash命令拷贝到/mnt/sysroot下
[20:56:04 root@CentOS6 /mnt/sysroot/bin]$ls -ltr
total 924
-rwxr-xr-x. 1 root root 942200 Mar 11 20:53 bash
[20:56:23 root@CentOS6 /mnt/sysroot/bin]$cd ..
[20:56:26 root@CentOS6 /mnt/sysroot]$cd lib64
[20:56:29 root@CentOS6 /mnt/sysroot/lib64]$ls -ltr
total 2044
-rwxr-xr-x. 1 root root  134792 Mar 11 20:53 libtinfo.so.5
-rwxr-xr-x. 1 root root   23088 Mar 11 20:53 libdl.so.2
-rwxr-xr-x. 1 root root 1930416 Mar 11 20:53 libc.so.6


3、总结systemctl管理命令及system unit文件格式

命令格式:systemctl COMMAND servicename
COMMAND:start :启动服务
stop:停止服务
restart:重启服务
status:查看服务状态
mask:禁止自动和手动启动
unmask:取消禁止
is-active:查看服务当前是否激活
enable:设置服务开机自启(加--now表示服务立即启动并且设置开机自启)
disbale:设置禁止服务开机自启(加--now表示服务立即停止并且设备开机不自启)
list-dependencies :查看服务的依赖关系
systemctl list-unit --type service:列出所有已经激活的服务,加-a表示查看所有服务,包括各种状态
systemctl --failed --type service:列出所有失败的服务
systemctl list-unit-files --type service :查看所有服务开机自启状态
systemctl list-dependencies targetname:查看模式下包含的服务情况
systemctl isolate targetname:切换模式
systemctl default:进入默认的target模式
systemctl get-default:查看默认启动模式
systemctl set-default targetname:设置默认的target模式
systemctl rescue/emergency:进入紧急救援/emergency模式
system unit文件格式
unit文件一般存放在/etc/systemd/system

开头的部分为注释。布尔值为1/true/yes/on时表示开启,值为0/false/no/off时表示关闭。文件一般分为三部分

[unit]部分:定义一些unit的相关信息,行为和依赖关系
常用选项:
Description:描述信息
After:定义unit的启动次序,表示当前unit应晚于哪些unit
Requires:依赖到的unit,此为强依赖,即被依赖的unit未启动,则此Unit也无法激活
Wants:依赖到的Unit,此为弱依赖
Conflicts:定义units间的冲突关系,表明不能共同运行
[service]部分:与特定类型相关的专用选项,对于不同的unit类型的配置,此处名称不一样,有socket、target等
常用选项:
Type:定义影响ExecStart及相关参数的功能的unit进程的启动类型
simple:默认值,表明这个daemon主要由ExecStart接的指令串来启动,启动后常驻于内存中
forking:由ExecStart启动的程序通过spawns延伸出其他子程序来作为此daemon的主要服务,原生父进程在启动结束后就会停止
oneshot:与simple类似,但是启动后不会常驻于内存中
dbus:与simple类似,但是要设定BusName=才行
notify:服务启动后会发出一个消息,需要配合NotifyAccess来让systemd接收消息
idle:与simple类似,但是一般是开机到最后才执行的服务
EnvironmentFile:环境配置文件
ExecStart:指明启动unit要运行的命令或脚本的绝对路径
ExecStartPre:ExecStart前执行
ExecStartPost:ExecStart后执行
ExecStop:停止unit要执行的命令或脚本
Restart:当为1时,表示unit意外停止后,会再次自动启动此服务
PrivateTmp:为yes时,会在/tmp/systemd-private-UUID-NAME.service目录下生成临时文件
[Install]部分:定义由sysemctl命令来启用和禁用服务时用到的一些选项
常用选项:
Alais:服务别名
RequiredBy:被哪些units所依赖,强依赖
WantedBy:被哪些units所依赖,弱依赖
Also:安装本服务的时候还要安装别的服务

4、破解centos7 密码

方法一:
1、启动时按e键进入grub,在linux16这一行后加入rd.break后,按ctrl+x
2、进入系统后,重新挂载/sysroot文件系统为可写模式
switch_root:/#mount -o remount,rw /sysroot
3、切根:chroot /sysroot
4、此时已经进入到了root用户下,利用passwd命令重新生成root口令
方法二:
1、启动时按e键进入grub,在linux16这一行后加入rw init=/sysroot/bin/sh后,按ctrl+x
2、进入系统后,切根:chroot /sysroot
3、此时已经进入到了root用户下,利用passwd命令重新生成root口令
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容

  • 1、简述linux操作系统启动流程 centos6 加载BIOS的硬件信息,获取第一个启动设备 读取第一个启动设备...
    紫火红云阅读 419评论 1 0
  • 1、配置chrony服务,实现服务器时间自动同步 chrony介绍 配置文件chrony.conf (1)serv...
    毅_阅读 983评论 0 1
  • 1、配置chrony服务,实现服务器时间自动同步 (1)、准备工作: 服务器端: 192.168.17.142 系...
    Gustav_man阅读 136评论 0 0
  • ▲就业班和全程班的小伙伴看这里:(学习老王视频的作业第23-24节) 1、配置chrony服务,实现服务器时间自动...
    一心1977阅读 188评论 0 0
  • 1、简述linux操作系统启动流程 加载BIOS的硬件信息,获取第一个启动设备 读取第一个启动设备MBR的引导加载...
    antikor阅读 208评论 1 0