本文主要進行詳細講解CentOS7.5系統的安裝過程,以及CentOS系統初始化技術。我並不想將這篇文章變成一個教程,儘管我將詳細的進行每一步的講解,enjoy! ...
開發|CentOS-7安裝及配置
本文主要進行詳細講解CentOS7.5系統的安裝過程,以及CentOS系統初始化技術。我並不想將這篇文章變成一個教程,儘管我將詳細的進行每一步的講解,enjoy!
前言
目前所有的文章思想格式都是:知識+情感。
知識:對於所有的知識點的描述。力求不含任何的自我感情色彩。
情感:用我自己的方式,解讀知識點。力求通俗易懂,完美透析知識。
目錄結構
開發|CentOS-7安裝及配置
前言
正文
CentOS下載
方式一
方式二
方式三
下載CentOS版本類型詳解
特別提醒
CentOS安裝
安裝VMware
新建虛擬機設備
安裝CentOS
配置網卡名字(有坑)
CentOS配置
安裝常用的應用
關閉防火牆
關閉selinux
CentOS系統初始化技術
Sysvinit技術
Upstart技術
Systemd技術
併發啟動原理
總結
結束語
正文
由於最近需要使用linux系統,所以將這些自己走過的路與踩過的坑都記錄下來,希望有緣人可以用的上。最近我嘗試了很多 Geek technology,感覺很巧妙,後期我會會進行總結並記錄下來,敬請期待。
CentOS下載
方式一
使用國內的aliyun鏡像,下載地址:請猛擊這裡
註意:這裡只可以下載最新版的CentOS,舊版本看方式二。
方式二
這個方式,也就是你在方式一,準備下載的不是最新版本的CentOS版本的時候,提示下載的readme文件,裡面的提示下載舊版本信息的地址:請猛擊這裡
註意:進入對應版本之後,選擇--->/isos--->/x86_64 --->CentOS-7-x86_64-DVD-1804.iso(或者選擇下載種子文件:CentOS-7-x86_64-DVD-1804.torrent,請千萬以及肯定,別告訴我不會使用種子下載文件。。。好吧,請點擊查看教程https://jingyan.baidu.com/article/425e69e60e7488be15fc16ef.html)
方式三
直接一步到位的下載,因為某某原因,很多情況下,最終你都會跳轉到這個地址:請猛擊這裡。直接進行相應的版本選擇下載即可。
註意:其實一開始就可以直接說,在這裡找,一定可以找到你想要的內容,但是這是你第一次找,所以花點時間還是值得的。
下載CentOS版本類型詳解
當我們下載CentOS 7 時會發現有幾個版本可以選擇,如下:
1、CentOS-7-DVD版本:DVD是標準安裝盤,一般下載這個就可以了。
2、CentOS-7-NetInstall版本:網路安裝鏡像。
3、CentOS-7-Everything版本:對完整版安裝盤的軟體進行補充,集成所有軟體。
4、CentOS-7-GnomeLive版本:GNOME桌面版。
5、CentOS-7-KdeLive版本:KDE桌面版。
6、CentOS-7.0-livecd版本:光碟上運行的系統,類擬於winpe
特別提醒
註意CentOS的名字的變化,7版本之後,版本命名就跟發行的日期有關。
CentOS-7 -----> 系統是7.x版本
x86_64 -----> 64 位操作系統,並且從7以後不再提供32位鏡像。
1708 -----> 2017年08月發表的版本
那麼,拋出個問題: CentOS7.5又是怎麼來的呢???(自己想,不要百度。)
CentOS安裝
系統安裝有坑,一定要註意!
安裝VMware
VMware Workstation Pro的安裝,就自己搞定吧!百度一下就夠了 !
新建虛擬機設備
在整個過程中,這個文檔只是將關鍵部分進行了講解,剩下的地方,直接下一步保持預設即可。
1.打開VMware軟體的界面,如下:
2.選擇自定義
3.選擇稍後安裝系統
4.選擇版本
5.目前選擇橋接,這是我第一次使用它。巨坑,大家選擇NAT。
6.進行硬體信息配置
7.選擇自己下載的CentOS系統。
8.準備開始安裝機器
安裝CentOS
1.註意,使用上下鍵選擇,tab鍵使用
2.輸入內容,修改系統的內核,別寫錯了。
3.進行網路的配置
4.可以看到自己修改的內核參數,就是為了改變網卡的名字。
5.進行相關IP的配置
6.預設,啟動使用預設配置
7.更改主機名,並保存
8.更改時區
9.最小化安裝
10.別選做錯了。
11.系統分區
12.自定義分區
13.分三個部分,名字,大小看自己
14.分區結束的確定
15.開始安裝
16.設置root用戶密碼
17.設置的結果
18安裝完成,準備啟動
19.啟動結果頁面
配置網卡名字(有坑)
目前已經將CentOS安裝成功了,現在來看看,為什麼要內核的參數。
歷史版本上,Linux的網路介面名稱為eth0、eth1…,但這些名稱並不一定符合實際的硬體插槽等,這可能會導致不同的網路配置錯誤(例如,自己無意的介面改名引起的禁止介面)。基於MAC地址的udev規則在虛擬化的環境中並不有用,這裡的MAC地址如埠數量一樣無常。
CentOS6/RHEL6 引入了一致和可預測的網路設備命名網路介面的方法。這些特性可以唯一地確定網路介面的名稱以使定位和區分設備更容易,並且在這樣一種方式下,無論是否重啟機器、過了多少時間、或者改變硬體,其名字都是持久不變的。然而,這種命名規則並不是預設在CentOS/RHEL6上開啟。
從CentOS7/RHEL7起,這種可預見的命名規則變成了預設。根據這一規則,介面名稱被自動基於固件,拓撲結構和位置信息來確定。現在,即使添加或移除網路設備,介面名稱仍然保持固定,而無需重新枚舉,和壞掉的硬體可以無縫替換。
經過上面的歷史,6版本,到7版本,從網口名稱eth0到enp5s0/ens33。但是為了使用更順手,所以將網口名字進行更名,也只有直接修改內核才可以根治。並且在7版本,很多命令都開始變化了,ifconfig失蹤了,使用ip命令吧!啊啊哈哈~~
回顧一下修改的方法:在安裝系統的時候配置:修改內核選項,net.ifnames=0 biosdevname=0
CentOS配置
配置,主要講述最關鍵的,也就是一定可以用的上的內容。例如:關閉防火牆,關閉Selinux,安裝常用軟體包(我們使用的是最小化安裝,所以軟體包都是自己配置的,當自己玩伺服器的時候,都是這個流程,需要啥配置啥,不可能啥啥都給你裝上。)。
安裝常用的應用
由於使用的是最小化安裝,所以基本沒啥軟體,自己裝,推薦安裝下麵的wget/vim/lrzsz/telnet/nmap/bash-completion.
bash-completion在7版本裡面是一個好東西,由於7中的很多命令都是很長的,自己在那裡敲,有點傻,多使用tab鍵,進行自動補全,舉個例子,防火牆的那個,這麼長:firewalld.service .
總結:多使用工具,做一個geek。
[root@Web ~]# yum -y install wget vim lrzsz bash-completion telnet nmap
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
。。。。。
關閉防火牆
1.登錄到系統
2.查看防火牆狀態,看 Active: active (running)
[root@Web ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2019-07-05 04:29:27 CST; 45min ago
Hint: Some lines were ellipsized, use -l to show in full.
3.關閉防火牆,並查看Active: inactive (dead)
[root@Web ~]# systemctl stop firewalld.service
[root@Web ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Fri 2019-07-05 05:15:59 CST; 4s ago
Docs: man:firewalld(1)
Hint: Some lines were ellipsized, use -l to show in full.
[root@Web ~]#
4.防止開機重啟
[root@Web ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@Web ~]#
關閉selinux
1.登錄到系統
2.顯示selinux配置信息
輸入命令:cat /etc/selinux/config ,得到下麵的結果:
[root@Web ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
3.使用vim進行修改,不會使用的自己進行百度一下哈 !
如果vim沒有安裝,看到的是下麵的內容:
[root@Web ~]# vim /etc/selinux/config
-bash: vim: command not found
安裝vim
[root@Web ~]# yum -y install vim
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
修改文件,SELINUX=disabled即可。
[root@Web ~]# vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protecte
d.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
~
~
~
~
~
~
~
~
~
"/etc/selinux/config" 14L, 546C written
[root@Web ~]#
4,查看是否更改成功
[root@Web ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
[root@Web ~]#
5.進行設置的生效,setenforce.
[root@Web ~]# getenforce
Enforcing
[root@Web ~]# setenforce 0
[root@Web ~]# getenforce
Permissive
[root@Web ~]#
CentOS系統初始化技術
Sysvinit技術
1.特點:
系統第1個進程(pid=1)為init;
Init進程是所有進程的祖先,不可kill;
大多數Linux發行版的init系統是和SystemV相相容的,被稱為sysvinit。
代表系統:CentOS5與6
2.系統查看進程樹:
[root@kate-centos ~]# pstree
init─┬─abrtd
├─acpid
├─atd
├─auditd───{auditd}
├─console-kit-dae───63*[{console-kit-da}]
├─crond
├─dbus-daemon
├─hald─┬─hald-runner─┬─hald-addon-acpi
│ │ └─hald-addon-inpu
│ └─{hald}
├─login───bash
├─master─┬─pickup
│ └─qmgr
├─5*[mingetty]
├─rsyslogd───3*[{rsyslogd}]
├─sshd─┬─sshd───bash
│ └─sshd───bash───pstree
└─udevd───2*[udevd]
3.應用場景:
用於伺服器時代。
4.優點:
SysVinit運行非常良好,概念簡單清晰。它主要依賴於Shell腳本。
5.缺點:
①按照一定順序執行,即啟動太慢。
②很容易hang住,fstab與nfs掛載問題
6.未來的趨勢:
個人PC機和移動平臺,需要便捷、快的系統。
Upstart技術
CentOS6採用了Upstart技術代替sysvinit進行引導,Upstart對rc.sysinit腳本做了大量的優化,縮短了系統初始化時的啟動時間。但是CentOS6為了簡便管理員的操作,upstart的很多特性並沒有凸顯或者直接不支持,因此在CentOS6中的服務啟動腳本還是以原來SysV的形式提供的。
But,一個應運而生的技術,卻因為競爭對手太強大,而被淘汰。
代表系統: CentOS6 ,Ubuntu14,從CentOS7,Ubuntu15開始使用systemd
Systemd技術
目前的新系統都會採用的技術(RedHat7,CentOS7,Ubuntu15等);
設計目標是剋服 sysvinit 固有的缺點,提高系統的啟動速度;
和 Sysvinit 相容,降低遷移成本;
最主要優點:並行啟動
Pid為1的進程:
[root@Web ~]# ps -ef|head -2
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 04:29 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
併發啟動原理
1.解決 socket 依賴/埠依賴
主要是Systemd技術可以在一開始啟動的時候,預設給某些依賴埠分配埠,讓其順利啟動。
2.採用了D-Bus作為程式之間的通信工具,類似消息隊列,可以緩存信息。
這個就是非同步的概念了,隨著科技的發展,非同步越來越多的被用在底層的程式設計中,這是一個趨勢,並且管道 pipeline 思想在非同步中使用的非常多。
3.解決文件系統依賴:優先啟動要用的文件系統,其餘的文件系統都延遲啟動載入。
這是系統內核的優化,將最需要的文件系統先運行,慢慢的不重要的再開始運行。window的底層也是這麼乾的,win10 開機最快可以達到刷到5秒,回想當年xp哈哈,還沒有閃到圖標,還沒有開始讀進度條呢~~~
總結
Sysvinit技術是完全的串列啟動,速度讓人捉急,一旦卡主就卡機了~~
Upstart技術想法不錯,但是生不逢時,沒有發展到現在,被淘汰了,開始有同步啟動的思想了,但是還是失敗了
Systemd技術,算是最終的勝利者,設計的原理不僅僅是併發啟動,還涉及非同步啟動,最終,還是Systemd技術笑到了最後~~~
結束語
恭喜各位,看完了CentOS基本上最底層最精華的內容,從0到1的過程,還瞭解到了底層的內核工作原理,量很大。希望可以幫助到真正需要的人。
總結:本文從開始的CentOS系統下載到安裝,到後來的安裝各種設置,到後來的配置參數,到後面的系統初始化技術講解。知識量很大,其實醉著我對於geek世界的認識,很多東西都是一個體系,你只是學習一點,是很難有精進的,這是相當可怕的,系統的掌握一些知識,系統的學習很重要。
本文會在後面進行相關補充,文章內容還是比較糙的。