聲明:下面的內(nèi)容只是為了給幾個(gè)為數(shù)不多的同學(xué)補(bǔ)充知識(shí)所寫趁尼,限于本人當(dāng)前知識(shí)水平,一定會(huì)有很多謬誤,不與專業(yè)教材比質(zhì)量茵瘾,被半路出家自學(xué)成才的大神嘲笑也是很正常,7吧的小明還是我的人生偶像
其實(shí)我一直覺得Win這個(gè)系統(tǒng)誤人子弟——
- 有多少人認(rèn)為非exe文件就不是可執(zhí)行文件咐鹤?
- 再退一步拗秘,多少人認(rèn)為
D盤
、E盤
真的是個(gè)盤祈惶? - 有多少人把
SSD只需要一個(gè)分區(qū)
這句話說成SSD不用分區(qū)
雕旨?
小明當(dāng)時(shí)天天噴一群傻逼把nt6hddinstaller
簡(jiǎn)稱成nt6
,雖然強(qiáng)迫癥重了點(diǎn)捧请,但是完全可以理解凡涩,把一個(gè)小腳本叫成操作系統(tǒng)內(nèi)核的名字,能合適嗎疹蛉?
今天這篇文章拋開win活箕,我們從安裝一個(gè)Archlinux
說起,需要注意的是本文甚至不會(huì)采用已經(jīng)普及的炫酷技術(shù)可款,比如UEFI
育韩,甚至?xí)室夂?jiǎn)化一些復(fù)雜概念,比如文件系統(tǒng)
闺鲸,只保證我認(rèn)為這些內(nèi)容不會(huì)對(duì)將來的學(xué)習(xí)產(chǎn)生消極影響筋讨。
進(jìn)入正題,
假設(shè)你什么都不會(huì)翠拣,你想要安裝一個(gè)Archlinux
,你需要做什么游盲?
——你需要查資料误墓,不是找人問,找人問是下策益缎,查資料是上策谜慌。
這里采用Archlinux
的一個(gè)原因就是這姑且算是資料比較齊全的發(fā)行版:這里是Arch的官方wiki (但是下文安裝系統(tǒng)我不會(huì)按照wiki的來,你可以試著按照wiki走一遍莺奔,我裝系統(tǒng)是為了說明問題)
我不知道Archwiki是不是介紹了如何制作啟動(dòng)介質(zhì)欣范,這里就按照我一貫喜歡的方式來做,其實(shí)做法有兩種令哟,一種是針對(duì)Legacy BIOS
和UEFI
系統(tǒng)恼琼,另一種僅針對(duì)UEFI
系統(tǒng),這里采用通用的辦法屏富,至于UEFI有什么優(yōu)勢(shì)晴竞,為什么會(huì)產(chǎn)生這種區(qū)別,需要你自己去調(diào)查狠半。
國(guó)內(nèi)的Archlinux
鏡像站還是比較多噩死,這里我用一下清華源颤难,下載一個(gè)安裝鏡像
下載完了這個(gè)安裝鏡像,就是制作啟動(dòng)介質(zhì)的時(shí)候了已维,首先我們需要明確:?jiǎn)?dòng)介質(zhì)是干什么的行嗤。
操作系統(tǒng)本身是安裝在硬盤內(nèi)的,系統(tǒng)上電時(shí)還完全沒有操作系統(tǒng)什么事垛耳,系統(tǒng)上電后由主板內(nèi)的固件完成自檢和初始化等操作栅屏,操作系統(tǒng)是被主板固件主動(dòng)讀入到內(nèi)存并執(zhí)行的,執(zhí)行后操作系統(tǒng)從主板固件接手系統(tǒng)控制權(quán)艾扮。
那么既琴,為什么我們不能控制主板固件讀入誰、執(zhí)行誰呢泡嘴?
——當(dāng)然可以甫恩,我們的啟動(dòng)介質(zhì)就是借此發(fā)揮作用,我們把一個(gè)操作系統(tǒng)寫入一個(gè)存儲(chǔ)介質(zhì)中(如:U盤酌予、光盤等)磺箕,然后控制主板固件從這個(gè)介質(zhì)讀入并執(zhí)行操作系統(tǒng),在啟動(dòng)了這個(gè)操作系統(tǒng)之后抛虫,再進(jìn)行把操作系統(tǒng)安裝到硬盤的操作松靡,也就是安裝操作系統(tǒng)的過程。
明確了啟動(dòng)介質(zhì)的作用就來制作吧建椰,把下載好的鏡像用Win32diskimager
寫入到U盤中雕欺,待寫入完成后從等待安裝操作系統(tǒng)的機(jī)器上啟動(dòng)這個(gè)U盤內(nèi)的操作系統(tǒng)即可。
那么棉姐,Win32diskimager
到底是什么呢屠列?
這個(gè)說來話長(zhǎng),請(qǐng)先做個(gè)實(shí)驗(yàn):當(dāng)你用Win32diskimager
把下載好的iso鏡像寫入到U盤中后伞矩,你會(huì)發(fā)現(xiàn)Windows說你的U盤容量變小了笛洛,只有700MB了。
——你的U盤當(dāng)然是不可能變小的乃坤,這都是Windows的鍋苛让。
Win32diskimager
做的工作極其簡(jiǎn)單,只是把鏡像文件直接寫入到你的U盤中去湿诊,可是這樣一來狱杰,你的U盤就失去了原有的數(shù)據(jù),眾所周知厅须,文件系統(tǒng)是文件的組織形式浦旱,你的U盤原本有一個(gè)文件系統(tǒng),這個(gè)文件系統(tǒng)是經(jīng)過格式化
操作產(chǎn)生的九杂,在格式化
時(shí)颁湖,格式化程序會(huì)檢查你的U盤容量宣蠕,并且把一個(gè)只屬于這個(gè)U盤的文件系統(tǒng)寫入到U盤上,這個(gè)文件系統(tǒng)記錄著格式化程序檢測(cè)到的U盤各種信息甥捺,包括容量等等∏朗矗現(xiàn)在,你的U盤文件系統(tǒng)不見了镰禾,取而代之的是一個(gè)光盤的文件系統(tǒng)皿曲,系統(tǒng)自然也就無法精準(zhǔn)地讀出你的U盤有多大。
可是不用擔(dān)心吴侦,當(dāng)你像你的U盤中寫入一些無效數(shù)據(jù)屋休,系統(tǒng)會(huì)因?yàn)閁盤包含的文件系統(tǒng)不可識(shí)別而重新從硬件層面上識(shí)別U盤,并會(huì)提醒你對(duì)U盤進(jìn)行重新格式化(即寫入新的文件系統(tǒng))备韧。
現(xiàn)在要做的事情就很簡(jiǎn)單了劫樟,我們只需要從U盤啟動(dòng)新系統(tǒng)就可以
進(jìn)入系統(tǒng)之后,我們首先輸入 dhcpcd
织堂,這個(gè)命令是一個(gè)dhcp客戶端叠艳,dhcp協(xié)議可以幫助連接到局域網(wǎng)的主機(jī)自動(dòng)配置ip。DHCP的服務(wù)器易阳,通常是我們的路由器或電信家庭網(wǎng)管等設(shè)備附较。
至此,我們已經(jīng)連接上了網(wǎng)絡(luò)潦俺,接下來我們?cè)O(shè)置pacman的鏡像服務(wù)器地址拒课,依然是設(shè)置成清華源,這些設(shè)置是為了讓之后安裝系統(tǒng)的過程更順利事示,與我試圖通過這篇文章說明的問題無關(guān)早像,故在此不做說明。
在小設(shè)置完成之后很魂,我們需要做的首先是給即將安裝系統(tǒng)的硬盤分區(qū)扎酷,需要注意的是檐涝,Linux把所有的設(shè)備都當(dāng)作文件來對(duì)待遏匆,不如說,文件就是二進(jìn)制塊組成的谁榜,對(duì)于我們的主硬盤(位于/dev/sda
)幅聘,Linux認(rèn)為它是一個(gè)塊設(shè)備
。如果我們向/dev/sda
寫入了一個(gè)0
窃植,就是向我們硬盤最開始的為止寫了一個(gè)0帝蒿。
我們通過linux下的工具dd
(全稱為disk dump
)來對(duì)我們的硬盤首先進(jìn)行清空操作,即向其寫入一定數(shù)量的0
以保證清除現(xiàn)有的分區(qū)表
和文件系統(tǒng)
:(關(guān)于這些的解釋巷怜,請(qǐng)看上文)
dd if=/dev/zero of=/dev/sda bs=1M count=50 conv=fsync
dd if=/dev/zero of=/dev/sdb bs=1M count=50 conv=fsync
由于我有兩塊硬盤葛超,就需要分別執(zhí)行兩次操作暴氏,最后的conv=fsync
不屬于本文應(yīng)當(dāng)涉及的內(nèi)容,不予解釋绣张。
當(dāng)清除工作完成后答渔,我們就開始分區(qū)。
輸入cfdisk /dev/sda
對(duì)于硬盤侥涵,我們需要首先建立分區(qū)表沼撕,分區(qū)表是記錄硬盤內(nèi)各個(gè)分區(qū)起始和結(jié)束為止的數(shù)據(jù)表,分區(qū)表讓一個(gè)硬盤擁有多個(gè)分區(qū)成為可能芜飘,這里可以選擇dos
分區(qū)表务豺,具體的區(qū)別不予展開。
之后我們只需要對(duì)硬盤分區(qū)即可嗦明,記得給主硬盤的系統(tǒng)分區(qū)加上bootable
的flag
笼沥,這個(gè)bootable
flag曾經(jīng)是(但本文不作展開)主板固件識(shí)別操作系統(tǒng)的唯一依據(jù)。沒有它招狸,主板固件就不知道該去哪里引導(dǎo)操作系統(tǒng)敬拓,進(jìn)而導(dǎo)致系統(tǒng)無法啟動(dòng)。
在分區(qū)工作完成之后裙戏,我們需要給各個(gè)分區(qū)進(jìn)行格式化操作乘凸,以此創(chuàng)建文件系統(tǒng),以便進(jìn)行之后的文件管理等等操作累榜。(請(qǐng)記得营勤,文件的組織形式是文件系統(tǒng),關(guān)于文件系統(tǒng)的解釋請(qǐng)看上文)
我們用mkfs.ext4 /dev/sda1
命令把sda
(主硬盤)的1
分區(qū)格式化成ext4文件系統(tǒng)
之后壹罚,我們把格式化好的分區(qū)掛載(mount)
到系統(tǒng)安裝點(diǎn)上葛作。
這里需要重點(diǎn)解釋,首先猖凛,先說一下掛載的概念:
掛載是指先對(duì)分區(qū)或硬盤等存儲(chǔ)設(shè)備的文件系統(tǒng)進(jìn)行識(shí)別(在此例中為ext4
)赂蠢,之后加載文件系統(tǒng)的驅(qū)動(dòng)
,使得操作系統(tǒng)具備對(duì)目標(biāo)分區(qū)的文件系統(tǒng)具有讀寫能力(即使操作系統(tǒng)能夠找到分區(qū)內(nèi)的文件辨泳,如果沒有這個(gè)驅(qū)動(dòng)虱岂,操作系統(tǒng)不識(shí)別文件系統(tǒng),是不可能發(fā)現(xiàn)其中的文件的)菠红,最后再由操作系統(tǒng)把文件系統(tǒng)驅(qū)動(dòng)讀取的結(jié)果反饋給用戶的過程第岖。
在Windows中,就是把硬盤上的一個(gè)分區(qū)變成D盤的過程试溯,在Linux上蔑滓,我們使用mount
命令:
mount /dev/sda1 /mnt
來把我們想要的分區(qū)掛載到/mnt目錄下,使得它對(duì)我們可讀、可寫键袱。
安裝系統(tǒng)需要很多步驟燎窘,但不是本文的寫作目的,在此不予介紹蹄咖。
最后荠耽,在系統(tǒng)安裝完畢后,我們還需要一個(gè)bootloader
比藻,從名字就可以看出铝量,它的作用是幫助引導(dǎo)操作系統(tǒng)的,實(shí)際上银亲,由于操作系統(tǒng)的內(nèi)核過大等等問題慢叨,通常(現(xiàn)在已經(jīng)有主板固件直接執(zhí)行內(nèi)核的技術(shù)),主板固件直接讀取并執(zhí)行的是bootloader
务蝠,bootloader
具備識(shí)別操作系統(tǒng)內(nèi)核的能力拍谐,并且執(zhí)行操作系統(tǒng)內(nèi)核,最終啟動(dòng)操作系統(tǒng)馏段。
關(guān)于具體的技術(shù)細(xì)節(jié)在此不做討論轩拨。
按理說這里就已經(jīng)寫完了,但是如果你真的有看懂上面這些文章的話院喜,請(qǐng)?jiān)囍鴣砘卮疬@個(gè)問題:
在安裝Archlinux
的過程中亡蓉,需要執(zhí)行一條genfstab -U -p /mnt >> /mnt/etc/fstab
命令。
這條命令會(huì)生成一個(gè)叫fstab
的文件喷舀,已知:
- 執(zhí)行這條命令的時(shí)候要求掛載好所有新系統(tǒng)要用的分區(qū)砍濒。
- 生成的fstab文件包括的內(nèi)容形如:
/dev/sda1 / ext4 0 0 ...
請(qǐng)問:你認(rèn)為fstab
的作用是什么