主頁(yè) > 知識(shí)庫(kù) > 把Arch Linux安裝到U盤上的具體教程

把Arch Linux安裝到U盤上的具體教程

熱門標(biāo)簽:電話機(jī)器人搭建 服務(wù)器配置 硅谷的囚徒呼叫中心 解決方案 外呼系統(tǒng) 家政服務(wù)網(wǎng)絡(luò) 美團(tuán) 百度競(jìng)價(jià)點(diǎn)擊價(jià)格的計(jì)算公式

Arch Linux簡(jiǎn)介
Arch Linux(或稱Arch)是一種以輕量簡(jiǎn)潔為設(shè)計(jì)理念的Linux發(fā)行版。其開(kāi)發(fā)團(tuán)隊(duì)秉承簡(jiǎn)潔、優(yōu)雅、正確和代碼最小化的設(shè)計(jì)宗旨。Arch Linux 項(xiàng)目受 CRUX 啟發(fā),由 Judd Vinet 于2002年啟動(dòng)。
Arch Linux是起源于加拿大的一份致力于使用簡(jiǎn)單、系統(tǒng)輕量、軟件更新速度快的GNU/Linux發(fā)行版。創(chuàng)始人Judd Vinet出于對(duì)Debian以及Red Hat的包管理器不滿,以及受CRUX影響而創(chuàng)立。最初針對(duì)i686,但是如今對(duì)x86_64也支持良好,而且還派生出了針對(duì)ARM平臺(tái)的Arch Linux ARM以及針對(duì)HURD內(nèi)核的Arch Hurd(發(fā)展緩慢)。
Arch Linux 將簡(jiǎn)潔定義為:避免任何不必要的添加、修改和復(fù)雜增加。它提供的軟件都來(lái)自原始開(kāi)發(fā)者((上游),僅進(jìn)行和發(fā)行版(下游)相關(guān)的最小修改。
不包含上游不愿意接受的補(bǔ)丁。絕大部分 Arch 下游補(bǔ)丁都已經(jīng)被上游接受,下一個(gè)正式版本里會(huì)包含。
配置文件也是來(lái)自上游,僅包含發(fā)行版必須的調(diào)整,比如特殊的文件系統(tǒng)路徑變動(dòng)。Arch 不會(huì)在安裝一個(gè)軟件包后就自動(dòng)啟動(dòng)服務(wù)。
軟件包通常都和一個(gè)上游項(xiàng)目直接對(duì)應(yīng)。僅在極少數(shù)情況下才會(huì)拆分軟件包。
Arch盡全力保持軟件處于最新的穩(wěn)定版本,只要不出現(xiàn)系統(tǒng)軟件包破損,都盡量用最新版本。Arch采用滾動(dòng)升級(jí)策略,安裝之后可以持續(xù)升級(jí),無(wú)需重裝。只敲一個(gè)命令,Arch就可以保持最新。
Arch向GNU/Linux用戶提供了許多新特性,包括systemd初始化系統(tǒng)、現(xiàn)代的文件系統(tǒng)(Ext2/3/4、Reiser、XFS、JFS、BTRFS)、LVM2/EVMS、軟件磁盤陣列(軟RAID)、udev支持、initcpio(附帶mkinitcpio)以及最新的內(nèi)核。

基本系統(tǒng)安裝
本想使用 GPT 分區(qū)表,查了一些資料, 為了使這個(gè)U盤在 BIOS 和 UEFI 電腦上都能用, 需要?jiǎng)?chuàng)建一個(gè) BIOS boot 分區(qū),2M 大小足夠,位置盡量靠前。 多系統(tǒng)的話還要?jiǎng)?chuàng)建一個(gè) 200M 的 EFI System Partition(ESP) 分區(qū)。 這些都不是問(wèn)題,但實(shí)際做下來(lái), GPT 中的 NTFS 分區(qū)在 Win7 下死活不認(rèn), 想用這個(gè)分區(qū)作為常規(guī)U盤使用就不行了, 只好再回到 MBR 分區(qū)表。 如果是移動(dòng)硬盤用 GPT 應(yīng)該沒(méi)有問(wèn)題。

所以仍然使用 MBR 分區(qū),所以就要用 fdisk 或者 cfdisk 了, 不能使用支持 GPT 的 gdisk 和 cgdisk, 4k 對(duì)齊也是自動(dòng)完成。 有趣的是,如果想把 GPT 分區(qū)表轉(zhuǎn)換成 MBR 分區(qū)表, 還得借助 gdisk:r 進(jìn)入 Recovery 模式, g 進(jìn)入 MBR 模式,w 進(jìn)行轉(zhuǎn)換。 根據(jù)實(shí)際情況, 有些分區(qū)轉(zhuǎn)換未必能夠成功, 不過(guò)變回 MBR 分區(qū)表是沒(méi)有問(wèn)題的。

NTFS 分區(qū)得在第一個(gè)分區(qū),不然 Windows 不認(rèn)。

啟動(dòng)U盤是 /dev/sdb,目標(biāo)U盤就成了 /dev/sdc。

復(fù)制代碼
代碼如下:

# fdisk /dev/sdb

Disk /dev/sdc: 8022 MB, 8022982656 bytes, 15669888 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sdb1 2048 1804287 901120 7 HPFS/NTFS/exFAT
/dev/sdb2 * 1804288 2009087 102400 83 Linux
/dev/sdb3 2009088 10405887 4198400 83 Linux
/dev/sdb4 10405888 15669887 2632000 83 Linux

第一個(gè)分區(qū)先用 ntfs,當(dāng)正常U盤使用, 如果以后需要用到 ESP 分區(qū),直接用這個(gè)分區(qū)轉(zhuǎn),或者切一部分空間過(guò)去。 第二個(gè)分區(qū) 100M,掛 /boot; 第三個(gè)分區(qū) 4G,作為 ArchLinux 根分區(qū); 第四個(gè)分區(qū) 2.5G,作為 $HOME ;

格式化分區(qū):

如果使用 xfs 分區(qū)格式:

復(fù)制代碼
代碼如下:

# mkfs.ntfs -f /dev/sdc1 -L f004-c
# mkfs.xfs -n size=64k -l lazy-count=1 /dev/sdc2 -L f004-boot
# mkfs.xfs -n size=64k -l size=128m,lazy-count=1 /dev/sdc3 -L f004-a
# mkfs.xfs -n size=64k -l size=128m,lazy-count=1 /dev/sdc4 -L f004-b

-n size=64k 參數(shù)增加了文件名(目錄)區(qū)域大?。J(rèn) 4k), 這樣可以減少 IO 消耗,代價(jià)是 CPU 消耗多一些, 這對(duì)現(xiàn)代計(jì)算機(jī)顯然不是問(wèn)題。 -l size=128m 參數(shù)擴(kuò)大日志的容量(默認(rèn) 10m),更安全, 代價(jià)是掛載時(shí)間會(huì)長(zhǎng)一些。 -l lazy-count=1 參數(shù)減少 superblock 讀寫次數(shù),提高性能。

如果使用 ext4 分區(qū)格式:

復(fù)制代碼
代碼如下:

# mkfs.ntfs -f /dev/sdc1 -L f004-c
# mkfs.ext4 -b 4096 -m 0 -i 16384 -O '^has_journal' /dev/sdc2 -L f004-boot
# mkfs.ext4 -b 4096 -m 1 -i 16384 -O '^has_journal' /dev/sdc3 -L f004-a
# mkfs.ext4 -b 4096 -m 0 -i 16384 -O '^has_journal' /dev/sdc4 -L f004-b

-b 4096 是每個(gè)存儲(chǔ)塊的大小。 -m 1 是指定 root 保留空間為 1%,home 區(qū)就不留了。 -i 16384 是指定多少字節(jié)的數(shù)據(jù)設(shè)置一個(gè) inode 節(jié)點(diǎn), 增加它的值會(huì)減少 inode 的總數(shù),占用的空間會(huì)少一些, 相應(yīng)的能夠存儲(chǔ)的文件數(shù)量也減少了,這個(gè)稍微注意一下就好,一般都?jí)蛴谩?-O '^has_journal' 是關(guān)掉文件系統(tǒng)日志,有點(diǎn)小危險(xiǎn)。

經(jīng)過(guò)兩天的折騰,個(gè)人感覺(jué) ext4 在U盤上讀寫速度快一些。

掛載分區(qū):

復(fù)制代碼
代碼如下:

# mount /dev/sdc3 /mnt
# mkdir /mnt/boot
# mount /dev/sdc2 /mnt/boot
# mkdir /mnt/home
# mount /dev/sdc4 /mnt/home

df -h 檢查一下:

復(fù)制代碼
代碼如下:

# xfs
Filesystem Size Used Avail Use% Mounted on
/dev/sdc3 3.9G 33M 3.9G 1% /mnt
/dev/sdc2 82M 5.2M 77M 7% /mnt
/dev/sdc4 2.4G 33M 2.4G 2% /mnt/home

# ext4
Filesystem Size Used Avail Use% Mounted on
/dev/sdc3 3.9G 8.1M 3.8G 1% /mnt
/dev/sdc2 96M 48K 96M 1% /mnt
/dev/sdc4 2.5G 3.8M 2.4G 1% /mnt/home

ext4 改變 bytes-per-inode 確實(shí)對(duì)分區(qū)所占空間影響很大。

安裝基本系統(tǒng)

家里有無(wú)線路由,網(wǎng)絡(luò)不用配置,已經(jīng)自動(dòng)連上了。

編輯 /etc/pacman.d/mirrorlist ,把最快的源挪到最上面。 一般來(lái)說(shuō) 163 和臺(tái)灣的源比較快,163 似乎有時(shí)候不穩(wěn)定, 幾個(gè)中國(guó)大學(xué)的源有些是 ipv6 的,用不了。 安裝完成后,這個(gè)配置文件也會(huì)自動(dòng)拷貝到新系統(tǒng)中。 自帶的 vi 真的是比 vim 難用多了,一會(huì)兒第一時(shí)間換掉。

按照官網(wǎng)說(shuō)明,用 # pacstrap /mnt base base-devel 安裝基本系統(tǒng), base-devel 也一并裝上,遲早會(huì)用到 AUR 或 ABS。 提示共 128 個(gè)軟件包,需要下載 158.37M 內(nèi)容,安裝完成后是 507.09M。

安裝

復(fù)制代碼
代碼如下:
grub: # arch-chroot /mnt pacman -S grub
。

生成

復(fù)制代碼
代碼如下:
fstab: # genfstab -p -U /mnt >> /mnt/etc/fstab
, 然后更改 fstab (系統(tǒng)默認(rèn)一般就比較好了,不優(yōu)化也行):

使用 relatime 掛載參數(shù)。

以前是推薦增加 noatime 掛載參數(shù),不記錄文件讀取時(shí)間, 但這會(huì)導(dǎo)致 Mutt 等需要文件讀取時(shí)間的軟件出錯(cuò)。 現(xiàn)在改為使用 relatime 參數(shù)了 (已經(jīng)默認(rèn)加上了,Linux 2.6.30 起此參數(shù)成為默認(rèn)值), 只有在文件讀取時(shí)間早于文件更新時(shí)間時(shí),才更新讀取時(shí)間數(shù)據(jù)。

使用 nodiratime 掛載參數(shù),不記錄目錄讀取訪問(wèn)時(shí)間。

把 /tmp 放到 tmpfs 上去。(沒(méi)單獨(dú)分區(qū),免了)

不再使用 discard 掛載參數(shù)。

這個(gè)參數(shù)主要是針對(duì) SSD 硬盤的,對(duì)不支持 TRIM 的機(jī)械硬盤無(wú)效, 對(duì)U盤貌似作用不明顯。

不再使用 async 掛載參數(shù),開(kāi)啟異步讀寫模式。 由于只是“看起來(lái)”快了,實(shí)際數(shù)據(jù)寫入速度并沒(méi)有改善, 考慮到穩(wěn)定性,是否應(yīng)使用此參數(shù)?

不要使用 barrier=0 掛載參數(shù),這個(gè)選項(xiàng)似乎在突然斷電、 拔U盤時(shí),有幾率丟失文件或損壞分區(qū)。 (基于我的經(jīng)歷 + 參考 )

由于不會(huì)跑什么大應(yīng)用,為了降低 swap 的使用頻率, 修改 /mnt/etc/sysctl.conf :

復(fù)制代碼
代碼如下:

vm.swappiness = 1
vm.vfs_cache_pressure = 50

前一句是盡量不使用 swap,后一句是緩存文件系統(tǒng)信息。

下面的操作可以在 chroot 環(huán)境下運(yùn)行:

復(fù)制代碼
代碼如下:

# arch-chroot /mnt

設(shè)置 hostname: echo 'f004' > /etc/hostname 。

設(shè)置時(shí)區(qū):

復(fù)制代碼
代碼如下:

# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

新建 /etc/locale.conf 內(nèi)容為:

復(fù)制代碼
代碼如下:

LANG='en_US.UTF-8'
LC_COLLATE='C'

LC_MESSAGES='C'
編輯 /etc/locale.gen ,取消 en_US.UTF-8, zh_CN.UTF-8, zh_TW.UTF-8 前面的注釋,然后執(zhí)行 locale-gen 命令。

更改 root 密碼: passwd root 。

安裝 Grub 引導(dǎo)系統(tǒng)。

仍然在 chroot 環(huán)境中操作。 編輯 /etc/mkinitcpio.conf ,檢查 HOOKS 段, 讓 block 參數(shù)緊挨著 udev 參數(shù)之后(早一點(diǎn)加載), 然后 # mkinitcpio -p linux 生成 img 文件。 同時(shí)加上了 shutdown 參數(shù),作用以后再試。 resume 參數(shù)就算了,U盤本來(lái)就小、慢,支持休眠更痛苦。 (注:新版本中 block 參數(shù)替代了 usb pata sata scsi 等一眾參數(shù))

安裝 grub:

復(fù)制代碼
代碼如下:

# grub-install --target=i386-pc --recheck --boot-directory=/boot --no-floppy /dev/sdc
# cp -v /usr/share/grub/{unicode.pf2,ascii.pf2} /boot/grub/
# cp -v /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo

無(wú)論是 32 位還是 64 位系統(tǒng),都是使用 --target=i386-pc 參數(shù), --no-floppy 是不檢查軟驅(qū)(這玩意兒現(xiàn)在應(yīng)該沒(méi)人用了)。 后兩句不執(zhí)行也行,還沒(méi)弄懂是做什么的。

然后,千萬(wàn)不要忘記 生成 grub.cfg 文件 :

復(fù)制代碼
代碼如下:

# grub-mkconfig -o /boot/grub/grub.cfg
# grep 'set=root' /boot/grub/grub.cfg
# blkid /dev/sdc2

現(xiàn)在的 Grub2 使用 UUID 來(lái)找硬盤分區(qū), 后兩句就是檢查新生成的 grub.cfg 使用的分區(qū) UUID 和硬盤是否相符。 如果忘記生成 grub.cfg 了,可以再次用光盤啟動(dòng)進(jìn)去做。

最后,退出 chroot 環(huán)境,umount,重啟。 啟動(dòng)U盤可以收起來(lái)了。

啟動(dòng)后,新安裝的U盤變成了 /dev/sdb, 此時(shí)最好將 mkinitcpio grub-install grub-mkconfig 重新做一遍, 否則有可能在下次或另外一臺(tái)機(jī)器上啟動(dòng)時(shí),損壞分區(qū)表,丟失文件。 或許沒(méi)有道理,但這是我重復(fù)安裝好多次以后的感覺(jué),可能有以下原因:

帶電插拔,可我都是 umount 了啊,不應(yīng)當(dāng)這么脆弱。
被 USB 3.0 高電流給破壞了,沒(méi)拔U盤燒了算我走運(yùn)? 倒是聽(tīng)說(shuō)過(guò) USB 3.0 損壞U盤數(shù)據(jù)。
/boot 原先沒(méi)有單獨(dú)分區(qū),這個(gè)不應(yīng)該。
是原先使用 GPT 分區(qū)在 BIOS 電腦上水土不服? U盤難道就不能用 GPT 分區(qū)么?
反正換回 MBR 分區(qū)后,貌似比較正常了。

標(biāo)簽:臨沂 南昌 烏蘭察布 防城港 撫州 北海 韶關(guān) 邢臺(tái)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《把Arch Linux安裝到U盤上的具體教程》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266