最近無意間發現一個基於ArchLinux的發行版——BlackArch,主題十分炫酷(中二)。當然滲透類的Linux
發行版已經有BackTrack和Kali了,不過都是源於Debian的,使用者眾多,隨波逐流無法突顯我們的逼格,
要論小眾,ArchLinux算是個中翹楚。呵呵開個玩笑,其實ArchLinux的亮點在於“小”,不同於其他發行版的“最小化安裝”,
ArchLinux的安裝過程就與眾不同,手動分割槽,手動配置bootloader,然後從網路源下載必要的包安裝到指定的分割槽中。
安裝完必備的軟體(如gcc)後其餘一概自己去新增,包括圖形介面。對於喜歡定製而又不怕折騰的朋友來說,Arch系列確實
是一個不錯的選擇。正好我還沒有用過Arch系的發行版,因此就在虛擬機器裝一個體驗一回,順便把其中遇到的坑記錄一下。
安裝ArchLinux
關於ArchLinux的安裝,已經有無數文章介紹過了,不過質量良莠不齊,每個人遇到的問題也不盡相同,因此強烈建議先看一遍
官網的Beginner-guide。總的來說,作業系統的安裝過程不算複雜,問題主要出現在分割槽和bootloader的配置上,
能解決就好辦多了。
準備工作
在官網的Download介面裡就有最新的iso映象源可以下載,包括磁力連結和bt種子,下載好後燒錄到光碟或者u盤,就可以作為一個操作
系統直接啟動了。和一般的系統安裝不同,啟動後以root使用者進入一個傳統的linux命令列,內含/root /boot /home /etc /mnt等常見
目錄,這時可以看到有很多軟體能用,比如ifconfig,因為此時軟體都是在映象上面的。我們所需要做的,就是通過這個命令列來把我們
的作業系統安裝到預留的磁碟空間內。
磁碟分割槽
磁碟分割槽是安裝系統的第一步,也是最重要的一步,分割槽的好壞決定了以後使用磁碟的效率,甚至會影響系統的正常啟動。關於磁碟分割槽可以
先閱讀一下Arch Wiki的相關部分內容。首先,我們可以用lsblk
命令檢視分割槽和掛載點,在沒分割槽時應該只能看到空閒的/dev/sdx。
分割槽資訊主要儲存在分割槽表中,目前有兩種主流的模式,即MBR(Master Boot Record)和GPT(GUID Partition Table),鳥哥的私房菜裡講的就是
傳統的MBR分割槽,但其限制較多,比如只支援4個分割槽(後來加入擴充分割槽和邏輯分割槽),而GPT是較新的一種分割槽模式,解決了前者許多限制,因此這裡
就採用GPT來進行分割槽。分割槽的工具有很多,比如parted
、fdisk
、gdisk
、cfdisk
等,這裡以gdisk(GPT版的fdisk)為例,假設空閒磁碟為sda:
gdisk /dev/sda
進入互動的命令列模式,顯示效果如下:
Command (? for help):
此時按‘n’回車可以新增分割槽,依次互動選擇分割槽號,起始扇區,終止扇區和“hex code”。如第一個分割槽(boot)選擇分割槽號為預設(1),起始扇區選預設,
終止扇區設定為“+250M”(不要引號)。hex code表示檔案系統型別,預設為8300(Linux File System),一般選預設就可以了。不過要注意的是如果有交換分割槽,
要把hex code設定為8200。都完成後可以在互動模式輸入p回車檢視分割槽詳細資訊,如果沒問題,就輸入w回車寫入分割槽。退出後可以通過命令檢視詳細分割槽:
fdisk -l
值得一提的是boot分割槽格式要設定為EFI System,可以在hex code裡指定也可以在parted互動命令列中設定:
parted /dev/sda
(parted) set 1 boot on
格式化並掛載磁碟
假設我們已經將/dev/sda分割槽為四部分sda1~sda4,分別對應boot,swap,/目錄,home,首先格式化一般的儲存目錄:
mkfs -t ext4 /dev/sda1
mkfs -t ext4 /dev/sda3
mkfs -t ext4 /dev/sda4
對於交換分割槽我們要用mkswap命令設定格式:
mkswap /dev/sda2
設定好檔案格式後需要把我們的分割槽(臨時)掛載到檔案系統上:
mount /dev/sda3 /mnt
mount /dev/sda1 /mnt/boot
mount /dev/sda4 /mnt/home
swapon /dev/sda2
在掛載點安裝Arch Linux
這裡用到Arch系列的常用命令pacstrap從網路安裝基礎包和基礎開發包:
pacstrap /mnt base base-devel
經過大概半小時就可以安裝好所有基礎的檔案,此時Arch Linux已經算是安裝好了,但是如果直接重啟是進不了系統的,因為硬體啟動時候還沒有掛載分割槽。
因此我們先生成作業系統當前的分割槽資訊檔案:
genfstab -p /mnt >> /mnt/etc/fstab
這個檔案的作用是在以後啟動時自動掛載你的磁碟分割槽,同時也會檢測前面設定的交換分割槽(如果有的話)。
安裝bootloader
在電腦剛剛啟動的時候,並不知道該如何進入作業系統,因此需要一個引導,bootloader起的就是引導作用。最常見的bootloader就是grub和syslinux,
如果使用GRUB legacy作為bootloader,必須使用MBR,因此我們選擇syslinux。
首先我們現在分割槽裡安裝syslinux:
pacstrap /mnt syslinux
關於syslinux的配置過程可以參考官網的wikiSyslinux,安裝可分為自動安裝和手動安裝,推薦自動安裝:
syslinux-install_update -i -a -c /mnt
安裝完成後用arch-chroot命令進入我們的新系統設定語言,時區等其他配置:
arch-chroot /mnt
修改/etc/locale.gen
檔案選擇語言,建議不要選中文不然會出現命令列亂碼。
locale-gen
echo LANG="en_US.UTF-8" > /etc/locale.conf
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改syslinux的配置資訊,在檔案/boot/syslinux/syslinux.cfg
中可以進行自定義的配置。這裡注意的是在Comboot modules
中可以看到有啟動時需要的模組XXX.c32,我們需要把對應的/usr/lib/syslinux/bios/XXX.c32
複製到/boot/syslinux/
目錄下。
然後執行:
extlinux --install /boot/syslinux
此時bootloader已經安裝好了,對於PC來說,還需要一個啟動協議,即啟動系統的指令,對GPT而言就需要適合GPT分割槽的啟動協議,這裡是gptmbr.bin:
dd conv=notrunc bs=440 count=1 if=/usr/lib/syslinux/bios/gptmbr.bin of=/dev/sda
最後初始化磁碟環境, “Make an initial ramdisk environment (mkinitcpio) using presets (-p) suitable for Linux” :
mkinitcpio -p linux
然後退出chroot,取消掛載再重啟就可以了,重啟之後記得拔出安裝光碟(u盤):
umount -R /mnt
swapoff /dev/sda2
更詳細的安裝圖文過程可以參考ArchWiki或者國外一些部落格如Braun's guide。
使用ArchLinux
這裡先簡單介紹下ArchLinux的包管理工具pacman,類似與debian系列的apt和redhat系列的rpm,
方便我們搜尋,安裝,升級和解除安裝軟體。源的配置檔案在/etc/pacman.conf
,映象列表在/etc/pacman.d/mirrorlist
,可以根據速度選擇一個合適的源。
在安裝軟體前我們需要先和軟體源進行一次同步,相當於apt-get update:
pacman -Syy
同步之後可以選擇批量更新,類似與apt-get upgrade:
pacman -Syu
在源裡搜尋並安裝單個軟體包,會自動安裝其依賴:
pacman -S package
安裝從其他地方下載到本地的軟體包:
pacman -U /path/to/package/package_name.pkg.tgz
安裝某個軟體前可以先在源裡搜尋一有沒有,類似apt-cache search xxx:
pacman -Ss package
類似的在本地搜尋軟體包:
pacman -Qs package
刪除某個軟體包,以及只有其用到的依賴包,如果要保留依賴可以只指定-R:
pacman -Rs package
更詳細的命令可以檢視pacman的manpage。
安裝驅動
顯示卡驅動
Xorg預設安裝的時候已經安裝了部分開源的圖形驅動,一般來說已經夠用,我們也可以安裝自己顯示卡對應的閉源驅動,比如可以去其
顯示卡官網或者膝上型電腦官網下載Linux版本的最新驅動,或者從映象源下載不那麼新的穩定版:
pacman -S mesa xf86-video-intel #A卡
pacman -S nvidia nvidia-utils #N卡
音效卡驅動
音效卡驅動有oss和alsa,一般選擇後者,裝好後可以用alsamixer
命令調節音量:
pacman -S alsa-utils
其他
除了音效卡和顯示卡的驅動,我們一般還需要無線網路卡的驅動,可以在筆記本官網下載。值得一提的是,如果筆記本沒有
有線網路的話,這個最好在安裝之前就先準備好無線網路卡的驅動,以方便隨後用pacman安裝其他軟體。
配置網路
上述步驟完成後我們就能重啟進入ArchLinux的命令列了,預設是tty1,沒有桌面環境,而此時也好不能上網,需要手動配置。
首先在/etc/rc.conf
檔案的NETWORKING段配置ip(你的IP)/netmask(子網掩碼)/broadcast(廣播地址)/ROUTES(路由),
如果為動態,將/etc/rc.conf檔案的eth0改為dhcp形式。注意對於新版本的ArchLinux,啟動程式的管理已經從initscript
變成systemd,統一用systemctl命令管理而不用/etc/rc.conf管理。
如果只有無線網路,我們可以用iwconfig命令連線上路由器:
iwconfig wlan0 essid AP_NAME key KEY_NAME
其中essid後面是Wifi的名字,key後面是Wifi密碼。此時應該就可以訪問網際網路了。值得一提的是如果為虛擬機器,預設網路就
已經連線好了,我們只需要通過sudo dhcpcd
命令開啟即可。
圖形介面
利用pacman命令我們就可以安裝需要的軟體了,對一般PC而言先裝一個圖形介面是挺有必要的,首先安裝Xorg。
pacman -S xorg-server xorg-xinit xorg-utils xorg-server-utils
Xorg是X11的其中一個實現,而X11(X Window System)是一個C/S結構的程式,Xorg只是提供了一個X Server,
負責底層的操作,當你執行一個程式的時候,這個程式會連線到X server上,由X server接收鍵盤滑鼠輸入和負責螢幕輸出視窗的移動,
視窗標題的樣式等等,都是由一種叫做視窗管理器的程式來完成的,安裝好後startx,如下圖所示,其中包涵了Xorg,4個視窗及對應的程式,
和Xorg自帶的視窗管理器twm:
可以看到這些視窗已經有了圖形介面的雛形,如果為了更好的顯示效果可以自己去安裝其他視窗管理器如Gnome,KDE,xfce等。
下面三個命令分別安裝xfce視窗管理器,字型以及輸入法:
sudo pacman -S xfce4
sudo pacman -S ttf-arphic-uming ttf-arphic-ukai ttf-bitstream-vera
sudo pacman -S ibus ibus-pinyin
安裝好後reboot,然後進入tty,用startxfce4
就可以進入視窗管理器了:
可以看到畫面十分簡潔清秀~嘿嘿。
後記
至此ArchLinux的安裝和配置就完成了,雖然步驟比較多,但由於其Wiki非常詳細且全面,因此90%的問題都能找到解決方法。
前期安裝bootloader的時候也有好幾次因為配置不全/不正確導致開機黑屏無法進入引導幾近抓狂,但俗話說得好,失敗是免費的,
從失敗中學到正確的方法,對自己也沒什壞處。另外通過玩一遍ArchLinux,又對系統的分割槽和啟動過程瞭解不少,真算得上是"獲益匪潛"了。