非正式備忘錄:Arch Linux桌面系統安裝流程(xfce4+btrfs+legacy-bios)
這篇文章撰於2014年,部分內容可能已經過時,請務必閱讀最新的英文ArchWiki。btrfs目前個人已不再使用且不建議新手使用。個人推薦使用xfs,這是linux codebase中代碼寫的最棒的文件系統,勝於ext4——2018年補敘。
注意:此日誌僅作個人備忘用;雖可供他人參考,但不建議直接以此為樣板進行安裝,除非是一個有經驗的GNU/Linux用戶;新手當參考ArchWiki的Beginners’ Guide進行安裝,而非文字貧乏的本文;這篇文章或許已經過時,請參考ArchWiki;
更新:筆者前些天因爲某些意外(在使用Windowz恢復環境時)將Arch的btrfs根池給抹了,好在即使制止了行程,並成功挽救最重要的一些文件(私鑰等),也因此重新灌裝了一遍系統。在灌裝過程中發現了原文中的幾個小錯誤,已經修復。同時還追加了關於組裝桌面環境的部分內容。另外,筆者再也不敢在實體機器上使用Windowz了。
準備安裝
引導介質
建議用U盤作引導介質。具體方法見先前的那帖。重啓進入Live環境。
網絡準備
安裝Arch Linux需要連接网絡:用netctl附帶的wifi-menu
以快速連接無綫网;若不成功,可嘗試使用wpa_supplicant聯网:wpa_supplicant -Bi <iface> -c <(wpa_passphrase 'SSID' 'passwd')
。pppoe用戶需要用pppoe-setup
設定帳戶訊息,然後使用pppoe-start
連接。
用ping -c 3 t.cn
測試网絡是否聯通;(排除dns問題:ping -c 5 1.1.1.1
)
聯通之後以vi
將不需要的鏡像從/etc/pacman.d/mirrorlist
剔除或注釋,部分鏡像為非官方鏡像,故需手動添加:
Server = http://mirrors.yun-idc.com/archlinux/$repo/os/$arch
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.kernel.org/archlinux/$repo/os/$arch
Server = https://ftp.sjtu.edu.cn/archlinux/$repo/os/$arch
存儲準備
準備硬盤。為方便今後的備份與遷移工作,可考慮選用btrfs或zfs。關於這兩種文件系統的特性與比較,各位可以自行檢索,筆者就不在本文中赘述了(太佔版面,另外我也不敢說對兩個文件系統完全瞭解)。由於筆者只有4G內存,因此我選擇使用btrfs。(建議zfs用戶至少有8G內存,16G最好;內存愈大,處理器愈好便愈能發揮zfs的優勢;另建議zfs用戶使用帶錯誤檢測的內存)。
(在2T以上硬盤上使用zfs或btrfs並且不偏好GPT的用戶,可考慮使用無分區表的單一存儲池——即直接在整個設備上mkfs,這需要傳統的BIOS或支持兼容模式的UEFI)本例中我們使用一個1GiB的引導分區,並將剩下的空間全做成一個btrfs池:
將引導分區格式化爲ext4。然後再將剩下的空間格式化爲btrfs,-f
用以覆蓋可能已存在的數據,並建議指定卷標:
# lsblk -f
# mkfs.ext4 -L <label> -O ^has_journal /dev/sdxy
# mkfs.btrfs -fL <label> /dev/sdxy
掛載頂級存儲池(零號卷):
# mount -o noatime,autodefrag,nospace_cache /dev/sdxy /mnt
以上是咱個人偏好的掛載選項(使用一個233G的稍早的硬盤;推薦一般機械硬盤用戶使用這些選項),其中noatime
用以禁止訪問時間,nospace_cache
是參考[1]所作出的選擇;
敬告:對於目前的btrfs,掛載選項最好在首次掛載該池時就已經決定,中途更換一個_具有較大特色_的掛載選項(如inode_cache
)是不建議的(或導致某些問題),故請按需斟酌所用的掛載選項;
按需創建子卷:
# mkdir /mnt/{archlinux,boot,common}
# btrfs subvolume create /mnt/archlinux/current
# btrfs subvolume create /mnt/archlinux/pkg
# btrfs subvolume create /mnt/common/current
依序掛載子卷:
# umount /mnt
# mount -o noatime,autodefrag,nospace_cache,subvol=archlinux/current /dev/sdxy /mnt
# mkdir -p /mnt/home/username/common /mnt/var/cache/pacman/pkg /mnt/mnt/toplevel
# mount -o noatime,subvol=common/current /dev/sdxy /mnt/home/username/common
# mount -o noatime,subvol=archlinux/pkg /dev/sdxy /mnt/var/cache/pacman/pkg
# mount -o noatime /dev/sdxy /mnt/mnt/toplevel
注記:noatime
是個通用掛載選項,故在掛載子卷時亦需指定;
啓動透明壓縮:
# chattr +c /mnt/mnt/toplevel/common/current
安裝
安裝基本系統
然後安裝基本系統(包括基本構建工具鏈):
# pacstrap -i /mnt base base-devel grub zsh btrfs-progs lzop
生成fstab並仔細檢查:
# genfstab -Up /mnt>>/mnt/etc/fstab
# vi /mnt/etc/fstab
chroot進新系統:
# arch-chroot /mnt
chroot並簡單配置新系統
請按需生成對應本地化定義文件:
#sed -i 's/#\(en_US\.UTF-8\)/\1/
s/#\(ja_JP\.UTF-8\)/\1/
s/#\(zh_CN\.UTF-8\)/\1/
s/#\(zh_TW\.UTF-8\)/\1/' /etc/locale.gen
另建議設置/etc/locale.conf
以防tty亂碼:
#echo 'LANG=en_US.UTF-8'>>/etc/locale.conf
設置時區,主機名:
# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# vi /etc/hostname
配置pacman.conf
,啓用Color
・TotalDownload
與ILoveCandy
,並添加[archlinuxcn]倉庫:
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/$repo/$arch
創建新用戶並設定密碼:
# useradd -m -g users -G video,wheel,storage,optical,network,games,rfkill,uucp,vboxusers,wireshark,systemd-journal -s /usr/bin/zsh username
# passwd username
配置/etc/sudoers
:
#sed -i 's/#\ \(Defaults\ env_keep\ +=\ "LANG\ LANGUAGE\ LINGUAS\ LC_\*\ _XKB_CHARSET"\)/\1/
s/#\ \(Defaults\ env_keep\ +=\ "HOME"\)/\1/
s/#\ \(Defaults\ env_keep\ +=\ "XAPPLRESDIR\ XFILESEARCHPATH\ XUSERFILESEARCHPATH"\)/\1/
s/#\ \(Defaults\ env_keep\ +=\ "QTDIR\ KDEDIR"\)/\1/
s/#\ \(Defaults\ env_keep\ +=\ "XDG_SESSION_COOKIE"\)/\1/
s/#\ \(Defaults\ env_keep\ +=\ "XMODIFIERS\ GTK_IM_MODULE\ QT_IM_MODULE\ QT_IM_SWITCHER"\)/\1/
s|#\ \(\%wheel\ ALL=(ALL)\ ALL\)|\1|' /etc/sudoers
設定root密碼並改變其預置shell為zsh:
# passwd
# chsh -s /usr/bin/zsh
配置以xz壓縮initcpio並生成之:
小記:若使用btrfs或zfs,建議去除fsck
鉤子;
# nano /etc/mkinitcpio.conf
安裝網絡工具(按需安裝,請參考ArchWiki;千萬不要忘記這一步否則過會兒您還得重新進Live掛載分區連接網絡纔能補上忘記的包!):
# pacman -S rp-pppoe wpa_actiond
# pacman -S --asdeps dialog
寫入引導扇區,生成grub.cfg(放入頂級卷中)並檢查:
注意:爲避免內核在掛載/
後寫入space_cache(原因見上),請在內核參數中添加ro
(在/etc/default/grub
中的GRUB_CMDLINE_LINUX
後添加ro
再生成grub.cfg
即可);
# mount -o noatime /dev/sdxy /mnt/boot
# grub-install --boot-directory=/mnt/toplevel/boot --compress=lzo --locales= --themes= /dev/sdx
# nano /etc/default/grub
# grub-mkconfig -o /mnt/toplevel/boot/grub/grub.cfg
# nano /mnt/toplevel/boot/grub/grub.cfg
離開chroot環境並重啓計算機
# exit
# umount -R /mnt
# reboot
配置與調優
配置網絡
重啓進新系統,以root或username登錄。根據先前配置過的網絡設置再配置一遍(這次是在新系統上)。若發現有忘記安裝的包……不好意思,您得重新進Live掛載分區並灌裝缺失的包。
常用軟件
工欲善其事、必先利其器。沒有軟件可怎麼幹活呢?以下是一些可能會有用的軟件,可能在aur裏也可能在官方源裏:
文本界面
- aur幫手:yaourt(很多新手喜歡的的東西但我個人尤其不推介,可看看jasonwryan的帖子)・cower(半官方,推薦使用)
- 磁盤分區管理與格式化:ufsutils(ufs格式化工具)・zfs-git(zfs支持工具)・btrfs-progs(btrfs支持工具)・ntfs-3g(若您需要寫NTFS文件系統,這是肯定要安裝的東西,很多新手經常問。特此註明)・dosfstools(FAT系列格式化工具)・gpart(分區表拯救工具)・testdisk(另一個拯救工具,慎用)
- 引導:os-prober(若您的硬盤上有別的操作系統會需要這個)
- shell:zsh・zsh-completions・bash-completion
- 增強工具:pinfo(替代info)・tmux(screen的寬鬆許可替代)・tree・ncdu(非常實用的磁碟用量統計工具)・mc(午夜文件管理器,很實用)・fortune-mod(用Unix能缺這個麼?)・reptyr・dos2unix(處理EOL)・the_silver_searcher
- p7zip(雖然不好用也只能湊合了)・sharutils(解壓老檔案)・unrar(這個還用說嗎?)・zip・unzip(這個還用說嗎??)・zpaq(這個還用說嗎???不用說纔怪,基於CM的高壓縮率的歸檔工具)・upx(壓縮可執行文件)・xdelta3(被aur裏的某個包給擠了= =!)
- 開發:ccache・imake・python{,2}・zshdb・bashdb・{c,}gdb・dejagnu・expect・valgrind
- VCS:git・mercurial・tig
- archlinux限定:pkgfile・pkgstats・archiso・arch-install-scripts・aurphan・devtools
- 硬件訊息:alsa-utils・hwinfo・dmidecode・inxi・lm_sensors・hddtemp・screenfetch・smartmontools・lsb-release
- 固件:intel-ucode・linux-headers
- 文檔標記語言:ruby-asciidoctor・python-markdown
- 混雜工具:linux-tools-meta・cpulimit・kexec-tools・quota-tools・snapper・inotify-tools
- 網絡應用:rsync・whois・dnsutils・wget・aria2・shadowsocks・openvpn・proxychains-ng・w3m・elinks・dhclient
- 802.11破解:aircrack-ng・macchanger・nmap・iw・wireless_tools・rfkill
- 系統監控:htop・lsof・strace・dstat・iotop
- noX中文支持:fcitx-fbterm・fbgrab・fbv・v86d・fbset・kmscon(這貨必須用root運行)
- curses:irssi・mutt・msmtp-mta・cmus
字體
- wqy-microhei
- ttf-dejavu
- ttf-liberation
還需要別的麼?
桌面環境
- X11:xorg-{server,xinit}・xf86-video-{intel,nouveau,ati}
關於桌面環境我要說幾句:若是低配電腦或者筆記本,我建議使用Xfce4——當然不是所有的組件都需要裝,您可慢慢精簡不着急。不要考慮LXDE,那個桌面環境基本沒有可用性。KDE是最人類友好——爲人類而設計的桌面環境,其附屬應用也非常好用,若您的配置比較好的話還是用KDE吧。我採用的是以Xfce爲主再搭配i3wm的方案。各位可試試各種搭配方案並最終用上最適合自己的組合。
- Xfce:thunar-volman・gvfs(掛U盤)・tumbler(微縮圖支持)・xfce4-appfinder(應用程式協尋器)・xfce4-panel(面板)・xfce4-session(會話管理)・xfce4-settings(控制面板)・xfdesktop(桌面)・xfce4-clipman-plugin(剪貼板助手)・xfce4-cpufreq-plugin(cpu頻率插件)・xfce4-cpugraph-plugin(cpu圖表插件)・xfce4-datetime-plugin(日期時間)・xfce4-notifyd(氣泡提示)・xfce4-sensors-plugin(溫度檢測)・xfce4-screenshooter(截圖工具)・xfburn(簡單夠用的光碟燒製工具)・orage(日程表及提醒工具)
- 文本編輯:gvim(這個不用說了)與geany(主題包是geany-themes)
- 終端模擬:rxvt-unicode-better-wheel-scrolling・urxvt-perls(提供某些常用的擴展,如剪貼板擴展)——爲什麼不用xfce4-terminal?vte很buggy又慢,所以不用。配置這個小玩意兒需要花點功夫,但是值得。
- 圖片檢視:gpicview或feh皆可。
- 計算器:galculator-gtk2
- 拾色器:gcolor2
- 輸入法:fcitx-{rime,gtk2,gtk3,qt4,qt5,configtool,fbterm}
- 分區管理:gparted——僅此一家。
- 圖像處理:gimp——僅此一家。
- 矢量圖:inkscape——僅此一家。
- 磁碟用量:baobab36。
- 十六進制編輯:ghex——似乎僅此一家。
- 「字符映射表」:gucharmap
- 網頁瀏覽:firefox-i18n-zh-tw——開源徹底的就這一家。
- 網絡抓包:wireshark-gtk
- 辦公套裝:libreoffice-fresh-zh-TW——似乎功能最強大的就這一家。
- 聽音樂:deadbeef・osdlyrics(歌詞)
- 增強工具:wmctrl・xdg-user-dirs・numlockx・xorg-server-xephyr・autocutsel・alltray・xvkbd・xautolock・xdotool等
- 虛擬機:virtualbox・virtualbox-guest-iso・virtualbox-ext-oracle
- gtk主體:numix-themes-archblue・numix-themes-darkblue
- X11光標主體:xcursor-ize-vision
- 圖標主體:faience-icon-theme-lite
- BT下載:transmission-gtk或qbittorrent
- RSS:liferea
- pdf/djvu:zathura-{djvu,pdf-mupdf}
- epub:calibre