Centos7安装
Centos7安装
- centos7镜像下载地址:https://mirrors.aliyun.com/centos/7/isos/x86_64/
- CentOS-7-x86_64-DVD-1810.iso 标准安装版,一般下载这个就可以了(桌面推荐)
- 如果无桌面版,可进行安装图形界面,
yum -y groupinstall "GNOME Desktop" "Graphical Administration Tools"
systemctl set-default graphical.target
将默认模式修改为图形界面模式systemctl set-default multi-user.target
将默认模式修改为命令行模式
- 如果无桌面版,可进行安装图形界面,
- CentOS-7-x86_64-Minimal-1810.iso 精简版(服务器推荐)
- CentOS-7-x86_64-NetInstall-1810.iso 网络安装镜像(从网络安装或者救援系统)
- CentOS-7-x86_64-Everything-1810.iso 对完整版安装盘的软件进行补充,集成所有软件
- CentOS-7-x86_64-LiveGNOME-1810.iso GNOME桌面版
- CentOS-7-x86_64-LiveKDE-1810.iso KDE桌面版
- CentOS-7-x86_64-DVD-1810.iso 标准安装版,一般下载这个就可以了(桌面推荐)
- 使用
UltraISO
刻录到光盘 - BIOS启动进入安装命令行进行安装,一般选择第一个命令进行安装
- 正常会很快一路显示
[OK]
,如果突然卡死后提示dracut-initqueue : Warning: dracut-initqueue timeout - starting timeout scripts
解决办法 ^1- 等待执行完进入
dracut
命令行,ls /dev | grep sd
查看U盘对应的盘符,如测试时机器本身包含centos系统且含有两块硬盘,根据U盘大小大致可以猜测为sdcx
的盘符名(如:sdc4
,如果是CD/DVD安装则可能是/dev/cdrom
) - reboot重新启动,并重新安装,此时修改执行的安装命令
- 在安装命令行主界面,按
e
/Tab
进入到命令修改状态 - 修改
vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64.check quiet
为vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdc4 quiet
(/dev/sdc4为U盘所在位置) - 然后
Ctrl+x
执行安装 - 方式二:修改
U盘/isolinux/isolinux.cfg
里hd:LABEL=U盘名称
- 等待执行完进入
- 正常会很快一路显示
- 进入到CentOS图形化安装界面
- 修改时区
Date & Time
INSTALLATION DESTINATION
进行磁盘分区 -i will configure partitioning
手动进行分区 - 选择LVM
(会产生/dev/mapper/centos-root的镜像文件)标准分区 - 可通过+-
添加新分区或删除历史分区(老系统分区) - 点击+新增分区,其他使用默认值(默认文件系统xfs,也可改成ext4),分区推荐- (省略)
/boot/efi
500M /boot
1G/swap
4G(8G/16G内存可分配4G,再按内存适当调高,如32G分6G)。最终显示如tmpfs
/
80G/home
剩余
- (省略)
- 修改时区
Centos7使用
- 设置家目录为因为,保留系统语音为中文
- 设置 - 区域语言 - 选择English - 重启 - 注销账户重新登录 - 登录后提示会修改家目录(为英文) - 点击更新成新名称
- 设置 - 区域语言 - 选择中文 - 重启 - 注销账户重新登录 - 登录后提示会修改家目录(为中文) - 勾选不用再提示 - 点击保持原名称
- CentOS7设置笔记本合盖后程序仍可以运转
1 | # https://blog.csdn.net/m0_49400972/article/details/108861639 |
- wifi无法连接
1 | ip addr |
启动原理及设置
- 开机启动在/var/log/messages中会打印
kernel: Initializing cgroup subsys cpuset
的日志,可通过dmesg
查看
系统启动顺序boot sequence
- BOIS加电自检:加电后检查,载入UEFi或BIOS的硬件信息,然后按照CMOS设置的启动顺序搜索处于活动状态并可以引导的设备(BIOS页面设置的启动盘先后顺序)。相当于BIOS页面启动完成 ^2
加载主引导程序(MBR):读取第一个引导设备(一般为硬盘)的MBR(master boot record)中保存的引导加载程序(Redhat默认的引导程序是GRUB/GRUB2)
1
2
3
4
5
6
7# 显示MBR内容。dd命令可以读取MBR的内容,然后将读取到的内容写入mbr.dmp文件中。然后以ASCII和十六进制显示文件的内容
dd if=/dev/sda of=mbr.dmp bs=512 count=1
od -xa mbr.dmp
# 结果如
0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e
k H dle dle so P < nul 0 8 nul nul so X so @
...加载次引导程序(GRUB):加载此引导程序完成后,会进入内核程序选择页面
- 按上下可选择需要启动的内核,不选择的话,默认过5秒会进入到grub.conf中设置的系统,GRUB确定启动的系统后,他就会定位相应的内核映像所在的/boot/目录
- 内核映像文件的格式:/boot/vmlinuz-<内核版本>。例如centOS5.5的内核映像文件就是:/boot/vmlinuz-2.6.18-194.el5
- 接着GRUB会把内核的映像加载到内存中去,内核映像不是一个可以执行的内核,而是一个压缩的内核映像,GRUB会把这个内核的映像解压,加载到内存中并执行,至此GRUB的任务完成了
cat /boot/grub2/grub.cfg
(centos6使用grub,centos7使用grub2) 查看文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38# 此文件为自动生成的文件,如需修改配置,需要修改 /etc/default/grub
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
...
terminal_output console
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=5 # timeout设置超时时间,超过5秒后自动启动default设置的系统
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=5
fi
### END /etc/grub.d/00_header ###
...
### BEGIN /etc/grub.d/10_linux ###
# 第0个操作系统(默认启动系统)
menuentry 'CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-957.el7.x86_64-advanced-1c209100-7448-47e9-9c52-81100bf323e4' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod xfs
# (hd0,0) 或 hd0,msdos1 表示的就是第一块硬盘的第一个主分区
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' 921591b3-9fbe-4b53-915c-002f93be36c3
else
search --no-floppy --fs-uuid --set=root 921591b3-9fbe-4b53-915c-002f93be36c3
fi
linux16 /vmlinuz-3.10.0-957.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF-8
initrd16 /initramfs-3.10.0-957.el7.x86_64.img
}
# 第1个操作系统
menuentry 'CentOS Linux (0-rescue-9fb4cc8b7e504b66bf1e6d2117ade7be) 7 (Core)' --class centos ...
.../etc/default/grub
配置说明1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16### 修改启动内核顺序
## cat /etc/default/grub
#开机时 grub 默认5秒后启动内核
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
# 可修改为0/1..., 这里0代表第一个内核,1代表第2个内核
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
## 修改完成后,并没有立即生效,使用此命令来生成grub.cfg文件,我们在下次启动的时候就会默认选择新的默认内核
grub2-mkconfig -o /boot/grub2/grub.cfg
### 加密grub防止通过单用户系统破解root密码
加载linux内核镜像:GRUB把内核映像加入到内存中后,解压Kernel,并把控制权交给linux内核后,尝试驱动硬件
- 加载init进程:Kernel执行init程序,进程号永远是1,并获得run-level信息(如3或5)。centos7使用systemd代替init,相关命令参考linux.md#服务相关命令
- 常规后续启动流程
- execute /etc/rc.d/sysinit:rc.d 为 runlevel control directory
- start other modulers(/etc/modules.conf):启动内核外挂模块
- execute the run level scripts
- 执行某级别下的脚本如
/etc/rc0.d
=>/etc/rc.d/rc0.d
、/etc/rc1.d
(创建的chkconfig会生成文件到对应级别) - 运行级别:启动只能配置成某一个级别,查看
systemctl get-default
,配置目录cat /etc/inittab
- 0 停机(千万不要把initdefault 设置为0)
- 1 单用户模式
- 2 多用户,但是没有 NFS
- 3 完全多用户模式(服务器常用,一般centos7即默认此级别),multi-user.target
- 4 系统保留的
- 5 X11(x window 桌面版),graphical.target
- 6 重新启动(千万不要把initdefault 设置为6)
- 修改默认运行级别
systemctl set-default graphical.target
将默认模式修改为图形界面模式systemctl set-default multi-user.target
将默认模式修改为命令行模式
- 对无图像界面的服务器安装图像界面相关软件
yum -y groupinstall "GNOME Desktop" "Graphical Administration Tools"
- 执行某级别下的脚本如
- execute
/etc/rc.d/rc.local
:执行rc.local
脚本。可基于此文件配置(或者/etc/rc.local
),直接在里面添加某些启动命令。centos7以不推荐使用 - execute /bin/login
- shell started…
centos7后续启动流程
- 执行initrd.target所有单元,包括挂载/etc/fstab
- 从initramfs根文件系统切换到磁盘根目录
- systemd执行默认target配置,配置文件/etc/systemd/system/default.target
- systemd执行sysinit.target初始化系统及basic.target准备操作系统
- systemd启动multi-user.target下的本机与服务器服务
systemd执行multi-user.target下的
/etc/rc.d/rc.local
。centos7以不推荐使用,如需使用必须执行chmod +x /etc/rc.d/rc.local
此时
$PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
,profile中尚未生效,命令路径一般需绝对路径1
2
3
4
5
6
7
8
9
10
11
12
13
14# 添加此文件是为了兼容性
THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#创建自己的systemd服务或udev规则是非常明智的
It is highly advisable to create own systemd services or udev rules
#在引导过程中运行脚本,而不是使用这个文件。
to run scripts during boot instead of using this file.
#与以前的版本相比,由于在引导过程中并行执行
In contrast to previous versions due to parallel execution during boot
#此脚本将不会在所有其他服务之后运行。
this script will NOT be run after all other services.
#请注意,您必须运行'chmod +x /etc/rc.d/rc.local'
Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
#该脚本将在引导期间执行。*
that this script will be executed during boot.*
Systemd执行multi-user.target下的getty.target及登录服务
- systemd执行graphical需要的服务
启动设置
- 设置服务自启动,如
systemctl enable nginx
或chkconfig nginx on
- 操作
/etc/rc.d/sysinit
或/etc/rc.d/rc.local
或~/.bashrc
- 设置加载模块。如设置
br_netfilter
模块开机自启动
1 | # 创建文件 |
系统启动故障排查
- Centos启动各种故障情况分析
- 单用户模式和救援模式(系统启动失败时可使用此模式进入系统进行调试)
- https://www.xujun.org/note-8736.html
- 单用户模式
- 进入内核选择列表,光标选择一个内核,按e编辑启动命令,把启动命令linuxefi行中的 “ro” 改成 “rw init=/sysroot/bin/sh”,完成之后按Ctrl+x继续启动
- 进入系统后,其实只是进入了一个安全模式下的内存系统,并不是原本的系统
- 此时
/sysroot/
目录下才是原系统的文件(/home/目录可能没有数据,因为磁盘没有挂载等原因)。有时间配置错误了,可直接修改/sysroot/etc/目录下文件 chroot /sysroot/
切换到正常系统中去
- 此时
- 救援模式
- 插入并启动U盘系统,安装系统界面会有一个
Troubleshooting
表示故障排查,然后选择Rescue a CentOS Linux system
救援系统 - 同单用户模式,此系统不是原本系统。
/mnt/sysimage/
目录下才是原系统数据
- 插入并启动U盘系统,安装系统界面会有一个
/etc/fstab
磁盘挂载配置出错,重启后启动失败1
2
3
4
5
6
7
8
9
10
11
12vi /etc/fstab
# 历史挂载配置,其中/dev/vdb1后来被创建成了/dev/home/main的LVM卷(解决办法:进入安全模式修改此文件,删除历史配置即可)
/dev/vdb1 /home xfs defaults 0 0
# 新挂载配置
/dev/home/main /home xfs defaults 0 0
## 一般完整的fstab目录如下,丢失/etc/fstab时可安装以下初始化
#UUID=baaf0b5a-7e09-4a52-a409-56b1ddaaafa5 /boot xfs defaults 0 0 # UUID对应的即启动盘,如/dev/vda1的磁盘编号
/dev/vda1 /boot xfs defaults 0 0
/dev/mapper/centos-root / xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/home/main /home xfs defaults 0 0- 如提示
A start job is running for dev-home-main.device
或者Timed out waiting for device dev-home-main.device
。表示磁盘dev-home-main.device挂载失败,检查/etc/fstab
是否书写正确
- 如提示
- centos7忘记root用户密码找回
- 进入
sysroot
单用户模式,可在启动时设置进入sysroot/bin/sh
进行修改,参考:https://blog.51cto.com/scorpions/2059912
- 进入
参考文章