這是一份個人指南,因此如果您迷路了並且剛剛從某個地方找到了本指南,我建議您閱讀官方wiki
!本指南將重點介紹systemd-boot
、 UEFI
以及如果您想使用LUKS/LVM
加密分割區的指南。這個指南的存在是為了讓我在重新安裝Archlinux
時記住很多事情。
安裝前,請確保:
預設控制台鍵盤映射是 US。可用佈局可以列出:
# ls /usr/share/kbd/keymaps/**/*.map.gz
若要修改佈局,請將對應的檔案名稱附加到 loadkeys,省略路徑和檔案副檔名。例如,設定美國鍵盤佈局:
# loadkeys us
如果在 UEFI 主機板上啟用了 UEFI 模式,Archiso 將透過 systemd-boot 相應地啟動 Arch Linux。要驗證這一點,請列出 efivars 目錄:
# ls /sys/firmware/efi/efivars
如果指令顯示的目錄沒有錯誤,則系統以 UEFI 模式啟動。如果該目錄不存在,系統可能會以BIOS (或CSM )模式啟動。
我們需要確保已連接到互聯網才能安裝 Arch Linux base
和linux
軟體包。讓我們看看我們的介面的名稱。
# ip link
你應該看到這樣的東西:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff permaddr 00:00:00:00:00:00
enp0s0
是有線接口wlan0
是無線介面如果您使用有線連接,則可以透過 systemctl start dhcpcd@<interface>
啟用有線介面。
# systemctl start dhcpcd@enp0s0
如果您使用的是筆記型電腦,則可以使用iwd
中的iwctl
指令連接到無線存取點。請注意,它已預設啟用。也要確保無線卡未被rfkill
封鎖。
掃描網路。
# iwctl station wlan0 scan
透過以下方式取得掃描的網路清單:
# iwctl station wlan0 get-networks
連接到您的網路。
# iwctl -P "PASSPHRASE" station wlan0 connect "NETWORKNAME"
Ping archlinux 網站以確保我們在線:
# ping archlinux.org
如果您收到「未知主機」或「目標主機無法存取」回應,則表示您尚未上線。檢查您的網路配置並重做上述步驟。
使用timedatectl
確保系統時鐘準確:
# timedatectl set-ntp true
若要檢查服務狀態,請使用timedatectl status
。
當被即時系統識別時,磁碟被分配給區塊設備,例如/dev/sda
、 /dev/nvme0n1
或/dev/mmcblk0
。若要識別這些設備,請使用 lsblk 或 fdisk。最常見的主驅動器是sda 。
# lsblk
以rom
、 loop
或airoot
結尾的結果可能會被忽略。
在本指南中,我將建立兩種不同的磁碟機分割方法。一種用於正常安裝,另一種用於設定加密(LUKS/LVM)。讓我們從未加密的開始:
讓我們清理主驅動器,為安裝建立新分割區。是的,在本指南中,我們將使用/dev/sda
作為磁碟。
# gdisk /dev/sda
按x進入專家模式。然後按z來關閉我們的驅動器。然後在提示清除 GPT 並清除 MBR 時按y 。請注意,這將破壞您的整個驅動器,因此您的資料將消失 - 執行此操作後,資料將減少為原子。這。不能。是。未完成。
開啟cgdisk
開始對檔案系統進行分區
# cgdisk /dev/sda
當收到有關 GPT 損壞的警告時按Return 鍵。
現在我們應該會看到主磁碟機,顯示分割區號、分割區大小、分割區類型和分割區名稱。如果您看到分割區列表,請先刪除所有分割區。
建立boot
分區
EF00
。按回車鍵。boot
。按回車鍵。建立root
分區
8300
)。root
。建立root
分區
home
。最後,點擊分區清單底部的Write
將變更寫入磁碟。鍵入yes
確認寫入指令。現在我們已經完成了磁碟分割區。點選Quit
退出 cgdisk 。轉到下一節。
LUKS/LVM
加密檔案系統讓我們清理主驅動器,為安裝建立新分割區。是的,在本指南中,我們將使用/dev/sda
作為磁碟。
# gdisk /dev/sda
按x進入專家模式。然後按z來關閉我們的驅動器。然後在提示清除 GPT 並清除 MBR 時按y 。請注意,這將破壞您的整個驅動器,因此您的資料將消失 - 執行此操作後,資料將減少為原子。這。不能。是。未完成。
透過執行cgdisk /dev/sda
建立分割區
# cgdisk /dev/sda
當警告 GPT 損壞時,只需按Return 鍵即可。
現在我們應該會看到主磁碟機,顯示分割區號、分割區大小、分割區類型和分割區名稱。如果您看到分割區列表,請先刪除所有分割區。
建立boot
分區
EF00
。按回車鍵。boot
。按回車鍵。建立LVM
區
8e00
。按回車鍵。lvm
。按回車鍵。最後,點擊分區清單底部的Write
將變更寫入磁碟。鍵入yes
確認寫入指令。現在我們已經完成了磁碟分割區。點選Quit
退出 cgdisk 。轉到下一節。
再次使用lsblk
檢查我們建立的分區。我們?我以為我正在為自己做這個指南哈哈
# lsblk
你應該看到這樣的東西:
姓名 | 少:最小 | RM | 尺寸 | 逆滲透 | 類型 | 掛載點 |
---|---|---|---|---|---|---|
sda | 8:0 | 0 | 477G | 0 | ||
sda1 | 8:1 | 0 | 1 | 0 | 部分 | |
sda2 | 8:2 | 0 | 1 | 0 | 部分 | |
資料傳輸3 | 8:3 | 0 | 175G | 0 | 部分 |
sda
為主盤sda1
是啟動分區sda2
是交換分區sda3
是主分區
姓名 | 少:最小 | RM | 尺寸 | 逆滲透 | 類型 | 掛載點 |
---|---|---|---|---|---|---|
sda | 8:0 | 0 | 477G | 0 | 磁碟 | |
sda1 | 8:1 | 0 | 1 | 0 | 部分 | |
sda2 | 8:2 | 0 | 1 | 0 | 部分 |
sda
為主盤sda1
是啟動分區sda2
是LVM分割區
驚喜!驚喜!我們不會加密/boot
分割區。
將/dev/sda1
分割區格式化為FAT32
。這將是我們的/boot
。
# mkfs.fat -F32 /dev/sda1
將/dev/sda3
和/dev/sda4
分割區格式化為EXT4
。這將是我們的root
分區和home
分區。
# mkfs.ext4 /dev/sda3
# mkfs.ext4 /dev/sda4
將/dev/sda1
分割區格式化為FAT32
。這將是我們的/boot
。
# mkfs.fat -F32 /dev/sda1
建立 LUKS 加密容器。
# cryptsetup luksFormat /dev/sda2
輸入您的密碼兩次。別忘了這一點!
開啟已建立的容器並將其命名為您想要的名稱。在本指南中,我將僅使用cryptlvm
。
# cryptsetup open --type luks /dev/sda2 cryptlvm
輸入您的密碼並驗證。
解密的容器現在位於/dev/mapper/cryptlvm
。
在打開的 LUKS 容器頂部建立一個實體磁碟區:
# pvcreate /dev/mapper/cryptlvm
建立磁碟區組並將其命名為volume
(或任何您想要的名稱),將先前建立的實體磁碟區新增至其中:
在本指南中,我將僅使用volume
作為磁碟區組名稱。
# vgcreate volume /dev/mapper/cryptlvm
在磁碟區組上建立所有需要的邏輯磁碟區。我們將建立root
邏輯捲和home
邏輯磁碟區。請注意,該磁碟volume
是我們剛剛建立的磁碟區的名稱。
創建我們的root
。在本指南中,我將使用 100GB。
# lvcreate -L 100G volume -n root
這將創建/dev/mapper/volume-root
。
創造我們溫馨的home
。我將把剩餘的空間分配給它。
# lvcreate -l 100%FREE volume -n home
這將創建/dev/mapper/volume-home
。
格式化LVM磁碟區下的邏輯分割區。
格式化我們的root
區和home
分割區。
# mkfs.ext4 /dev/mapper/volume-root
# mkfs.ext4 /dev/mapper/volume-home
將/dev/sda
分割區掛載到/mnt
。這是我們的/
:
# mount /dev/sda3 /mnt
建立/boot
掛載點:
# mkdir /mnt/boot
將/dev/sda1
掛載到/mnt/boot
分割區。這將是我們的/boot
:
# mount /dev/sda1 /mnt/boot
建立/home
掛載點:
# mkdir /mnt/home
將/dev/sda4
掛載到/mnt/home
分割區。這將是我們的/home
:
# mount /dev/sda1 /mnt/home
將/dev/mapper/volume-root
分區掛載到/mnt
。這是我們的/
:
# mount /dev/mapper/volume-root /mnt
建立/boot
掛載點:
# mkdir /mnt/boot
將/dev/sda1
掛載到/mnt/boot
分割區。這將是我們的/boot
:
# mount /dev/sda1 /mnt/boot
建立/home
掛載點:
# mkdir /mnt/home
將/dev/mapper/volume-home
掛載到/mnt/home
分區。這將是我們的/home
:
# mount /dev/mapper/volume-home /mnt/home
我們不需要安裝swap
因為它已經啟用了。
現在讓我們繼續將base
、 linux
、 linux-firmware
和base-devel
軟體包安裝到我們的系統中。
# pacstrap /mnt base base-devel linux linux-zen linux-firmware
我將安裝linux-zen
因為它有遊戲所需的模組。
base
軟體包不包括即時安裝的所有工具,因此對於功能齊全的基礎系統可能需要安裝其他軟體包。特別是,考慮安裝:
網路所需的軟體,
dhcpcd
:符合 RFC2131 的 DHCP 用戶端守護程式iwd
:互聯網無線守護進程inetutils
:常用網路程式集合iputils
:網路監控工具,包括ping
用於存取RAID
或LVM
分割區的實用程序,
lvm2
:邏輯磁碟區管理器 2 公用程式(如果您要使用 LUKS/LVM 設定加密檔案系統,請將其包含在 pacstrap 上)茲拉姆
zram-generator
文字編輯器,
nano
vim
vi
用於存取手冊頁和資訊頁中的文件的包,
man-db
man-pages
微碼
intel-ucode
/ amd-ucode
工具:
git
:快速分散式版本控制系統tmux
:終端機多工器less
:用於查看文字檔案的基於終端的程序usbutils
:USB 裝置實用程式bash-completion
:bash shell 的可程式完成用於管理將在系統上使用的檔案系統的用戶空間實用程序,
ntfs-3g
:NTFS 檔案系統驅動程式和實用程式unrar
: RAR 解壓縮程序unzip
:用於提取和查看.zip
存檔中的文件p7zip
:具有高壓縮比的命令列檔案歸檔器unarchiver
: unar
和lsar
:用於解壓縮存檔檔案的 Objective-C 工具gvfs-mtp
: GIO
的虛擬檔案系統實作( MTP
後端;Android、媒體播放器)libmtp
:媒體傳輸協定的函式庫實現android-udev
:將 Android 裝置連接到 Linux 盒子的 Udev 規則mtpfs
:支援從任何 MTP 設備讀取和寫入的 FUSE 檔案系統xdg-user-dirs
:管理使用者目錄,例如~/Desktop
和~/Music
這些工具稍後會有用。所以未來的我,就安裝這些。
# genfstab -U /mnt >> /mnt/etc/fstab
檢查產生的/mnt/etc/fstab
文件,並在出現錯誤時進行編輯。
現在,將 root 更改為新安裝的系統
# arch-chroot /mnt /bin/bash
可以在/usr/share/zoneinfo/
下方找到一系列時區。由於我在菲律賓,因此我將使用/usr/share/zoneinfo/Asia/Manila
。選擇適合您所在國家/地區的時區:
# ln -sf /usr/share/zoneinfo/Asia/Manila /etc/localtime
運行hwclock
生成/etc/adjtime
:
# hwclock --systohc
此指令假定硬體時鐘設定為 UTC。
locale
設定定義系統使用的語言以及其他區域注意事項,例如貨幣面額、數字和字元集。 /etc/locale.gen
中列出了可能的值。取消註釋en_US.UTF-8
以及其他所需的在地化。
在/etc/locale.gen
中取消註釋en_US.UTF-8 UTF-8
和其他所需的語言環境,儲存並使用以下命令產生它們:
# locale-gen
建立locale.conf
文件,並相應地設定 LANG 變數:
# locale > /etc/locale.conf
如果您之前設定了鍵盤佈局,請在vconsole.conf
中保留變更:
# echo "KEYMAP=us" > /etc/vconsole.conf
不使用us
佈局?換個吧,笨蛋
建立主機名稱檔案。在本指南中,我將只使用MYHOSTNAME
作為主機名稱。主機名稱是主機的主機名稱。非洲每 60 秒就過去一分鐘。
# echo "MYHOSTNAME" > /etc/hostname
開啟/etc/hosts
向hosts
新增符合項目:
127.0.0.1 localhost
::1 localhost
127.0.1.1 MYHOSTNAME.localdomain MYHOSTNAME
如果系統有永久 IP 位址,則應使用它而不是127.0.1.1
。
通常不需要建立新的 initramfs,因為 mkinitcpio 是在使用 pacstrap 安裝核心包時執行的。如果您要設定加密系統,這一點很重要!
```
# mkinitcpio -P
```
DO NOT FORGET TO RUN THIS BEFORE REBOOTING YOUR SYSTEM!
使用編輯器開啟/etc/mkinitcpio.conf
:
在本指南中,有兩種設定 initramfs 的方法: udev
(預設)和systemd
。如果您打算使用plymouth
(splashcreen),建議使用基於systemd
的 initramfs。
基於 udev 的 initramfs(預設)。
找到HOOKS
數組,然後將其變更為如下所示:
HOOKS=(base udev autodetect keyboard modconf block encrypt lvm2 filesystems fsck)
基於 systemd 的 initramfs。
找到HOOKS
數組,然後將其變更為如下所示:
HOOKS=(base systemd autodetect keyboard sd-vconsole modconf block sd-encrypt lvm2 filesystems fsck)
重新產生 initramfs 映像:
# mkinitcpio -P
不要忘記在重新啟動系統之前運行此命令!
# dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
設定正確的權限
# chmod 0600 /swapfile
建立正確大小的檔案後,將其格式化為交換:
# mkswap -U clear /swapfile
啟動交換文件
# swapon /swapfile
最後,編輯 fstab 設定以在/etc/fstab
中新增交換文件條目:
/swapfile none swap defaults,pri=10 0 0
# pacman -S zram-generator
讓我們在/etc/systemd/zram-generator.conf !
我更喜歡將總 RAM 的一半作為 zswap 大小。我的筆記型電腦有 4 個核心,因此我將其分配給四個 zram 設備。所以我會使用這個配置:
[zram0]
zram-size = ram/8
compression-algorithm = zstd
swap-priority = 100
[zram1]
zram-size = ram/8
compression-algorithm = zstd
swap-priority = 100
[zram2]
zram-size = ram/8
compression-algorithm = zstd
swap-priority = 100
[zram3]
zram-size = ram/8
compression-algorithm = zstd
swap-priority = 100
無需啟用/啟動任何東西,它會自動初始化 zram 設備!只需重新啟動並執行swapon -s
即可檢查您擁有的交換。
multilib
和AUR
在/etc/pacman.conf
中啟用 multilib 和 AUR 儲存庫。使用您選擇的編輯器打開它:
取消註解multilib
(從行開頭刪除 #)。它應該看起來像這樣:
[multilib]
Include = /etc/pacman.d/mirrorlist
在/etc/pacman.conf
末尾新增以下行以啟用 AUR 儲存庫:
[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch
pacman
好東西您可以在 archlinux 的套件管理器pacman
中啟用“復活節彩蛋”和好東西。
開啟/etc/pacman.conf
,然後找到# Misc options
。
若要為pacman
新增顏色,請取消註解Color
。然後透過在Color
字串下加入ILoveCandy
將Pac-Man
加入pacman
。若要啟用並行下載,也請取消註解:
Color
ILoveCandy
ParallelDownloads = 3
若要檢查您是否成功新增儲存庫並啟用復活節彩蛋,請執行:
# pacman -Syu
如果更新回傳錯誤,請再次開啟pacman.conf
並檢查是否存在人為錯誤。是的,你搞砸了。
設定root
密碼:
# passwd
新增用戶帳戶。在本指南中,除了root
帳號之外,我將僅使用MYUSERNAME
作為新使用者的使用者名稱。 (我的措辭似乎多餘,嗯?)當然,用您自己的用戶名更改示例用戶名:
# useradd -m -g users -G wheel,storage,power,video,audio,rfkill,input -s /bin/bash MYUSERNAME
這將建立一個新用戶及其home
資料夾。
設定使用者MYUSERNAME
的密碼:
# passwd MYUSERNAME
如果您希望將來透過使用sudo
指令來取得 root 權限,您應該自己授予一個權限:
# EDITOR=vim visudo
取消註解該行(刪除#):
# %wheel ALL=(ALL) ALL
是的,這就是我們安裝引導程式的地方。我們將使用systemd-boot
,因此不需要grub2
。
安裝引導程式:
我們將其安裝在/boot
掛載點( /dev/sda1
分割區)中。
# bootctl --path=/boot install
建立啟動條目/boot/loader/entries/arch.conf
,然後新增以下行:
```
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=/dev/sda3 rw
```
If your `/` is not in `/dev/sda3`, make sure to change it.
Save and exit.
還記得之前的兩種類型的 initramfs 嗎?每種類型都需要特定的核心參數。所以這裡還有兩種類型的條目。請記住, volume
是磁碟區組名稱, /dev/mapper/volume-root
是/
的路徑。
基於 udev 的 initramfs
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options cryptdevice=UUID=/DEV/SDA2/UUID/HERE:volume root=/dev/mapper/volume-root rw
將/DEV/SDA2/UUID/HERE
替換為LVM
分區的 UUID。您可以透過執行blkid /dev/sda2
來檢查它。請注意,plymouth 不支援cryptdevice
參數,因此如果您打算使用它,建議使用基於 systemd 的 initramfs。
提示:如果您使用vim
,則可以透過鍵入:read ! blkid /dev/sda2
然後按 Enter 鍵。然後使用視覺模式操作輸出。
基於systemd的initramfs
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options rd.luks.name=/DEV/SDA2/UUID/HERE=volume root=/dev/mapper/volume-root rw
將/DEV/SDA2/UUID/HERE
替換為LVM
分區的 UUID。您可以透過執行blkid /dev/sda2
來檢查它。
提示:如果您使用vim
,則可以透過鍵入:read ! blkid /dev/sda2
然後按 Enter 鍵。然後使用視覺模式操作輸出。
更新引導程式配置
# vim /boot/loader/loader.conf
刪除其所有內容,然後將其替換為:
default arch.conf
timeout 0
console-mode max
editor no
處理器製造商發布了處理器微代碼的穩定性和安全性更新。這些更新提供了對系統穩定性至關重要的錯誤修復。如果沒有它們,您可能會遇到難以追蹤的虛假崩潰或意外的系統停止。
如果您沒有使用 pacstrap 安裝它,請透過以下方式安裝微代碼:
對於 AMD 處理器:
# pacman -S amd-ucode
對於英特爾處理器:
# pacman -S intel-ucode
如果您的 Arch 安裝位於需要兩個製造商處理器的微代碼的可移動驅動器上,請安裝這兩個軟體包。
載入微代碼。對於systemd-boot
,使用initrd
選項在初始 ramdisk之前載入微代碼,如下所示:
# sudoedit /boot/loader/entries/entry.conf
title Arch Linux
linux /vmlinuz-linux
initrd /CPU_MANUFACTURER-ucode.img
initrd /initramfs-linux.img
...
根據您的處理器,將CPU_MANUFACTURER
替換為amd
或intel
。
下次重新啟動時要啟用網路守護程序,您需要為有線連線啟用dhcpcd.service
,為無線連線啟用iwd.service
。
# systemctl enable dhcpcd iwd
鍵入exit
或按Ctrl + d退出 chroot 環境。您也可以在此之後卸載所有已安裝的分割區。
最後, reboot
。
如果您的安裝成功,那麼耶!如果沒有,你應該開始質疑自己的存在。你的父母為你感到驕傲嗎?