好長時間都沒有更新自己的博客了,我簡單翻閱了一下自己的更新記錄,上一次更新好像還是在5月份左右,距今也有快半年,這半年也是遇到了很多事情,有不好的,也有好的。這半年我對在日常生活工作中使用Linux系統產生了一些興趣,從零開始折騰這一系列的內容,主要從安裝、配置、以及嘗試各種軟件來取代Windows的主導地位,也產生了一些心得,這里我想分幾篇博客來聊聊我是如何慢慢使用arch Linux 來替代以前的Windows機器
為何選擇arch Linux
我本身有一台6年前買的聯想的筆記本,隨着每次系統的更新,也變得越來越卡了,終於有一點我忍不了想着要不退回到windows 7吧,windows 10這台機器已經有點不行了。恰巧我最近在看一本關於計算機發展史的書,書中提到自由軟件運動,那種運動有一種人人為我,我為人人的理想主義色彩,我想既然不能編寫自由軟件造福一方,至少應該享受自由軟件帶來的好處,而且國內經常爆出各種軟件竊取用戶隱私的新聞。何不趁此機會轉移到自由軟件陣營呢?說做就做,自由軟件的基礎自然是需要一個自由的操作系統,Linux是目前使用最為廣泛的自由操作系統。在看了各種Linux發行版本之后我決定使用arch Linux,主要有以下幾個原因:
- 更新方式比較激進,arch Linux采用滾動更新的方式,這意味着用戶能享受最新的軟件版本,當然過激的更新行為會導致一些問題,比如常見的滾掛。我自認為我不缺少動手能力,這個我有信心能自己解決
- arch Linux 豐富的軟件源使它能夠安裝其他發行版Linux無法安裝的軟件
- 豐富的wiki文檔,你能遇到的問題幾乎都可以在里面找到答案
- 最小化安裝,arch Linux自身是最精簡的系統,幾乎精簡到不能再精簡。因此比起其他發行版本的Linux來說,它提供更高自由度的可配置性。
- 安裝困難,我一直覺得對於自己專業內的事情,要做就做最困難的,既然它的安裝使用最為困難,那我就用它,當徹底征服了這一塊內容,帶來的成就感是無法比擬的。而且熟悉了它的安裝過程,又例如提高對Linux的認識
基於上述幾點理由,我開始了漫長的折騰之路
arch Linux 安裝
安裝主要參考 arch wiki 好在文檔大部分都有中文版本,對於英語不好的人來說閱讀起來也不會有過多的阻礙
制作U盤啟動項
首先去官方指定的鏡像站下載安裝包,然后使用相應的工作制作U盤啟動項,windows上我使用的是rufus、Linux或者mac上直接使用如下命令寫入到U盤
sudo dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress oflag=sync
上述命令的含義是制作一個鏡像文件,源文件內容保存在if
參數所指定的位置,輸出到 of
所指定的位置, status=progress 表示現實制作進度, oflag=sync表示以同步的方式寫入,即所有數據寫入完成命令結束,而不是剛寫入就結束
需要注意的是,sdx 是u盤在系統中的命名,一般插入U盤后,在shell上使用fdisk -l
可以看到,另外有的U盤可能經過分區,顯示出下面還有sdx1、sdx2等分區,要寫到sdx,而不是sdx1或者sdx2
將U盤插入待裝機的電腦上,進入bios調整啟動順序和安全設施,如果使用uefi方式啟動的話,需要調整啟動方式為uefi only 而不是 legacy/csm
接下來就可以啟動電腦,進入arch Linux的安裝界面了
聯網設置
進入到安裝界面的第一步需要連接上網絡,這里使用 iwctl
進行網絡連接配置
iwctl #進入交互式命令行
device list # 列出設備名,比如無線網卡一般叫做 wlan0
station wlan0 scan #掃描Wi-Fi
station wlan0 get-networks #列出掃描到的Wi-Fi名稱,例如要連接到esi-0這個Wi-Fi
station wlan0 connect esi-0 #嘗試連接,這個時候需要輸入密碼
成功后就連上互聯網了,可以使用 ping archlinux.org
來試試網絡是否成功連上
更新系統時間
后續在訪問https之類的站點時會驗證客戶端和服務器的證書和時間的,有時候時間不統一,在訪問時可能會報無效的證書之類的錯誤
使用命令
timedatectl set-ntp true
更新之后可以使用 timedatectl status
檢查服務狀態
磁盤分區與格式化
根據arch wiki上的說法,采用uefi的啟動方式時,至少需要一個boot
或者efi
分區作為efi
系統分區(大小不能小於280M)、一個根分區。
這里假設硬盤大小為100G,我采用如下的分區方案
- efi 分區
/efi
1G - 根分區
/
40G - 用戶主目錄
/home
剩余全部空間,越大越好
跟windows
做類比的話,根分區相當於c 盤,主要用來裝系統相關的內容,用戶分區相當於D盤或者其他盤,用來放用戶數據,后續如果系統掛了,重裝系統的話,不會破壞用戶目錄的內容,甚至如果用戶目錄在其他物理盤上,后面換機器了直接將這塊盤掛載到其他機器上,數據直接就能用了
首先將磁盤分區表轉化為gpt
類型
lsblk #顯示分區狀況
parted /dev/sdx #執行parted命令, 進行磁盤類型變更
(parted)mktable #輸入mktable 修改磁盤分區表類型
new disk label type? gpt #輸入gpt,修改分區表為gpt類型
quit #最后退出parted交互式命令
接下來使用cfdisk 命令對磁盤進行分區
cfdisk /dev/sdx #使用cfdisd對磁盤進行分區
free space
表示未分區的部分,上下鍵用來選擇區域,左右鍵用來選擇操作
先選擇new
新建分區,然后輸入大小,最后回車,重復幾次這個操作,按照之前定義的大小來完成分區
記得完成之后,將選項調整到wirte
在退出前將分區寫入到磁盤。完成之后使用
fdisk -l
查看分區
接下來格式化磁盤中的各個分區
- efi 分區格式化為 vfat 格式
- 根分區和用戶分區格式化為 ext4格式
mkfs.ext4 /dev/sda2
mkfs.ext4 /dev/sda3
mkfs.vfat /dev/sda1
接下來將磁盤掛在到當前系統的文件目錄下,使磁盤能正常被系統訪問到
mount /dev/sda2 /mnt
mkdir /mnt/efi
mkdir /mnt/home
mount /dev/sda1 /mnt/efi
mount /dev/sda3 /mnt/home
系統安裝
折騰了這么多東西,終於要開始正式安裝系統了,arch linux
提供了一個腳本用來自動安裝系統內核
pacstrap /mnt base base-devel linux linux-firmware
這句命令可以幫助我們將系統所需要的包安裝到/mnt 這個目錄也就是磁盤上
等待一段時間,安裝就完成了,先別着急重啟,還有一些內容需要安裝
pacstrap /mnt dhcpcd vim sudo networkmanager # dhcpcd networkmanager 是網絡相關的軟件包,后期缺少可以通過網絡下載,聯網軟件沒有的話只能白瞎
系統自身配置
到這里基本已經完成了安裝部分的工作了,接下來要進行的就是重啟前的基本配置了
生成磁盤分區的記錄文件
genfstab -U /mnt >> /mnt/etc/fstab
生成之后可以使用cat
或者 vim
之類的命令復查一下生成的是否有誤
接下來切換到新安裝的系統上
arch-chroot /mnt
在新系統中先在/etc/hostname
中設置主機名,在文件中輸入你想要的主機名,例如叫 arch
接下來在文件/etc/hosts
中設置與其匹配的條目,可以加入以下內容
127.0.0.1 localhost
::1 localhost
127.0.1.1 arch.localdomain arch
接着設置時區,在/usr/localtime
下用 /usr
中合適的時區創建符號連接
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
將系統時間同步到硬件時間
hwclock --systohc
接下來進行本地化操作,程序如果需要本地化文件,都需要依賴 locale,它規定了地域、貨幣、時區日期的格式、字符排列方式和本地化標准。需要在這兩個文件中設置 locale.gen
與 locale.conf
編輯 /etc/locale.gen
然后去掉 en_US.UTF-8 UTF-8
和其他需要的地區前的注釋,例如作為中文用戶可以去掉 zh_CN.UTF-8 UTF-8
以顯示中文
編輯完成之后使用如下命令生成 locale
locale-gen
在/etc/locale.conf
文件中指定系統使用的語言,這里推薦使用英文,否則在出錯的時候可能會出現中文亂碼,不便與排錯
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
設置root
密碼
passwd root
根據cpu的不同,安裝對應的微碼,以確保處理器能穩定運行
pacman -S intel-ucode #intel
pacman -S amd-ucode #amd
安裝引導程序
為了能在機器加電之后正常找到Linux所在位置,需要安裝引導程序,來引導操作系統的啟動。
pacman -S grub efibootmgr # 使用grub做引導程序,efibootmgr 是uefi方式啟動需要的
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=arch #將啟動項取名為arch 啟動類型為efi的64位系統 系統啟動位置在 /efi
接下來可以稍微對啟動配置做一些修改,編輯 `/etc/default/grub` 文件,去掉 `GRUB_CMDLINE_LINUX_DEFAULT` 一行中最后的 `quit` 參數,同時把`log level` 的數值從3改到5,這樣是為了后續如果出現系統錯誤方便排查。同時加入 `nowatchdog` 參數,這樣可以顯著提升開關機速度
修改完成之后生成grub
所需的配置文件
grub-mkconfig -o /boot/grub/grub.cfg
這樣就完成了安裝
exit
umount -R /mnt
reboot
一切順利的話,重啟之后應該就能進入系統了。
新系統基礎配置
網絡配置
之前我們下載了與網絡相關的兩個工具networkmanager
和dhcpcd
,用來管理網絡和dhcp自動分配IP地址
systemctl enable --now NetworkManager # 啟動networmmanager服務
nmcli device wifi list # 查看Wi-Fi列表
nmcli device wifi connect ssid password password #連接Wi-Fi,ssid表示Wi-Fi名,后面一個password表示連接wifi的真實密碼
網絡連接成功之后,使用pacman
將系統更新到最新版本
pacman -Syyu
創建非root用戶
為了系統安全防止自己某天抽風不小心輸入類似 rm -rf /
之類的危險命令,平時最好使用非root登陸。 對於系統操作使用sudo
來提升權限
useradd -m -G wheel -s /bin/bash arch
創建一個名為arch的用戶,將用戶組歸屬到wheel
中,同時創建用戶目錄, 並且指定shell使用bash
接下來使用 passwd arch
來修改用戶密碼
由於系統中並沒有安裝vi,所以默認會使用vi命令的一些命令都會失效。所以需要將 vi
鏈接到 vim
ln -sf /usr/bin/vim /usr/bin/vi
使用visudo
將文件中 #%whell ALL=(ALL) ALL
這行的注釋去掉
使用su arch
將當前用戶切換到arch
。可以使用命令sudo pacman -Syyu
來更新系統,同時測試一下輸入用戶密碼之后能否執行一些root
命令
設置交換文件
在桌面環境中,交換分區或文件用來實現休眠(hibernate)的功能,即將當前環境保存在磁盤的交換文件或分區部分。除此之外,某些特定軟件需要 swap 才可以正確運行。交換文件與分區性能相同,且交換文件更為靈活,可隨時變更大小,增加與刪除
dd if=/dev/zero of=swapfile bs=1M count=4096 status=progress #設置4G的交換分區,大小根據系統的實際內存來決定,一般最好略大於物理內存
chmod 600 /swapfile
mkswap /swapfile # 格式化swap文件
swapon /swapfile # 啟用swap文件
最后往/etc/fstab
中追加如下內容
/swapfile none swap defaults 0 0
開啟32位軟件庫支持與ArchLinuxCN庫的支持
為了系統的穩定,官方關閉了32位軟件以及aur軟件庫,但是僅僅只依靠官方源中的軟件時不夠用的,這里我們要打開這兩個庫
vim /etc/pacman.conf
去掉[multilib]一節中兩行的注釋,來開啟 32 位庫支持。
在文檔結尾處加入下面的文字,來開啟 ArchLinuxCN 源。
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
執行 sudo pacman -Syyu
更新pacman數據庫
然后需要安裝 archlinuxcn-keyring
包以導入 GPG key
sudo pacman -S arhclinuxcn-keyring
有時候因為密鑰環的問題,導致這一步安裝報錯,可以依次執行下面的命令
sudo pacman -syyu
sudo pacman -S haveged
sudo pacman -Syu haveged
sudo systemctl start haveged
sudo systemctl enable haveged
sudo rm -fr /etc/pacman.d/gnupg
sudo pacman-key --init
sudo pacman-key --populate archlinux
sudo pacman-key --populate archlinuxcn
然后再重新安裝,即可解決問題
最后安裝 yay
用來下載archlinuxcn
庫中的軟件
結尾
至此,已經完成了對系統的安裝到基礎配置,現在已經有了一個基本可用的操作系統了,但是目前系統仍然只有一個基本的黑框框,作為日常使用還遠遠不足,至少還需要一個桌面環境,后面的博文會陸續介紹我是如何安裝並配置一個基本的桌面環境。最后到一個基本可用於日常生活和工作中的操作系統。