以前寫過(guò)一篇虛擬機(jī)安裝arch的文章,本意是記錄自己的安裝操作,方便下次查詢,然而回頭看看,自己只是在照著別人的方法重復(fù)而已,這篇文章將會(huì)將安裝過(guò)程中的每一步做出介紹,梳理下自己的理解,若有錯(cuò)誤,望斧正
注意: 這篇文章不是教人如何安裝archlinux的,而是幫助安裝者簡(jiǎn)單理解每一步操作的作用
0. 在瀏覽文章過(guò)程中,請(qǐng)對(duì)照 arch
的安裝Wiki
1. 啟動(dòng)盤
arch
啟動(dòng)盤的制作在相關(guān)的Wiki推薦很詳細(xì)了
ISO鏡像:ISO鏡像是一種光盤的存檔文件,它逐個(gè)復(fù)制一張光盤上的數(shù)據(jù)扇區(qū),然后存儲(chǔ)在一個(gè)二進(jìn)制文件中装哆。它幾乎是一個(gè)光盤上所有數(shù)據(jù)的直接復(fù)制,并不做任何修改.
若是熟悉linux
,我們?cè)谶M(jìn)行mount
命令掛載ISO鏡像文件的時(shí)候,會(huì)為其添加-t ISO9660
的參數(shù)(可選的),這個(gè)ISO9660
其實(shí)是光盤的文件系統(tǒng).這也就證明了剛才提到的ISO鏡像
和光盤
的關(guān)系啟動(dòng)盤:在
archwiki
中被叫做USB flash installation media(USB閃存安裝媒介)
,我們通過(guò)刻盤工具,借助ISO
鏡像,將我們的U盤刻錄成一個(gè)LiveUSE
系統(tǒng),我們可以用其來(lái)安裝Arch
,ArchWiki
中指出一點(diǎn),該啟動(dòng)盤是一個(gè)安裝介質(zhì),并不可以當(dāng)做一個(gè)完整的系統(tǒng)
2. 安裝準(zhǔn)備
- 我們?cè)谀?
當(dāng)我們打開電腦,從U盤啟動(dòng),我們首先啟動(dòng)的是Arch
的安裝程序,此時(shí)我們還在啟動(dòng)盤中,此時(shí)的任務(wù)是做好安裝前的各種準(zhǔn)備:
鍵盤布局
默認(rèn)的鍵盤布局為美式,雖然我們無(wú)需做修改,但可以了解如何修改
支持的鍵盤布局在/usr/share/keymaps/
文件夾中
鍵盤布局后綴名為.map.gz
,當(dāng)我們?nèi)サ艉缶Y名,就得到了鍵盤布局的名稱,使用下面命令即可修改鍵盤布局:
# loadkeys 鍵盤布局名稱
/usr
路徑:/usr
路徑也是我們比較常用的一個(gè)路徑,這里的usr
最早是user
的縮寫,但是目前我們認(rèn)為它是User System Resources
的縮寫,因?yàn)槠湓缙谑亲鳛?code>unix系統(tǒng)中用戶家目錄存在的,相當(dāng)于現(xiàn)在的/home
目錄,但如今這個(gè)路徑的作用已經(jīng)變更,其中通常是用戶級(jí)的軟件等,多是一些靜態(tài)的,可多用戶共享的文件
驗(yàn)證啟動(dòng)模式
我們使用
/sys/firmware/efi/efivars
文件是否存在的方式來(lái)判斷系統(tǒng)是否以UEFI
模式啟動(dòng),不同的啟動(dòng)模式,在后面的分區(qū)以及grub
安裝過(guò)程中會(huì)有不同,仔細(xì)閱讀Wiki
,找出自己的解決方案
- 我們常見的啟動(dòng)模式為
UEFI
和Legacy
,他們都是BIOS(Basic Input Output System,是個(gè)人電腦啟動(dòng)時(shí)加載的第一個(gè)軟件)
,只是新和舊的兩種不同的BIOS
而已,當(dāng)新的BIOS
架構(gòu)UEFI
出現(xiàn)時(shí),舊的BIOS
便被稱為Legacy
兩個(gè)模式不止啟動(dòng)方式不同,對(duì)應(yīng)的磁盤格式也不同:UEFI
對(duì)應(yīng)GPT
格式,而Legacy
對(duì)應(yīng)MBR
格式.混淆格式,系統(tǒng)將不能正常啟動(dòng),我們?cè)诎惭b系統(tǒng)時(shí),有時(shí)就需要使用分區(qū)工具轉(zhuǎn)化磁盤格式為啟動(dòng)方式對(duì)應(yīng)的格式
連接到因特網(wǎng)
wiki
中提到: 在啟動(dòng)的時(shí)候,守護(hù)進(jìn)程dhcpcd
就已經(jīng)啟用,為我們連接有線網(wǎng)絡(luò),我們可以使用ping
工具來(lái)檢測(cè)互聯(lián)網(wǎng)是否成功連接
- 守護(hù)進(jìn)程(
daemon
): 在一個(gè)多任務(wù)的計(jì)算機(jī)操作系統(tǒng)中刹悴,守護(hù)進(jìn)程是一種在后臺(tái)執(zhí)行的計(jì)算機(jī)程序损谦。此類程序會(huì)被以進(jìn)程的形式初始化贫途。守護(hù)進(jìn)程程序的名稱通常以字母“d”結(jié)尾,在我們系統(tǒng)啟動(dòng)時(shí),很多守護(hù)進(jìn)程便一起啟動(dòng),為我們做好開機(jī)前的配置
- PING:
ping
是一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)工具,用來(lái)檢測(cè)能否通過(guò)ip
協(xié)議發(fā)送數(shù)據(jù)到特定主機(jī),我們可以使用它來(lái)檢測(cè)我們是否連接上網(wǎng)絡(luò),該工具使用ICMP
數(shù)據(jù)包來(lái)測(cè)試連接.ping
發(fā)送ICMP ECHO_REQUEST
數(shù)據(jù)包,當(dāng)成功連接到指定ip
時(shí)會(huì)接收到ICMP ECHO_REPLY
確認(rèn).不成功時(shí)可能收到ICMP
錯(cuò)誤消息,或者收不到任何回復(fù)- dhcpcd: 全稱為
dhcp client daemon
,用來(lái)配置dhcp
(動(dòng)態(tài)主機(jī)設(shè)置協(xié)議)服務(wù),我們常見的dhcp
的作用是內(nèi)部網(wǎng)或網(wǎng)絡(luò)服務(wù)供應(yīng)商自動(dòng)分配IP地址給用戶,這就省略了我們手動(dòng)去配置網(wǎng)絡(luò)信息(ip,子網(wǎng)掩碼,網(wǎng)關(guān)等)的步驟,而該進(jìn)程會(huì)在系統(tǒng)啟動(dòng)時(shí)幫我們啟動(dòng)dhcp
服務(wù),我們?cè)谑褂眠^(guò)程中,也可手動(dòng)的調(diào)用dhcpcd
命令來(lái)連接有線網(wǎng)絡(luò)
更新系統(tǒng)時(shí)間
我們使用
timedatectl set-ntp true
命令來(lái)更新時(shí)間
timedatectl
: 是一個(gè)用來(lái)控制系統(tǒng)時(shí)間及日期的工具,set-ntp
選項(xiàng)后跟一個(gè)布爾值,來(lái)表示是否啟用ntp(Network Time Protocol,網(wǎng)絡(luò)時(shí)間協(xié)議)
來(lái)同步網(wǎng)絡(luò)時(shí)間,使用status
選項(xiàng)可以查看當(dāng)前的時(shí)間設(shè)置
3. 磁盤分區(qū)
我們使用
fdisk
工具來(lái)進(jìn)行磁盤的管理,我們的磁盤以塊設(shè)備文件的形式被系統(tǒng)展示為/dev/設(shè)備名
,如/dev/sda
,/dev/nvme0n1
,如果我們需要?jiǎng)?chuàng)建邏輯卷,就需要在這個(gè)階段完成
磁盤分區(qū) : 磁盤分區(qū)的好處有很多,如:
a. 我們?cè)谑褂靡粔K磁盤時(shí),不一定只使用一種文件系統(tǒng),不同分區(qū)可以格式化為不同的文件系統(tǒng)
b. 分區(qū)有利于管理設(shè)備,系統(tǒng)一般單獨(dú)放一個(gè)區(qū)苍凛,這樣由于系統(tǒng)區(qū)只放系統(tǒng)箍铭,其他區(qū)不會(huì)受到系統(tǒng)盤出現(xiàn)磁盤碎片的性能影響
c. 如果一個(gè)分區(qū)出現(xiàn)邏輯損壞螟炫,僅損壞的分區(qū)而不是整個(gè)硬盤受影響交換分區(qū)(swap) :
swap
分區(qū)是類似于虛擬內(nèi)存的一個(gè)手段,用來(lái)解決設(shè)備內(nèi)存不夠用的情況,他將磁盤的一部分空間用做存儲(chǔ)空間,當(dāng)系統(tǒng)的內(nèi)存不夠時(shí),將內(nèi)存中一部分暫時(shí)不用的進(jìn)程數(shù)據(jù)存檔到磁盤中,將內(nèi)存騰出給正在運(yùn)行的進(jìn)程使用
在以前的系統(tǒng)分區(qū)方案中,交換空間是必須的兩個(gè)分區(qū)之一(另一個(gè)是根分區(qū),但假如我們?nèi)绻褂?code>uefi的啟動(dòng)方式,我們還需要一個(gè)efi
分區(qū)),而現(xiàn)在我們可以根據(jù)自己的系統(tǒng)內(nèi)存夠不夠用來(lái)決定是否添加交換分區(qū)/dev目錄: 該目錄是
linux
的設(shè)備目錄,包含了Linux系統(tǒng)中使用的所有外部設(shè)備,常見的有
/dev/hd* : IDE設(shè)備
/dev/sd* : SCSI設(shè)備
/dev/null : 空設(shè)備,它丟棄一切寫入其中的數(shù)據(jù)(但報(bào)告寫入操作成功),我們通常會(huì)把不需要的數(shù)據(jù)寫入其中以丟棄
/dev/tty* : 虛擬終端
分區(qū)格式化
我們?cè)诮⒎謪^(qū)時(shí),需要考慮每個(gè)不同分區(qū)的作用,還要考慮每個(gè)分區(qū)的文件系統(tǒng),這個(gè)階段便是使用格式化工具來(lái)將每個(gè)分區(qū)格式化成需要的文件系統(tǒng)
- 文件系統(tǒng) : 文件系統(tǒng)是存儲(chǔ)設(shè)備上的數(shù)據(jù)的組織方式赁豆,它定義了數(shù)據(jù)在該設(shè)備上的保存仅醇、讀取和更新方法。不同的文件系統(tǒng)可以根據(jù)存儲(chǔ)設(shè)備的不同進(jìn)行優(yōu)化魔种,提高效率析二。
掛載分區(qū)
掛載分區(qū)是將剛才規(guī)劃好的磁盤掛載到當(dāng)前系統(tǒng)(啟動(dòng)盤中的安裝程序)的
/mnt
目錄中,借助當(dāng)前系統(tǒng)中的各種工具來(lái)對(duì)磁盤做進(jìn)一步的管理
- 掛載 : 在
linux
上,要使用一個(gè)文件,必須對(duì)包含它的文件系統(tǒng)進(jìn)行掛載的操作,在計(jì)算機(jī)啟動(dòng)時(shí),系統(tǒng)已經(jīng)自動(dòng)的掛載了我們?cè)O(shè)定好的文件系統(tǒng),但當(dāng)我們接入新的文件設(shè)備,如插入一個(gè)U盤時(shí),我們就得手動(dòng)進(jìn)行掛載操作(很多圖形化界面都帶有自動(dòng)掛載的功能,不需要手動(dòng)掛載)- /mnt :
mount
的簡(jiǎn)寫,專門用來(lái)作為掛載點(diǎn)
4. 安裝系統(tǒng)
選擇鏡像(源服務(wù)器)
由于
arch
的安裝是在線的,我們需要選擇從何處(鏡像源服務(wù)器)獲取我們需要的軟件包
- 鏡像源服務(wù)器 : 我們?cè)诎惭b系統(tǒng)或安裝軟件時(shí),需要從網(wǎng)絡(luò)上獲取大量的軟件包,鏡像源服務(wù)器就是為我們提供這些軟件包下載的網(wǎng)站
我們可以借助工具來(lái)選擇當(dāng)前我們網(wǎng)絡(luò)對(duì)應(yīng)的相對(duì)較為快速和及更新及時(shí)的軟件源,在使用系統(tǒng)的過(guò)程中,我們同樣可以編輯配置文件(/etc/pacman.d/mirrorlist
)來(lái)修改當(dāng)前使用的鏡像源
安裝基礎(chǔ)包
使用腳本安裝一些系統(tǒng)需要的基礎(chǔ)軟件包
5. 配置系統(tǒng)
Fstab
使用
genfstab
命令來(lái)自動(dòng)將已掛載的分區(qū)生成為永久的掛載配置文件
UUID/卷標(biāo):
UUID
指通用唯一識(shí)別碼
,當(dāng)我們創(chuàng)建好一個(gè)磁盤分區(qū)時(shí),它會(huì)得到一個(gè)唯一的UUID
來(lái)作為標(biāo)識(shí),我們可以用其來(lái)指代該分區(qū),相對(duì)于我們常用的卷標(biāo)來(lái)說(shuō),UUID
雖然很難去記憶,但其優(yōu)點(diǎn)是固定,設(shè)備的卷標(biāo)可能會(huì)改變,但UUID
存儲(chǔ)在文件系統(tǒng)超級(jí)塊中,始終是不變的/etc/fstab : 我們?cè)谥暗牟僮魇褂?code>mount命令來(lái)掛載分區(qū),兩者的不同在于
mount
是暫時(shí)的,系統(tǒng)重啟后就需要重新掛載,而寫入配置文件中,系統(tǒng)啟動(dòng)時(shí)會(huì)自動(dòng)讀取該配置文件,并進(jìn)行相應(yīng)的掛載,我們通常將系統(tǒng)常用或必須的一些分區(qū)寫入到該文件中
Chroot
我們使用
arch-chroot
命令來(lái)切換到我們安裝系統(tǒng)的根目錄/mnt
中去
- chroot(change root) : 我們使用該工具來(lái)創(chuàng)建一個(gè)虛擬的環(huán)境,它有著這樣幾個(gè)特點(diǎn):
-- 1. 當(dāng)前運(yùn)行進(jìn)程的外顯的根目錄會(huì)變?yōu)槲覀冎付ǖ哪夸?br> -- 2. 在這個(gè)環(huán)境中運(yùn)行的程序,將不能對(duì)該根目錄之外的文件進(jìn)行任何操作
這使得我們可以在系統(tǒng)還不能啟動(dòng)的情況下來(lái)進(jìn)行對(duì)系統(tǒng)的配置,這對(duì)修復(fù)系統(tǒng)是非常重要的,同時(shí)也不用擔(dān)心會(huì)受到我們啟動(dòng)盤中環(huán)境的影響我們可以注意到在之前的安裝過(guò)程中,我們編輯
鏡像源
時(shí),操作的是啟動(dòng)盤中的鏡像文件/etc/pacman.d/mirrorlist
,使用的各種命令也是啟動(dòng)盤中的命令,而在chroot
之后,因?yàn)椴荒茉L問在/mnt
之外的所有文件,所以也不能使用安裝在啟動(dòng)盤中的命令,需要自己重新安裝,這里簡(jiǎn)單驗(yàn)證一下:
目前我的啟動(dòng)盤和系統(tǒng)中都未安裝neofetch
,我們知道,執(zhí)行安裝時(shí)普通用戶命令默認(rèn)會(huì)安裝在系統(tǒng)根目錄中的usr/bin/
目錄下,先分別驗(yàn)證一下neofetch
目錄是否存在
在啟動(dòng)盤中安裝neofetch
(未chroot
前執(zhí)行pacman -S neofetch
安裝),再進(jìn)行查詢
我們?cè)?code>chroot后再執(zhí)行同樣的語(yǔ)句安裝neofetch
,并退出chroot
,執(zhí)行剛才的find
語(yǔ)句
我們可以看到,neofetch
這時(shí)才成功的被安裝到了新系統(tǒng)中,也就是說(shuō),我們?cè)?code>chroot之后,將我們指定的目錄作為了系統(tǒng)的根目錄,因此我們安裝neofetch
時(shí)也會(huì)安裝在我們指定系統(tǒng)根目錄(/mnt
)中的usr/bin/
目錄下
借助這個(gè)特性,我們便可以在不啟動(dòng)新系統(tǒng)的情況下,進(jìn)行新系統(tǒng)的配置
設(shè)置時(shí)區(qū)
使用
ln
命令將系統(tǒng)中已經(jīng)存在的時(shí)區(qū)配置文件軟鏈接到/etc/localtime
- linux鏈接 : linux中的鏈接,分為軟鏈接(
symbolic
)和硬鏈接(hard
),兩者都可以當(dāng)做一個(gè)和源文件同步的文件,只是在表現(xiàn)形式上,軟鏈接像是一個(gè)鏈接文件,它的詳細(xì)信息中會(huì)展示其指向的源文件,而且軟鏈接的大小和源文件大小無(wú)任何關(guān)系,硬鏈接更像是源文件的一份拷貝,只是兩者會(huì)同步改動(dòng)
本地化
本地化是每個(gè)人根據(jù)自己的個(gè)人喜好選擇自己適用的鍵盤布局,編碼方式
配置網(wǎng)絡(luò)
此處的配置網(wǎng)絡(luò)指的是,設(shè)置本機(jī)的主機(jī)名(
/etc/hostname
)與設(shè)置本機(jī)的常用域名解析文件(/etc/hosts
)
- /etc/hosts : 該文件定義了一些主機(jī)名和
ip
的對(duì)應(yīng)關(guān)系,在最初DNS
技術(shù)還未出現(xiàn)時(shí),該文件就相當(dāng)于一個(gè)本地的DNS
服務(wù)
現(xiàn)在,我們?cè)谠L問指定域名時(shí),系統(tǒng)先會(huì)訪問本機(jī)的hosts
文件,如果未找到相應(yīng)的匹配,再去訪問DNS
服務(wù),我們通常用它來(lái)補(bǔ)充網(wǎng)絡(luò)中的DNS
,一個(gè)簡(jiǎn)單的例子:
可以看到,在添加了我自己隨便寫的一條域名解析后,執(zhí)行ping
操作已經(jīng)指向了我所指定的域名,哪怕我定義在hosts
文件中的是一條錯(cuò)誤的解析規(guī)則
Initramfs
linux
啟動(dòng)中需要的一個(gè)文件系統(tǒng),個(gè)人具體也不是很了解,感興趣的可以看這 : Initramfs/Guide
設(shè)置root
密碼
簡(jiǎn)單的設(shè)置密碼過(guò)程
安裝引導(dǎo)程序
- 引導(dǎo)程序 : 在系統(tǒng)啟動(dòng)時(shí),最先啟動(dòng)的是
BIOS
,它尋找到我們的可啟動(dòng)設(shè)備之后,就將控制權(quán)交給引導(dǎo)程序,引導(dǎo)程序幫我們查找并打開設(shè)備中的操作系統(tǒng),grub
是我們linux
中最常用的引導(dǎo)程序
在最開始的時(shí)候,引導(dǎo)程序位于我們硬盤的主引導(dǎo)記錄分區(qū)(MBR
),隨著后面引導(dǎo)程序的越來(lái)越復(fù)雜,MBP
中已經(jīng)存儲(chǔ)不下,如今的系統(tǒng)將MBR
中的引導(dǎo)程序作為第一段引導(dǎo)程序,該引導(dǎo)會(huì)去找到并啟動(dòng)第二段引導(dǎo)程序,也就是我們常見的grub
等引導(dǎo)程序
結(jié)束,重啟
至此,基本系統(tǒng)(無(wú)圖形化環(huán)境)的安裝已經(jīng)結(jié)束,重啟進(jìn)入新系統(tǒng)后就可以開始使用了