年輕人的第一套Linux系統(tǒng):獻(xiàn)給ArchLinux

問(wèn) 先別廢話,這篇文章寫得是什么?
以在虛擬機(jī)里安裝Arch Linux的過(guò)程為主線,分享Linux的學(xué)習(xí)方法和操作系統(tǒng)安裝心得,授人以魚不如授人以漁。

問(wèn) 也就是看這篇文章學(xué)不會(huì)Arch Linux的安裝是吧?
不但能學(xué)會(huì)Arch Linux的安裝,還能學(xué)會(huì)一整套操作系統(tǒng)安裝思想,一通百通。學(xué)會(huì)在虛擬機(jī)中安裝Arch Linux,就一定能在物理機(jī)上安裝;有了這套思想,也一定能安裝其他操作系統(tǒng),以及解決安裝過(guò)程中出現(xiàn)的問(wèn)題。

問(wèn) 看進(jìn)度條覺得廢話一定不少,是吧?
的確,這不是一個(gè)純粹的安裝教程,每一步都有一些方法性的思考,而不是簡(jiǎn)單給幾個(gè)命令。這位作者寫得簡(jiǎn)約而全面:http://www.itdecent.cn/p/7c78dc4c53e5。雖然是2018年的文章,但是今天看來(lái)基本不過(guò)時(shí)。ArchLinux最好的安裝教程是官方Installation Guide。Arch Linux的更新變化比較大,所以必須參考官方文檔。中文教程也很有參考價(jià)值,官方更新影響比較大的是一些包和工具的名字,我看過(guò)一篇2012年的博客,基本的安裝流程思路依然適用。

問(wèn) 不是安裝教程,那我還聽你扯什么?拜拜。
操作系統(tǒng)安裝的思路都是相通的,您研究了Arch Linux的安裝,這就是一種學(xué)習(xí)力,那么再去安裝其他Linux發(fā)行版,安裝Windows,將會(huì)無(wú)比的順滑和愉悅。即便是源碼編譯Linux,也不會(huì)制造更多障礙。學(xué)習(xí)Linux最好的方法就是動(dòng)手安裝并配置一次Arch Linux。

問(wèn) 聽說(shuō)Arch Linux的安裝挺復(fù)雜的吧?
您一定聽過(guò)小馬過(guò)河的故事吧?做任何事情,最難的都是邁出第一步。真正走出去了,那就車到山前必有路了。

問(wèn) 那我們開始安裝Arch Linux吧,有點(diǎn)等不及了。
我們需要一些準(zhǔn)備工作,假設(shè)您具備如下條件:

  • 順暢的網(wǎng)絡(luò),這點(diǎn)很重要。Arch的安裝過(guò)程必須聯(lián)網(wǎng)下載最新安裝包;
  • 虛擬機(jī)軟件;
  • 基本的Linux使用經(jīng)驗(yàn)(會(huì)用ls,cat等命令,知道參數(shù)選項(xiàng)是怎么回事,能夠看懂教程里用的命令是怎么回事);
  • 基本的Vim使用經(jīng)驗(yàn)(Vim是Linux下的編輯器,和Windows下面的記事本、Word的使用習(xí)慣有很大的差別。能夠在Vim里完成查找、輸入、剪切、粘貼、退出等操作。這里可以用在線Linux環(huán)境學(xué)習(xí)Vim的基本使用https://www.shiyanlou.com/courses/2
  • 用搜索引擎解決問(wèn)題的能力和習(xí)慣

問(wèn) 原來(lái)是把Arch Linux安裝到虛擬機(jī)里,我還以為是安裝到物理機(jī)呢。沒意思,走了!
除非您的電腦上只運(yùn)行一套Arch Linux,否則我都建議您在虛擬機(jī)中安裝。安裝到虛擬機(jī)里是最好且最安全的學(xué)習(xí)方法,您可以反復(fù)安裝,并且不會(huì)心疼硬盤的數(shù)據(jù)以及反復(fù)格式化帶來(lái)的損耗。假設(shè)Linux是你的生產(chǎn)環(huán)境,那么安裝Ubuntu LTS這種開箱即用out of the box是最省心的,因?yàn)槟闹饕?yīng)該花在業(yè)務(wù)上,而不是去折騰平臺(tái);如果Linux不是您的生產(chǎn)環(huán)境,那么無(wú)論如何你都會(huì)用到Windows,或者一定有某些任務(wù)需要回歸Windows,不管是游戲,還是Adobe全家桶,還是辦公。如果只是為了學(xué)習(xí)使用Linux,虛擬機(jī)是最實(shí)用且有效的方案。

問(wèn) 我的電腦硬件性能強(qiáng)悍,我可以在Arch Linux上安裝一個(gè)虛擬機(jī),用來(lái)運(yùn)行Windows,在虛擬機(jī)運(yùn)行那些必須在Windows下使用的軟件。
這真是一個(gè)好的解決方法。祝您玩的開心。

問(wèn) 其實(shí)我的電腦硬件資源很緊張,只有4G內(nèi)存,256G的機(jī)械硬盤。聽說(shuō)Linux比較高效,想換一套Linux來(lái)提升硬件的性能。
操作系統(tǒng)也是一個(gè)軟件,需要使用內(nèi)存。所謂Linux高效,是指Linux系統(tǒng)本身占據(jù)的資源比較少,可以把更多的內(nèi)存留給應(yīng)用軟件。想獲得流暢的使用體驗(yàn),最經(jīng)濟(jì)的辦法是加裝一個(gè)同型號(hào)4G內(nèi)存條,更換一塊固態(tài)硬盤。

問(wèn) 用什么虛擬機(jī)軟件?
VMware或Virtual Box。前者是收費(fèi)的,我們可以以學(xué)習(xí)的用途掩耳盜鈴;后者是免費(fèi)的,而且比Vmware免費(fèi)的VM Player要強(qiáng)大。Virtual Box常常有未知的報(bào)錯(cuò),很多時(shí)候,修理的難度比重新制造的難度還要高。解決未知錯(cuò)誤最好的辦法是更改軟件版本或者更換軟件。

問(wèn) 我還是一個(gè)小白,安裝過(guò)程能不能說(shuō)得詳細(xì)點(diǎn)?圖文步驟那種。
研究表明,嬰兒學(xué)步車對(duì)嬰兒學(xué)走路的幫助是極為有限的。把人扔到游泳池里學(xué)會(huì)游泳的速度比穿著救生衣、綁著背漂學(xué)習(xí)快得多。很多文章、視頻教程都會(huì)寫“零基礎(chǔ)”、“小白”、“包教包會(huì)”。小白是一種空杯心態(tài),stay foolish,stay hungry,這對(duì)學(xué)習(xí)是有幫助的;但是如果一直把自己擺到小白的位置,那成長(zhǎng)和進(jìn)步是有限的。如果以自己是小白而指望別人手把手教你,這既浪費(fèi)你的時(shí)間,也浪費(fèi)別人的精力,只能大家圖一熱鬧。我反對(duì)“零基礎(chǔ)”這種提法,因?yàn)榇蟛糠帧傲慊A(chǔ)”的教學(xué)要么是重復(fù)發(fā)明輪子,低質(zhì)量的同質(zhì)化輸出;要么就是涉嫌欺詐消費(fèi)者,夸大宣傳效果。

問(wèn) 所以呢?可不可以做圖文教程?
本文不配圖,老實(shí)說(shuō)這也不是一篇圖文安裝教,主要是通過(guò)Arch Linux的安裝梳理操作系統(tǒng)安裝的思路,一通百通。就像你學(xué)透了C和C++,再去學(xué)習(xí)Java,Python都不會(huì)有什么障礙。如果你從Python入門,那么學(xué)習(xí)C/C++,Java,還會(huì)感覺有明顯的學(xué)習(xí)曲線。

問(wèn) 我已經(jīng)查了很多發(fā)行版的資料,我知道Arch Linux的安裝難度是比較高的。老實(shí)交代,標(biāo)榜Arch Linux為年輕人第一套Linux發(fā)行版是不是虛榮心作祟,是不是故弄玄虛?都是自己人,別裝孫子。
不是故弄玄虛。Arch Linux的安裝肯定比Ubuntu,Windows的安裝要復(fù)雜,但是學(xué)習(xí)的過(guò)程總是痛苦的。至于您能不能完成,這依然是一個(gè)小馬過(guò)河的難題。借用技術(shù)文檔里最愛用的一句話Get your feet wet,能不能趟過(guò)這條河,下水才能知道。

問(wèn) 為什么選擇Arch Linux,而不是Ubuntu/Debian/CentOS/OpenSuse等?
既然我們都聊Arch Linux的事了,我們就不在Linux和Unix的源流以及Linux的發(fā)行版上多浪費(fèi)口舌了?,F(xiàn)在大部分Linux發(fā)行版的安裝過(guò)程比較友好,隱藏了大量技術(shù)細(xì)節(jié),比如Ubuntu,您可以點(diǎn)幾個(gè)按鈕便實(shí)現(xiàn)輕松的無(wú)人值守安裝。工具的作用就是把手工輸入的命令變成友好的圖形界面。Arch Linux的安裝是比較原始的,沒有圖形界面,每一步都是命令,所以我們可以學(xué)到很多系統(tǒng)安裝的故事。

問(wèn) 看了這篇文章,我能不能獨(dú)立完成安裝Arch Linux呢?
假設(shè)你具備基本的Linux使用經(jīng)驗(yàn)與Vim的使用經(jīng)驗(yàn),假設(shè)你具備利用搜索引擎解決問(wèn)題的能力和習(xí)慣,那么你一定可以完成Arch的安裝,而且可以把Arch自定義成你想要的樣子。開始吧!


開始安裝

  1. 下載鏡像。在archlinux.org下載安裝最新的安裝包,32bit或者64bit,如你所需。如果是在虛擬機(jī)中運(yùn)行,我想32bit版本是足夠的,因?yàn)槲抑唤o它準(zhǔn)備了2G內(nèi)存。在系統(tǒng)之家、雨林木風(fēng)等盜版鏡像網(wǎng)站下載的Windows鏡像是包含完整Windows系統(tǒng)的,但這個(gè)archlinx的鏡像只是一個(gè)用于提供安裝環(huán)境的linux系統(tǒng),我們?cè)诤罄m(xù)安裝的過(guò)程中要聯(lián)網(wǎng)下載各種模塊,所以Arch Linux安裝必須有良好的網(wǎng)絡(luò)環(huán)境。
  2. 瀏覽官方文檔Installation Guide。計(jì)算機(jī)任何學(xué)科的學(xué)習(xí)都繞不開英語(yǔ),這是我們必須面對(duì)的事實(shí)。由于Arch更新很頻繁,很多中文教程中使用的命令一不小心就會(huì)過(guò)時(shí),所以提前看一下官方文檔是很有必要的。
    問(wèn) 我的英語(yǔ)不太好,不想讀英文文檔,也看不下去英文文檔,怎么辦?
    不看英文文檔,在中文互聯(lián)網(wǎng)世界里也能解決Arch Linux的大部分問(wèn)題,但是學(xué)習(xí)Linux就一定要敢于用英語(yǔ)。注意,學(xué)Linux的英語(yǔ)!=學(xué)英語(yǔ)。我們要的英語(yǔ)是讀懂官方文檔,而不是和外國(guó)人日常交流。如果和外國(guó)人交流,你需要學(xué)生活英語(yǔ),學(xué)旅游英語(yǔ),練習(xí)口語(yǔ),掌握日常詞匯,知道怎么點(diǎn)菜,怎么買東西;可是讀官方英文文檔,這些能力都不需要,您只需要高中的英語(yǔ)語(yǔ)法知識(shí)(連CET4都不需要)以及技術(shù)詞匯的儲(chǔ)備,大部分人都是具備這樣的英語(yǔ)水平的,我們不看英文文檔是因?yàn)閷?duì)英語(yǔ)的恐懼以及對(duì)便利的中文資料的依賴。即便Arch這種相對(duì)生僻的領(lǐng)域,也已經(jīng)有了成熟的中文資料。英文只是一個(gè)工具,它只是你的一個(gè)武器,是你的助手,不可怕吧?
    讀官方文檔,只需要查幾個(gè)不認(rèn)識(shí)的動(dòng)詞,副詞、形容詞可以不管,硬著頭皮讀下去就能讀通了。您讀完一份官方文檔,會(huì)發(fā)現(xiàn)大部分技術(shù)文檔用的詞匯都差不多,來(lái)回來(lái)就那么幾個(gè)動(dòng)詞,再讀其他文檔就很輕松了。
    如果你具備高中英語(yǔ)水平,無(wú)論你的英文成績(jī)?cè)趺礃?,你都不需要再去學(xué)習(xí)任何英語(yǔ)課程。打開官方文檔,硬著頭皮讀下去就是了。不需要每個(gè)詞都查,只查動(dòng)詞
    比如抽一個(gè)安裝條目,set the keyboard layout,設(shè)置鍵盤布局。set是很基礎(chǔ)的動(dòng)詞,設(shè)置,我們常常見到setting之類的目錄;layout是布局,如果您做網(wǎng)頁(yè)設(shè)計(jì),對(duì)于layout這個(gè)詞一定不陌生。如果您對(duì)于鍵盤布局這個(gè)概念不了解,那么這不是英文制造的障礙,而是技術(shù)名詞本身的障礙。
    直接以Installation Guide為例,這里安裝分了五步:
    • pre-installation 安裝前的準(zhǔn)備工作(下載系統(tǒng),分區(qū),格式化磁盤)。
    • installation 安裝
    • configure system 配置系統(tǒng)
    • reboot 重啟
    • post-installation 安裝后的配置工作
      install是安裝的意思,installation是install的名詞。如果您安裝過(guò)大量非國(guó)產(chǎn)軟件,對(duì)這個(gè)詞不會(huì)陌生;如果您恰巧不認(rèn)識(shí)這個(gè)詞,可以查在線詞典,這個(gè)詞您在接下來(lái)的文檔中會(huì)反復(fù)看到,保準(zhǔn)您不會(huì)再忘記;configure是配置,在Windows里面有很多.conf結(jié)尾或者名為config的文件,這就是配置文件,如果您恰巧不認(rèn)識(shí)這個(gè)詞,可以查在線詞典,下次見面就認(rèn)得了;system,系統(tǒng),這是中學(xué)詞匯;reboot,重啟,Linux下面有一個(gè)reboot命令。pre-installation,post-installation是兩個(gè)復(fù)合詞,用了pre和post這兩個(gè)詞根,pre表示之前,準(zhǔn)備工作;post表示之后,善后工作。如果您不知道何為詞根,也不了解這種長(zhǎng)長(zhǎng)的單詞的構(gòu)詞方法,也沒關(guān)系,只要知道pre和post是什么意思就可以了,管它什么詞根呢!這堆單詞的障礙主要在技術(shù)名詞,如果您平常讀中文文檔,也會(huì)順手看英文的名詞,那么讀起技術(shù)文檔將會(huì)非常愉悅。
      我們?cè)偬粢粋€(gè)看起來(lái)非??植赖木渥樱彩钦桨惭b步驟的第一句:
      It is recommended to verify the image signature before use, especially when downloading from an HTTP mirror, where downloads are generally prone to be intercepted to serve malicious images.
      我從技術(shù)文檔里脫離上下文環(huán)境直接擇出來(lái)這么一個(gè)句子,其實(shí)閱讀難度要增大了一倍,您理解的如何?如果您能夠基本理解大意,那么您閱讀英文文檔的能力已經(jīng)非常的強(qiáng),可以跳過(guò)下面的廢話;如果您閱讀出現(xiàn)了一些障礙,我們看看障礙在哪里。
      障礙可能在prone,這個(gè)單詞要查一下;intercept,malicious,如果研究網(wǎng)絡(luò)安全,這兩個(gè)詞不會(huì)陌生,intercept是劫持,malicious是惡意軟件,惡意程序,如果對(duì)網(wǎng)絡(luò)安全不熟悉,這兩個(gè)詞要查一下;
      障礙可能在verify image signature,驗(yàn)證數(shù)字簽名。verify是驗(yàn)證,查完之后就可以一直認(rèn)得了;signature,數(shù)字簽名。什么是數(shù)字簽名?如果不知道數(shù)字簽名,那這個(gè)障礙在于技術(shù)本身,而不是語(yǔ)言。
      HTTP mirror,mirror是鏡子,這是指http鏡像服務(wù)器。什么是http?什么是鏡像服務(wù)器?如果不知道,那么障礙在于這些技術(shù)名詞,而不是語(yǔ)言。如果您去查這些技術(shù)名詞,往往都是有英文譯名的,這樣反過(guò)來(lái)幫助您了解英文名詞。
      如果recommend,especially,generally有障礙,那么可能需要多花點(diǎn)功夫?qū)W習(xí)英語(yǔ)單詞了,因?yàn)檫@是中學(xué)詞匯;
      這個(gè)句子的語(yǔ)法成分并不簡(jiǎn)單,它用了插入語(yǔ),用了where引導(dǎo)的定語(yǔ)從句,但是您根本不需要研究這些。您只需要知道大意:網(wǎng)上下載的鏡像最好做一下數(shù)字簽名驗(yàn)證,防止下載的鏡像被惡意攻擊或者篡改。
      我們只需要讀懂技術(shù)文檔的意思,我們并不需要研究英語(yǔ)。
      下面我會(huì)按照技術(shù)文檔里的5步來(lái)說(shuō)明以Arch Linux為例的操作系統(tǒng)的安裝流程:
  3. pre-installation
    Linux和Windows的安裝準(zhǔn)備工作是相同的,主要需要解決兩個(gè)問(wèn)題:
    第一,創(chuàng)造安裝環(huán)境。
    第二,在硬盤上準(zhǔn)備安裝空間。

什么是安裝環(huán)境?一套用來(lái)安裝新的操作系統(tǒng)的精簡(jiǎn)版的操作系統(tǒng)。
我們之所以能使用電腦這一堆硬件,是因?yàn)橛布嫌胁僮飨到y(tǒng);我們現(xiàn)在重新安裝操作系統(tǒng),也必須一個(gè)操作系統(tǒng)內(nèi)進(jìn)行,要不然我們用不了這堆硬件。
這就像買口罩,去藥店買口罩必須戴口罩,可家里又沒有口罩,那怎么去買口罩呢?答案是戴著一個(gè)簡(jiǎn)易的口罩到藥店去買合格的口罩。藥店里售賣的合格口罩是完整的操作系統(tǒng),安裝環(huán)境是家里自制的建議口罩,它功能不完善,但是能夠勉強(qiáng)應(yīng)付去藥店這段路的需求。如果沒有這個(gè)簡(jiǎn)易口罩,咱們連門都出不了。
Windows上實(shí)現(xiàn)這個(gè)功能的是Windows PE(windows pre-installation environment),這是一個(gè)具有有限功能的小型Windows系統(tǒng),它可以是xp版本的,也可以是win7,win8,win10版本的。我們刻錄安裝盤,就是給U盤里裝一個(gè)操作系統(tǒng),只不過(guò)這個(gè)操作系統(tǒng)是Windows PE,一個(gè)簡(jiǎn)化版的Windows系統(tǒng),我們通過(guò)U盤里的這個(gè)系統(tǒng)來(lái)操作電腦的硬件,把另一個(gè)系統(tǒng)部署到電腦硬盤上,同時(shí)完成引導(dǎo)的設(shè)置,讓電腦啟動(dòng)的時(shí)候能夠找到硬盤上新系統(tǒng)的位置,加載操作系kernel。一個(gè)操作系統(tǒng)本質(zhì)上和一個(gè)hello world程序并沒有區(qū)別,都是一段可執(zhí)行程序。Arch的安裝環(huán)境是root@archiso,大部分的Linux安裝都使用這種光盤系統(tǒng)(當(dāng)然這種系統(tǒng)也可以被燒錄在U盤里),區(qū)別在于有的Linux會(huì)像Windows一樣預(yù)先下載好新系統(tǒng)的鏡像,比如Ubuntu;有的會(huì)在光盤系統(tǒng)中根據(jù)需求下載系統(tǒng)模塊,比如Arch。

問(wèn) 既然燒錄就是在U盤里安裝操作系統(tǒng),那可不可以直接把Arch Linux安裝在U盤里?
當(dāng)然可以,只要你的U盤有2G以上的空間,原則上是夠的,但是U盤的訪問(wèn)速度太慢了,比硬盤慢很多,所以只能裝Win PE這種精簡(jiǎn)的系統(tǒng),在安裝系統(tǒng)時(shí)候簡(jiǎn)單用用,或者用于硬盤上操作系統(tǒng)的修復(fù),或者在你使用圖書館、賓館等未知系統(tǒng)環(huán)境安全性的場(chǎng)合提供一個(gè)臨時(shí)系統(tǒng)環(huán)境。

什么叫在硬盤上準(zhǔn)備空間?
安裝操作系統(tǒng)其實(shí)就是把編譯的操作系統(tǒng)機(jī)器碼存儲(chǔ)在硬盤里,然后安裝引導(dǎo)程序,告訴主板該到硬盤的哪個(gè)位置加載系統(tǒng)源碼到內(nèi)存里。安裝一個(gè)程序,一個(gè)游戲也是類似的,把機(jī)器碼存放到硬盤里,只不過(guò)它是告訴操作系統(tǒng)的文件管理程序要到哪些位置找機(jī)器碼。
Windows安裝前也需要?jiǎng)澐钟脖P空間,并對(duì)硬盤進(jìn)行格式化formation。格式化可以用圖書館來(lái)類比,數(shù)據(jù)是圖書館里的書,格式化就是圖書館里的書架。給您一層圖書館空間用來(lái)放書,不同人會(huì)有不同書架的方案,有的人用高高的書架,有的人用矮矮的書架;有的人布置的很密,有的人布置的很寬敞。不同的布置方案就是文件系統(tǒng),書架上的書就是數(shù)據(jù)。Windows用的文件系統(tǒng)是NTFS(New Technology File System,從Windows NT時(shí)代開始引入,現(xiàn)在成為Windows的通用操作系統(tǒng)。Windows NT以前用的是FAT32,Windows95和Dos兼容時(shí)用的是FAT16。除非兼容Dos環(huán)境,否則不會(huì)用FAT來(lái)格式化分區(qū));Linux支持很多種文件系統(tǒng)類型,但是推薦采用ext4文件系統(tǒng)(Extended File System 4th,從ext、ext2、ext3一路發(fā)展過(guò)來(lái),是Linux原生的文件系統(tǒng);大部分Linux發(fā)行版推薦的文件系統(tǒng)都是ext4)

問(wèn) 我不想用ext4格式化分區(qū),可以用別的文件系統(tǒng)格式嗎?
當(dāng)然可以,但如果您不知道該用其他什么方案的話,ext4這個(gè)默認(rèn)選項(xiàng)一定是不會(huì)錯(cuò)的。

Windows上分區(qū)和格式化都是在圖形界面軟件里完成的,甚至可以一鍵幫你分成4個(gè)區(qū)。如果在原有Windows系統(tǒng)里重裝Windows,那么硬盤還是NTFS分區(qū),連格式化都不需要;Arch里面需要用cfdisk(或fdisk,parted等等)先分區(qū),然后用mkfs.ext4,mkfs.vfat這些工具進(jìn)行格式化。
所謂格式化就是給圖書館里安裝書架;
所謂書架,就是文件系統(tǒng);
所謂文件系統(tǒng)就是虛擬文件在物理存儲(chǔ)介質(zhì)上的分布和管理方案。
這時(shí)候你可能有很多問(wèn)題:

  • 除了ext,ext2,ext3,ext4,Linux上還有哪些文件系統(tǒng)?
  • Linux能否安裝在NTFS文件系統(tǒng)的磁盤上?
  • Linux文件系統(tǒng)的架構(gòu)和設(shè)計(jì)理念是什么?
  • 那些云存儲(chǔ)Linux服務(wù)器,存儲(chǔ)的都是PB級(jí)的數(shù)據(jù),它們用的文件系統(tǒng)也是ext4嗎?
  • Linux的ext4和Windows NTFS有什么本質(zhì)區(qū)別嗎,為什么不用相同的文件系統(tǒng)呢?
  • ......

你可能還有其他很多暫時(shí)解決不了的問(wèn)題,我的建議是先不要去解決。我們的主線任務(wù)是完成Arch的安裝,只要能將任務(wù)推進(jìn)下去,現(xiàn)在不深究原理。獵人準(zhǔn)備到森林里打兔子,它看見狐貍子就追狐貍,看見梅花鹿又放棄狐貍?cè)プ访坊梗妨艘惶?,結(jié)果什么都沒打到。沒有什么問(wèn)題是可以刨根問(wèn)底的,如果一直沿岔路鉆下去,我們一輩子都研究不完。
這些問(wèn)題可以等著以后有時(shí)間回過(guò)頭再深究;如果你不做Linux的運(yùn)維,文件系統(tǒng)設(shè)計(jì),其中大部分問(wèn)題甚至永遠(yuǎn)不需要深究。學(xué)習(xí)最重要的一個(gè)原則就是不忘初心,不要忘記你是為了什么出發(fā)的。就比如我現(xiàn)在扯了這么多閑篇,我已經(jīng)忘記了我本來(lái)要寫的是一個(gè)Arch虛擬機(jī)安裝方案了。

假設(shè)你已經(jīng)在官網(wǎng)上下載好了arch最新的發(fā)行版的iso;
假設(shè)你對(duì)下載下來(lái)的文件已經(jīng)做過(guò)數(shù)字簽名驗(yàn)證,驗(yàn)證無(wú)誤;如果你以前沒有做過(guò)數(shù)字簽名驗(yàn)證,可以不做,因?yàn)槿プ鰯?shù)字簽名驗(yàn)證的過(guò)程你又會(huì)有如下的問(wèn)題:

  • 在Windows和Linux系統(tǒng)中有什么原生工具可以進(jìn)行數(shù)字簽名比對(duì)?
  • 什么是數(shù)字簽名Signature?
  • 數(shù)字簽名都有哪些算法?什么是PGP?實(shí)現(xiàn)PGP除了GnuPG還有其他的工具嗎?Windows上如何做PGP驗(yàn)證?
  • 什么是非對(duì)稱加密?什么是公鑰和私鑰?非對(duì)稱加密的數(shù)學(xué)基礎(chǔ)是什么?
  • ......

網(wǎng)絡(luò)學(xué)習(xí)資源很豐富,所以專注這種能力就更加可貴。這些問(wèn)題又夠你研究一天了,結(jié)果天都黑了,Arch還沒有裝起來(lái)。

假設(shè)你在虛擬機(jī)中安裝,已經(jīng)配置好了虛擬機(jī),并把iso加載到虛擬機(jī)系統(tǒng)的光驅(qū)里,并且設(shè)置好了系統(tǒng)啟動(dòng)順序。如果你沒有對(duì)虛擬機(jī)做額外的設(shè)置,那么虛擬機(jī)的啟動(dòng)方式應(yīng)該是BIOS+MBR分區(qū),而不是UEFI+GPT分區(qū)。這時(shí)候你可能還有很多問(wèn)題:

  • 什么是UEFI?什么是GPT?什么是MBR?GPT分區(qū)和MBR分區(qū)有什么區(qū)別?
  • BIOS為什么又稱為legacy?
  • ......

請(qǐng)把這些問(wèn)題放一放,現(xiàn)在我們要啟動(dòng)系統(tǒng)了。屏幕上跳動(dòng)一連串代碼后,我們進(jìn)入了root@archiso。這很酷,系統(tǒng)為你自動(dòng)登錄了賬戶,還是無(wú)密碼的root賬戶。
Installation Guide上pre-installation里的后續(xù)步驟如下,大部分中文安裝教程也都是參照這個(gè)順序來(lái)的:

  • set keyboard layout
  • verify the boot mode
  • connect to the internet
  • update the system clock
  • partition the disk
  • format the partition
  • mount file system

必要的步驟已經(jīng)被加粗了,7步變成了3步,也就是分區(qū)、格式化、掛載。我們看一看那些可以跳過(guò)的步驟:

  • set keyboard layout設(shè)置鍵盤布局。假設(shè)不做什么操作,那么系統(tǒng)用的就是美式鍵盤布局,也就是我們熟悉的qwer。當(dāng)然有一些人用的不是qwer鍵盤,比如日語(yǔ)鍵盤,法語(yǔ)鍵盤或者其他改鍵方案。不管您用到用不到這一步,反正我是用不到,無(wú)視這一步。
  • verify the boot mode。確認(rèn)你的主板到底是UEFI方式啟動(dòng)還是BIOS啟動(dòng)。如果你是虛擬機(jī),我相信您大概率是是BIOS啟動(dòng)。可以通過(guò)這個(gè)命令驗(yàn)證是否為BIOS啟動(dòng):
ls /sys/firmware/efi/efivars

如果你通過(guò)UEFI啟動(dòng),這個(gè)目錄就不是空的;如果你通過(guò)BIOS啟動(dòng),這個(gè)命令執(zhí)行是無(wú)結(jié)果的。不管您愿不愿意做,反正我是不需要。

  • connect to the internet聯(lián)網(wǎng)。Arch Linux的安裝過(guò)程必須聯(lián)網(wǎng)。我們安裝Windows是不需要聯(lián)網(wǎng)的,所有的系統(tǒng)文件都在光盤、U盤里刻錄好了。Arch的更新是非常頻繁的,沒有穩(wěn)定版一說(shuō),所以安裝的時(shí)候需要從軟件源聯(lián)網(wǎng)下載。簡(jiǎn)單來(lái)說(shuō),聯(lián)不上網(wǎng)就沒辦法安裝Arch。假設(shè)你在物理機(jī)上安裝,你可以用wifi-menu工具連接無(wú)線,或者用dhcpcd自動(dòng)獲取ip地址。當(dāng)然也有可能你用的是固定ip上網(wǎng),statci ip,盡管這樣的奢侈在我們國(guó)家很難得,這時(shí)候需要你在archiso下做配置。可是你為什么不在虛擬機(jī)里安裝呢?
    假設(shè)你在虛擬機(jī)里安裝,只要你的筆記本電腦能聯(lián)網(wǎng),你的虛擬機(jī)系統(tǒng)就能通過(guò)NAT或者bridge上網(wǎng),除非你在虛擬機(jī)設(shè)置中改動(dòng)了默認(rèn)設(shè)置,不允許虛擬機(jī)聯(lián)網(wǎng)。如果你的筆記本電腦沒聯(lián)網(wǎng),那您得想辦法聯(lián)上網(wǎng)絡(luò)。假設(shè)你只需要基礎(chǔ)版的Linux,您自己指定驅(qū)動(dòng)程序,你不用圖形界面,你不需要man這種系統(tǒng)幫助工具,你也不需要vim等編輯器,大概需要下載200M數(shù)據(jù)。如果下載圖形界面,各種工具軟件,那么下載量就在1G往上了。幸運(yùn)的是,國(guó)內(nèi)的Linux軟件源速度都很快,不限速。你下得多快,它就給的多快。通過(guò)ping命令測(cè)試網(wǎng)絡(luò)聯(lián)通狀況:
ping -c 4 www.baidu.com

ping是一個(gè)用來(lái)測(cè)試網(wǎng)絡(luò)聯(lián)通狀況的工具。Windows下面ping默認(rèn)是發(fā)送4個(gè)數(shù)據(jù)包,Linux下ping如果不設(shè)置數(shù)據(jù)包,它會(huì)一直發(fā)送數(shù)據(jù)包。c是count,-c 4這個(gè)參數(shù)就是發(fā)送4個(gè)包的意思。國(guó)內(nèi)測(cè)速用baidu,外網(wǎng)測(cè)速用google。

  • update the system clock 校正系統(tǒng)時(shí)間,連接網(wǎng)絡(luò)授時(shí)服務(wù)器校準(zhǔn)系統(tǒng)時(shí)間。不管您是否需要,反正我是不需要。
  • partition the disk 分區(qū)
    硬盤分區(qū)分為主分區(qū)primary和擴(kuò)展分區(qū)extend。通過(guò)BIOS啟動(dòng)只能使用MBR分區(qū)表,使用MBR的硬盤只能劃分出4個(gè)主分區(qū)。Windows上很多分區(qū)軟件可以一鍵分成C、D、E、F四個(gè)區(qū),為什么不分成5個(gè)區(qū)?因?yàn)樽疃嘀荒芊殖?個(gè)主分區(qū)。如果要更多的分區(qū),需要把一塊分區(qū)設(shè)置成擴(kuò)展分區(qū)extend,這塊擴(kuò)展分區(qū)是可以劃分成多個(gè)邏輯分區(qū)的。這種分區(qū)限制是由BIOS決定的,和Linux還是Windows無(wú)關(guān)。
    操作系統(tǒng)必須安裝在主分區(qū)里,假設(shè)你裝Windows+Linux的雙系統(tǒng),Windows用了4個(gè)主分區(qū),那么Linux就無(wú)法安裝了。這時(shí)候需要在Windows里用邏輯分區(qū)來(lái)騰出一塊主分區(qū)給Linux用。
    Linux下面分區(qū)方案很多,很多方案會(huì)推薦/home,/boot,/var,/usr,swap應(yīng)該如何如何,看得初學(xué)者眼花繚亂。簡(jiǎn)而言之:可以,但是沒必要。
    Linux必要的分區(qū)就是根分區(qū)/以及swap。只需要分這兩個(gè)區(qū),都設(shè)置為主分區(qū)。
    swap類似于Windows中的虛擬內(nèi)存,當(dāng)RAM空間耗盡時(shí),可以用一部分硬盤空間來(lái)實(shí)現(xiàn)內(nèi)存功能,防止系統(tǒng)或者軟件崩潰。

問(wèn) 我的電腦是2G內(nèi)存,我是否可以設(shè)置100G的swap,讓我的電腦獲得102G內(nèi)存的愉悅體驗(yàn)?
不可以。swap只是用來(lái)應(yīng)急的,也就是你的系統(tǒng)內(nèi)存耗盡時(shí),才會(huì)用硬盤空間來(lái)保命。硬盤的訪問(wèn)速度非常慢,即便是固態(tài)硬盤,RAM的訪問(wèn)速度也是其1000倍,所以這只能是個(gè)應(yīng)急方案。很多大型圖形處理軟件或者計(jì)算程序是非常吃內(nèi)存的,沒有啟動(dòng)之前,系統(tǒng)使用的內(nèi)存只有3G,8G內(nèi)存非常充裕;但是啟動(dòng)之后,8G內(nèi)存可能瞬間就爆滿,這時(shí)候就需要swap來(lái)做一個(gè)緩沖。

問(wèn) swap分區(qū)該設(shè)置多大?我聽說(shuō)一般設(shè)置成系統(tǒng)內(nèi)存的兩倍。
是的,一般設(shè)置為系統(tǒng)內(nèi)存的兩倍。系統(tǒng)1G內(nèi)存,swap設(shè)置成2G。4G內(nèi)存,swap設(shè)置成8G;但如果你的系統(tǒng)內(nèi)存是32G甚至是128G,你就沒必要把swap設(shè)置成64G,256G,你的系統(tǒng)根本用不完那些RAM,只需要設(shè)置幾G的RAM以備極端情況就可以了。

archiso自帶的分區(qū)工具有很多:fdisk,cfdisk,parted。如果這不是一道面試題或者你必須給出答案的場(chǎng)合,我認(rèn)為這些工具沒什么區(qū)別,它們都可以完成分區(qū)的任務(wù)。如果想用GPT的分區(qū)表,使用parted;如果是MBR分區(qū)表,fdisk是極好的。

問(wèn) 我是BIOS+MBR的啟動(dòng)模式,但是用parted對(duì)硬盤分區(qū)可以嗎?
當(dāng)然可以?,F(xiàn)在fdisk也可以劃分gpt的分區(qū)表,只不過(guò)沒那么方便。

不管用什么工具,操作思路是相同的,手法是類似的。首先查看硬盤情況,確定硬盤的名稱:

fdisk -l 

假設(shè)你在物理機(jī)上安裝,這個(gè)命令執(zhí)行下來(lái)可能會(huì)看到sda,sdb,loop等,注意看每個(gè)存儲(chǔ)設(shè)備的容量。一般sda是主硬盤,sdb是U盤。
假設(shè)你在虛擬機(jī)里安裝,一般只有sda,loop,airoot等分區(qū),sda就是主硬盤,記住這個(gè)名字,其他的可以忽略。
注意上面的命令,選項(xiàng)是字母l,list,不是阿拉伯?dāng)?shù)字1,列出所有的硬盤存儲(chǔ)設(shè)備。Linux命令行工的選項(xiàng)基本都有對(duì)應(yīng)的英文單詞多取首字母,而且很多選項(xiàng)里是相通的。比如l,list,在很多工具里都是用來(lái)列表顯示;v,verbose,用來(lái)顯示詳細(xì)的執(zhí)行信息;
v,version,顯示軟件的版本;h,help,顯示幫助信息。比如:

tar -zxvf example.tar.gz

這是一個(gè)解壓tar.gz文件的命令,我們?cè)贚inux上用源碼安裝軟件的時(shí)候,下載的源代碼常常是tar.gz的格式。z,gzip,通過(guò)gzip解壓gz的壓縮包;x,extract,tar是封包工具,現(xiàn)在提取tar包中內(nèi)容;v,verbose,顯示詳細(xì)信息;f,file,指定文件名,也就是解壓的路徑及解壓后的文件名。大部分選項(xiàng)都是有對(duì)應(yīng)的英文單詞的,這樣記起來(lái)不容易混。

問(wèn) 硬盤是hard drive,hd,為什么這里顯示的是sda,sdb?
以前確實(shí)是hda,hdb劃分的,Windows下有些分區(qū)軟件還是這么稱呼的;現(xiàn)在大部分硬盤用的SATA接口驅(qū)動(dòng),所以Linux稱SATA drive,sd。具體源流等您以后有時(shí)間可以慢慢查。

下面開始正式分區(qū),只需要分/和swap?,F(xiàn)在我們不熟練,只分兩個(gè)區(qū);等您用得熟練了,隨心所欲,還是只分兩個(gè)區(qū)。雞蛋不放在同一個(gè)籃子里,一個(gè)分區(qū)數(shù)據(jù)數(shù)據(jù)損壞而另一個(gè)沒有損壞的可能性不是沒有,但是不高。很多時(shí)候,對(duì)抗風(fēng)險(xiǎn)最好的工具就是運(yùn)氣。

fdisk /dev/sda

Linux系統(tǒng)下萬(wàn)物皆文件,硬盤也被當(dāng)做一個(gè)文件來(lái)管理。不過(guò)它不是txt、mp3這種普通文件,它是設(shè)備文件,都在/dev這個(gè)目錄,device,設(shè)備目錄下面。如果您的主硬盤不是sda,那需要改一下硬盤名。當(dāng)然,如果您在虛擬機(jī)安裝Arch的話,它很難不是sda。
命令執(zhí)行后進(jìn)入一個(gè)純命令行工具,輸入m,manual,查看幫助文檔,會(huì)提示所有的參數(shù),每個(gè)功能都是按一個(gè)字母:
n,new,新建分區(qū);
d,delete,刪除分區(qū);
p,print,打印目前分區(qū)表;
w,write,保存分區(qū)修改;
q,quit,退出。
一般地,n,新建一個(gè)分區(qū)。系統(tǒng)會(huì)要求您選擇primary(p) or extended(e),輸入p,選擇主分區(qū)。后面就是卷標(biāo),分區(qū)大小之類的。再new一個(gè)分區(qū)給swap。
Linux分區(qū)工具都是指定起始位置和結(jié)束位置來(lái)確定容量的。建議先劃分swap分區(qū),然后把剩下的都給/。
/和swap分好后,輸入p,查看分區(qū)是否正確。確認(rèn)后w,保存分區(qū)更改。使用命令查看sda的分區(qū)情況:

fdisk -l /dev/sda

如果分區(qū)正確并且保存了修改,這里應(yīng)該能夠看到sda1,sda2這兩個(gè)分區(qū)了。記住哪個(gè)分區(qū)是swap,假設(shè)sda1是swap分區(qū)。下面開始格式化操作,也就是給這個(gè)分區(qū)里安放不同類型的書架。
swap分區(qū):

mkswap  /dev/sda1 #格式化swap分區(qū)
swapon /dev/sda1 #激活swap分區(qū)

/分區(qū)(也稱根分區(qū)):

mkfs.ext4 /dev/sda2

問(wèn):可不可以使用mkfs.ext3來(lái)格式化 /dev/sda2?
:當(dāng)然可以,你甚至可以mkfs.ext,但是建議您mkfs.ext4。

問(wèn):sda1和sda2的卷標(biāo)搞混了怎么辦?
:那您將擁有50G的虛擬內(nèi)存以及2G的C盤。

格式化后進(jìn)行目錄的掛載mount操作,這是Linux的一大特色操作。Linux下萬(wàn)物皆文件,您可以用fdisk操作/dev/sda這個(gè)設(shè)備文件,但是您無(wú)法直接讀取硬盤里存儲(chǔ)的文件,需要把/dev/sda掛載在/mnt目錄下,掛載之后才能進(jìn)行讀寫操作。

問(wèn):掛載mount聽起來(lái)很抽象,能否打個(gè)比方?
:硬盤的存儲(chǔ)格式和Linux的文件系統(tǒng)是不同的,掛載就是把硬盤里面的文件存儲(chǔ)表讀到Linux文件系統(tǒng)里。比如有的圖書館用很高的書架,需要搬梯子夠最上面的書;有的圖書館用很矮的書架,只有一人高。不同的書架,就是不同的格式化方法,比如NTFS,ext4;圖書館用的圖書管理系統(tǒng)類似Linux文件系統(tǒng),不管你用什么書架,怎么擺,這本書的編號(hào)都是按照中圖法固定的。掛載就是把不同的書架都納入到相同的圖書管理系統(tǒng)下管理。

問(wèn):/dev/sda2一定要掛載到/mnt目錄下嗎?
:不一定,你可以掛載到任何已經(jīng)存在的目錄下面,但掛載/dev/sda后這個(gè)目錄后,目錄下原有的文件就不能訪問(wèn)了。如果掛載到/home,那么對(duì)/home所有的讀寫操作實(shí)際都映射到對(duì)/dev/sda2進(jìn)行,原先/home中存儲(chǔ)的內(nèi)容反而無(wú)法讀寫了。如果想要讀寫,必須unmount。為了管理掛載的文件,Linux專門準(zhǔn)備了/mnt用于掛載各類設(shè)備文件?,F(xiàn)在Ubuntu支持U盤的熱拔插,要是以前得經(jīng)過(guò)如下操作:

mkdir /mnt/usb #在/mnt下建立目錄用于掛載U盤
mount /dev/sdb /mnt/usb #假設(shè)U盤的盤符是sdb
unmount /dev/sdb /mnt/usb #使用完畢后解掛U盤

swap分區(qū)是不需要掛載的,因?yàn)槲覀儾粫?huì)對(duì)swap進(jìn)行讀寫操作。將/dev/sda2掛載到/mnt目錄下,這樣我們往/mnt寫入入數(shù)據(jù)就等于往新系統(tǒng)的/里寫入數(shù)據(jù)。

mount /dev/sda2 /mnt 

記得不要掛載錯(cuò)了盤符。掛載是為了往/dev/sda2里寫入系統(tǒng)文件,后面還要通過(guò)genfstab生成文件表,那時(shí)候會(huì)自動(dòng)識(shí)別哪里是系統(tǒng)盤,哪里是swap。


4. installation 正式安裝

  • select the mirrors配置下載源
    我們?cè)赪indows上如何下載軟件呢?第一種,通過(guò)騰訊軟件管家之類的管家類軟件下載,Ubuntu上也有類似的軟件管家;第二種,在華軍軟件園等軟件下載網(wǎng)站下載,Linux上的軟件下載大部分都是類似這種形式,不過(guò)這樣的軟件下載地址叫軟件源,而且是無(wú)廣告、無(wú)插件、無(wú)盜版的;第三種,在軟件的官網(wǎng)上下載。Linux也會(huì)遇到類似的情況,有些軟件我們想下載源碼進(jìn)行編譯,可以到軟件官網(wǎng)上去找。
    注意 ,相當(dāng)一部分Linux都是沒有圖形界面的,完全工作在命令行下,所以第一種、第三種這種依賴圖形界面的下載方法并不主流,最萬(wàn)能的是通過(guò)包管理工具從軟件源下載。Arch Linux使用的包管理軟件叫pacman,它類似于一個(gè)命令行的軟件管家,可以下載、安裝、升級(jí)、卸載系統(tǒng)中的軟件。pacman會(huì)從鏡像地址列表 /etc/pacman.d/mirrorlist 尋找可用的下載地址。mirrorlist里有上百個(gè)源的地址,pacman會(huì)按照從上到下的順序使用,所以我們應(yīng)該把速度最快的源調(diào)到上面。國(guó)內(nèi)訪問(wèn)速度最快的源當(dāng)然是國(guó)內(nèi)的源,比如清華、科大、阿里云、163等。/etc/pacman.d/mirrorlist里每一個(gè)源的格式是兩行,一行國(guó)家名,一行地址:
## China
Server = http://mirrors.163.com/archlinux/$repo/os/$arch

有的安裝教程說(shuō)找5個(gè)China的源,還有工具可以根據(jù)訪問(wèn)情況自動(dòng)把mirrorlist的源進(jìn)行排序。作為年輕人的第一套Linux,我覺得可以先不折騰,直接把清華源、科大源、阿里源調(diào)到最上面就行了。2個(gè)源就綽綽有余了,互為補(bǔ)充;1個(gè)源肯定是不夠的,難免有些包清華的源沒有及時(shí)更新,如果是訪問(wèn)下面德國(guó)、荷蘭的源就會(huì)很慢;再多也只是獲取心理上的安全感和滿足感。修改mirrorlist需要基本的vim操作。

  • install essential packages 安裝必要的包
    Arch的安裝是高度自定義的。給這個(gè)新系統(tǒng)里安裝軟件的工具是pacstrap,官方文檔推薦安裝的是3個(gè)包:
pacstrap base linux linux-firmware

base是Linux最基本的工具集,里面只有20多個(gè)常用的包;
linux是linux的最新kernel。Arch的kernel更新以激進(jìn)著稱,永遠(yuǎn)跟上最新版本。linux的kernel前腳更新,Arch后腳就給你推送最新的kernel。目前Arch的kernel版本是5.6,要知道,還有相當(dāng)多的Linux發(fā)行版用的是3.x時(shí)代的kernel。
linux-firmware是常用的驅(qū)動(dòng)合集。
如果您在虛擬機(jī)中安裝,這三個(gè)包至少可以讓Arch Linux系統(tǒng)運(yùn)行起來(lái)。base肯定是不夠的,你至少還需要一款文本編輯器、一款網(wǎng)絡(luò)管理軟件、一個(gè)文件管理軟件,才能保證Arch的基本使用,所以順手安裝以下軟件:

pacstrap base linux linux-firmware vim dhcpcd netctl networkmanager

這個(gè)過(guò)程需要從軟件源下載大量數(shù)據(jù),對(duì)網(wǎng)絡(luò)要求較高。如果你甚至要安裝一個(gè)圖形界面,那么下載的數(shù)據(jù)可能要在1G往上了。即便如此,這樣的安裝包也比Windows要小很多。

問(wèn):可不可以不裝linux這個(gè)包?
答:可以,linux這個(gè)包用的是kernel.org的kernel。由于Linux是開源的,這個(gè)世界上有不同的kernel。當(dāng)然了,由于kernel維護(hù)的工作量很大(基本上=windows操作系統(tǒng)的開發(fā)和維護(hù)量),所以kernel并不是很多,但是你仍然可以選擇非kernel.org的kernel。

問(wèn):可不可以不裝linux-firmware這個(gè)包?
答:可以,linux-firmware相當(dāng)于一個(gè)萬(wàn)能驅(qū)動(dòng)的包。如果你知道哪幾樣驅(qū)動(dòng)可以保證你的電腦基本運(yùn)行,您可以手動(dòng)安裝幾個(gè)驅(qū)動(dòng)而未必要安裝這個(gè)包。前提是您知道需要安裝哪些驅(qū)動(dòng)。

問(wèn) base這個(gè)包里到底都有哪些軟件?
arch所有包的內(nèi)容都可以在archlinux.org里查到,直接看包里的源碼

pkgname=base
pkgver=2
pkgrel=2
pkgdesc='Minimal package set to define a basic Arch Linux installation'
url='https://www.archlinux.org'
arch=('any')
license=('GPL')
depends=(
  # very very base
  'filesystem' 'gcc-libs' 'glibc' 'bash'

  # POSIX tools
  'coreutils' 'file' 'findutils' 'gawk' 'grep' 'procps-ng' 'sed' 'tar'

  # standard linux toolset
  'gettext' 'pciutils' 'psmisc' 'shadow' 'util-linux' 'bzip2' 'gzip' 'xz'

  # distro defined requirements
  'licenses' 'pacman' 'systemd' 'systemd-sysvcompat'

  # networking, ping, etc
  'iputils' 'iproute2'
)
optdepends=('linux: bare metal support')

可以看到幾個(gè)很熟悉的名字,bash,grep,gawk,sed,tar,pacman,gzip等等。

問(wèn):有沒有比最小安裝方案還小的安裝方案?
答:有,那就是不安裝。


5. configure system配置系統(tǒng)
經(jīng)過(guò)或許不漫長(zhǎng)的下載和安裝后,Linux系統(tǒng)文件已經(jīng)安裝在/mnt也就是/dev/sda2也就是硬盤的系統(tǒng)分區(qū)里了。

  • 生成fstab。file system table,類似于Windows上的分區(qū)表,在操作系統(tǒng)啟動(dòng)的時(shí)候,告訴引導(dǎo)程序swap在哪個(gè)分區(qū),/在哪個(gè)分區(qū)等等。
genfstab -U /mnt >> /mnt/etc/fstab

gen,generate,生成。U這個(gè)參數(shù)是指用uuid來(lái)標(biāo)記分區(qū),也可以換成L,label,用sda1,sda2這樣的標(biāo)簽來(lái)標(biāo)記分區(qū)。生成成功后檢查/mnt/etc/fstab是否成功生成,如果生成失敗需要重新生成一下。

cat /mnt/etc/fstab #生成成功的話會(huì)顯示文件內(nèi)容
  • arch-chroot 以root的身份進(jìn)入新系統(tǒng)。
    最重要的兩件事:
    1 設(shè)置root的密碼,同時(shí)設(shè)置普通賬戶;
    2 安裝引導(dǎo)程序,比如grub。現(xiàn)在我們是通過(guò)archiso的chroot進(jìn)入新系統(tǒng)的,如果沒有安裝引導(dǎo),我們是無(wú)法開機(jī)時(shí)進(jìn)入系統(tǒng)的;
    3 其他可以但沒必要的配置,比如配置時(shí)區(qū),配置地區(qū),配置鍵盤方案。這些都可以進(jìn)入系統(tǒng)后再配置。
arch-chroot /mnt

使用這個(gè)命令后,便以root用戶身份進(jìn)入了安裝在/mnt的新系統(tǒng)中。

passwd root #給root用戶設(shè)置密碼
useradd -m newman #創(chuàng)建newman新用戶
passwd newman #為新用戶設(shè)置密碼

以后重啟就可以用newman這個(gè)用戶名來(lái)登錄。為了方便安裝軟件,我們需要給newman設(shè)置sudo權(quán)限,但是Arch此時(shí)是沒有安裝sudo的。
安裝sudo

pacman -S sudo

sudo的配置文件在/etc/sudoers中。在配置文件中添加一行:

newman ALL=(ALL) ALL

問(wèn) 你說(shuō)配置文件在/etc/sudoers中,要是你打錯(cuò)了字母,或者我看錯(cuò)了字母怎么辦?是不是就找不到這個(gè)配置文件了?
的確如此,在互聯(lián)網(wǎng)上找資料,很難保證作者不會(huì)打錯(cuò)字,尤其是一串很長(zhǎng)的命令,所以最靠譜的方法就是自己學(xué)會(huì)找配置文件。/etc下面是Linux的各種配置文件,假設(shè)我們不知道sudo的配置文件到底是哪個(gè),但是我們相信sudo的配置文件應(yīng)該是和sudo有關(guān)的,比如sudoer,sudoers,sudo.conf等等。這時(shí)候通過(guò)ls /etc | grep "sudo"去篩選出所有和sudo有關(guān)的文件,再根據(jù)文件的命名去找準(zhǔn)確的配置文件名。

問(wèn) 配置文件里修改的內(nèi)容如果你寫錯(cuò)了怎么辦?比如多寫了一個(gè)空格,或者大小寫寫錯(cuò)了,這是一個(gè)很容易犯的錯(cuò)誤。
這樣的筆誤的確很常見。修改配置文件最好的辦法就是按照配置文件里原有的格式修改。您用vim打開配置文件后,就會(huì)看到原來(lái)的配置文件里面已經(jīng)有了一行root ALL=(ALL) ALL,參照著root用戶的方案在下面追加一行就可以了。

安裝引導(dǎo)程序grub,同時(shí)配置grub。grub是Linux里最常用的引導(dǎo)程序。

pacman -S grub
grub-install -o /boot/grub/grub.cfg

這個(gè)時(shí)候,您將擁有一個(gè)只有命令行的archlinux系統(tǒng),并且可以newman這個(gè)用戶名登錄。您可以重啟了,但是在重啟之前需要再檢查兩件事:

  • grub,grub-mkconfig執(zhí)行了嗎?
  • vim,dhcpcd,netctl安裝了嗎?

問(wèn) 哎呀,我忘記安裝grub了,怎么辦?
現(xiàn)在發(fā)現(xiàn)還來(lái)得及,請(qǐng)安裝grub。沒有安裝grub或其他引導(dǎo)程序,重啟還是進(jìn)入安裝光盤里的root@archiso。

問(wèn) 不用grub來(lái)引導(dǎo)可以嗎?
當(dāng)然可以,可以用其他引導(dǎo)程序。引導(dǎo)管理程序就是在操作系統(tǒng)沒有接管硬件之前,告訴主板去哪里找到操作系統(tǒng),并請(qǐng)操作系統(tǒng)出面接手硬件管理工作。您可以安裝其他引導(dǎo)程序,比如更加古老原始的LILO以及syslinux,或者在Mac上為雙系統(tǒng)準(zhǔn)備的Clover,但是用grub肯定不會(huì)錯(cuò)。全球30億人在用的產(chǎn)品未必是最好的,但是絕對(duì)不差。

問(wèn) 我安裝了grub,但是忘記了grub-mkconfig,怎么辦?
在這種情況下重啟,您會(huì)進(jìn)入一個(gè)空的grub引導(dǎo)程序,但是這個(gè)grub并不知道該到哪里引導(dǎo)操作系統(tǒng)。grub是一個(gè)命令行工具,輸入exit退出grub,這時(shí)候系統(tǒng)會(huì)返回安裝光盤的引導(dǎo)畫面。重新進(jìn)入root@archiso,完成配置操作。

mount /dev/sda2 /mnt
arch-root /mnt
grub-mkconfig -o /boot/grub/grub.cfg

以后想通過(guò)安裝光盤修復(fù)原有的操作系統(tǒng),只需要mount掛載和arch-root這兩步,就可以修復(fù)操作系統(tǒng)里的文件了。在root@archiso里通過(guò)arch-chroot /mnt進(jìn)入系統(tǒng),使用體驗(yàn)和你待會(huì)重啟以后的體驗(yàn)是差不多的。您可以測(cè)試前面安裝的vim,sudo,dhcpcd等工具是否成功安裝了。如果待會(huì)重啟發(fā)現(xiàn)Arch無(wú)法聯(lián)網(wǎng),又沒有任何網(wǎng)絡(luò)配置工具,那會(huì)是一件非常尷尬的事情。您還得通過(guò)啟動(dòng)光盤進(jìn)入root@archiso。
簡(jiǎn)單總結(jié)一下全新硬盤中BIOS+MBR安裝最新Arch的過(guò)程:

  1. 硬盤分區(qū)(fdisk),分出/和swap
  2. 分區(qū)格式化(mkfs.ext4,mkswap,swapon)
  3. 掛載分區(qū)(mount)
  4. 修改Pacman為國(guó)內(nèi)源(選3個(gè)China的源放在最上面)
  5. 下載最新的系統(tǒng)安裝包及工具軟件(pacstrap)
  6. arch-root /mnt進(jìn)入系統(tǒng)
  7. passwd root并配置其他用戶
  8. 安裝grub,配置grub
  9. 生成文件分區(qū)表(genfstab)
  10. reboot

周末不上班,很多人有比較大塊的時(shí)間去完成一個(gè)項(xiàng)目,比如重新收拾布置房間,做一個(gè)手工,再比如安裝體驗(yàn)一次Arch Linux,這樣的文化稱之為weekend project。對(duì)于學(xué)習(xí)Linux,Arch Linux是一次很棒的體驗(yàn)。您可以在虛擬機(jī)里反復(fù)重新安裝配置Arch Linux,每次回答一些以前提出的疑問(wèn)。年輕人第一套Linux發(fā)行版,祝您旅途愉快。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容