Linux有兩個發行版:PLD和CRUX。PLD采用的是apt-get作為rpm系統的前端,便于系統的升級,CRUX的軟件包的打包方式十分簡單,就是最簡單的tar.gz包,更易于管理和維護,Archlinux對這兩個發行版進行特性的綜合,揚長避短,現在我們來講講如何在移動硬盤上安裝ArchLinux.
熟悉 Arch Linux 最好的方式就是經常使用、沒事就折騰,我的 Linux 經驗并不算豐富,換 Arch 肯定會遇到很多新問題,為了不耽誤正常使用,不能在正式工作用機上安裝,包括公司和家里,也沒有額外的機器,只好選擇將其安裝在 U盤或者移動硬盤上.
至于服務器,我倒不敢也不推薦輕易更換成 Arch,別說桌面使用還沒有熟悉,就是熟悉了,也沒有精力定期去升級服務器,所以服務器還是用著現在的 Ubuntu 吧,比較省事,也算穩定,即使是已經不再維護的舊發行版,官方也提供 舊發行版倉庫,倉庫中沒有個別新軟件,一般也能在網上找到安裝方法,所以,在熟練駕馭 Arch,以及有足夠精力定期升級之前,別亂折騰生產服務器的好,謹慎選擇.
基本系統安裝
之前已經找了個 2G U盤裝過了,精簡安裝,運行速度還是可觀的,不過 U盤太小,裝到能夠基本使用的話,用戶可用空間只剩 100M 了,所以只能留著用來應急,另外操作系統長期在 U盤上運行的話,還會影響閃存使用壽命,所以這次用移動硬盤來安裝,準備較長期的使用.
這個移動硬盤是要拿著到處跑的,所以選擇 32 位系統,沒辦法家里都是老爺機,分區也保守一點,仍然采用 MBR 而不是 GPT,安裝介質使用 archlinux-2012.11.01-dual.iso 刻錄光盤.
使用光盤啟動,自動以 root 身份進入系統,插入移動硬盤,分區,格式化,掛載,由于不用 GPT 分區,所以 gdisk 和 cgdisk 都不能用,只能用 fdisk 和 cfdisk,fdisk 會預留 2048 個扇區,gdisk 卻是從 64 扇區開始分,分區完成后如下:
- # fdisk /dev/sdb
- Disk /dev/sdb: 40.1 GB, 40060403712 bytes, 78242976 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 identifier: 0xb245c8a1
- Device Boot Start End Blocks Id System
- /dev/sdb1 * 2048 20973567 10485760 83 Linux
- /dev/sdb2 20973568 41945087 10485760 83 Linux
- /dev/sdb3 41945088 77596671 17825792 7 HPFS/NTFS/exFAT
- /dev/sdb4 77596672 78242975 323152 82 Linux swap / Solaris
第一個分區 10G,btrfs 格式,作為 Arch Linux 分區,第二個分區 10G,ext4 格式,作為 $HOME,第三個分區 17G,ntfs 格式,用作日常數據存儲和交換,偶爾還做移動硬盤用,第四個分區 300M,做 swap.
格式化分區:
- # mkfs.btffs /dev/sdb1 -L f006-a
- # mkfs.ext4 /dev/sdb2 -L f006-b
- # mkfs.ntfs -f /dev/sdb3 -L f006-c
沒有詳細研究 btrfs 分區的管理,就這么抓起來當其它格式一樣用了.
掛載分區:
- # mount /dev/sdb1 /mnt
- # mkdir /mnt/home
- # mount /dev/sdb2 /mnt/home
df -h 看一下:
- Filesystem Size Used Avail Use% Mounted on
- /dev/sdb1 10G 312K 8.0G 1% /mnt
- /dev/sdb2 9.9G 151M 9.2G 2% /mnt/home
可以看到,btrfs 分區比 ext4 分區自身占用空間要小一點,但它似乎又保留了 20% 的硬盤空間,作為備用?難怪我那個 U盤空間顯得很小.
安裝基本系統
家里有無線路由,網絡不用配置,已經自動連上了,編輯 /etc/pacman.d/mirrorlist ,把最快的源放在最上面,我是把中國區的 4 個源都放上面,163 的挪到最前面,安裝完成后,這個配置文件也會自動拷貝到新系統中,自帶的 vi 真的是比 vim 難用多了,一會兒第一時間換掉.
按照官網說明,用 # pacstrap /mnt base base-devel 安裝基本系統,base-devel 也一并裝上,遲早會用到 AUR 或 ABS。 提示共 130 個軟件包,需要下載 150M 內容,安裝完成后是 550M.
安裝 grub:# arch-chroot /mnt pacman -S grub-bios
生成 fstab:# genfstab -p /mnt >> /mnt/etc/fstab,然后更改 fstab,U盤一定要作前 3 項優化.
使用 relatime 掛載參數
以前是推薦增加 noatime 掛載參數,不記錄文件讀取時間,但這會導致 Mutt 等需要文件讀取時間的軟件出錯,現在改為使用 relatime 參數了(已經默認加上了,Linux 2.6.30 起此參數成為默認值),只有在文件讀取時間早于文件更新時間時,才更新讀取時間數據。
使用 discard 掛載參數
這個參數主要是針對 SSD 硬盤的,普通硬盤也應該有點作用,把 /tmp 放到 tmpfs 上去,考慮到數據安全性,沒有關閉文件系統的日志,它的提速效果在日常使用中并不明顯.
由于不會跑什么大應用,為了降低 swap 的使用頻率,修改 /mnt/etc/sysctl.conf:
vm.swappiness = 1
vm.vfs_cache_pressure = 50
前一句是盡量不使用 swap,后一句是緩存文件系統信息,下面的操作可以在 chroot 環境下運行:
# arch-chroot /mnt
設置 hostname:echo 'f006' > /etc/hostname
設置時區:# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
新建 /etc/locale.conf 內容為:
- 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 前面的注釋,然后執行 locale-gen 命令.
更改 root 密碼:passwd root
安裝 Grub 引導系統
仍然在 chroot 環境中操作,編輯 /etc/mkinitcpio.conf,在 HOOKS 段增加 usb 參數,然后 # mkinitcpio -p linux 生成 img 文件,同時加上了 resume 和 shutdown 參數,作用以后再試,注:新版本中 block 參數替代了 usb pata sata scsi 等一眾參數.
安裝 grub 到 MBR:
- # grub-install --target=i386-pc --recheck --boot-directory=/boot --no-floppy /dev/sdb
- # 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
無論是 32 位還是 64 位系統,都是使用 --target=i386-pc 參數,--no-floppy 是不檢查軟驅,這玩意兒現在應該沒人用了,后兩句不執行也行,還沒弄懂是做什么的,然后,千萬不要忘記生成 grub.cfg 文件:
- # grub-mkconfig -o /boot/grub/grub.cfg
- # grep 'set=root' /boot/grub/grub.cfg
- # blkid /dev/sdb1 --Vevb.com
現在的 Grub2 使用 UUID 來找硬盤分區,后兩句就是檢查新生成的 grub.cfg 使用的分區 UUID 和硬盤是否相符,如果忘記生成 grub.cfg 了,可以再次用光盤啟動進去做.
最后,退出 chroot 環境,umount 移動硬盤,重啟,啟動光盤可以收起來了.
初始設置:如果一切正常,現在可以用 root 登錄系統了:
- # uname -a
- Linux f006 3.6.8-1-ARCH #1 SMP PREEMPT Tue Nov 27 07:58:01 CET 2012 i686 GNU/Linux
- # free -h
- total used free shared buffers cached
- Mem: 499M 62M 436M 0B 676K 39M
- -/+ buffers/cache: 22M 477M
- Swap: 0B 0B 0B
- # df -h
- Filesystem Size Used Avail Use% Mounted on
- rootfs 10G 814M 7.3G 10% /
- dev 248M 0 248M 0% /dev
- run 250M 4.5M 246M 2% /run
- /dev/sdb1 10G 814M 7.3G 10% /
- tmpfs 250M 0 250M 0% /dev/shm
- tmpfs 250M 0 250M 0% /sys/fs/cgroup
- tmpfs 60M 0 60M 0% /tmp
- /dev/sdb2 9.9G 151M 9.2G 2% /home
安裝 vim,默認的 vi 實在是用不慣:
- # pacman -S vim
- # pacman -R vi
- # ln -s /usr/bin/vim /usr/bin/vi
關閉 PC 小喇叭,這個實在是太煩人了,在啟動時就禁用:
- # cat /etc/modprobe.d/nopcspkr.conf
- blacklist pcspkr
這個文件需要自己創建.
配置有線網絡,如果使用 dhcd 動態分配地址:
- # dhcpcd # 自動讓 eth0 獲取 IP
- # # 或者配置成服務自啟動(更加方便)
- # systemctl enable dhcpcd@eth0
- # systemctl start dhcpcd@eth0
如果使用靜態地址,一種方法是配置 network 服務,比較麻煩,我用另外一種方法,ifplugd + netcfg:
- # pacman -S ifplugd
- # systemctl disable dhcpcd@eth0
- # systemctl stop dhcpcd@eth0 # 要停掉 DHCP,不然有干擾
- # cd /etc/network.d/
- # cp examples/ethernet-static home
- # vi home # 設置我的靜態 IP 設置 profile
- # systemctl enable net-auto-wired
- # systemctl start net-auto-wired
如果要快速切換網絡環境,再在 /etc/network.d/ 下建立一個新的 profile 文件,用 netcfg -u PROFILE 來進行切換,會自動停掉舊的.
在 /etc/conf.d/netcfg 中配置 NETWORKS=(last) 能夠自動記錄最后使用的 profile,但只適用于 network 服務方式,用 net-auto-wired 的話,它是按照文件名排序, 一個一個的試 profile,直到能用的那個,所以要更改 profile 優先級,更改文件名就行了.
安裝 ntp 自動更新時間
- # pacman -S ntp libedit
- # systemctl enable ntpd
- # systemctl start ntpd
另外,Arch 建議在 /etc/ntp.conf 中添加 iburst 參數,比如:
- server 0.pool.ntp.org iburst
- server 1.pool.ntp.org iburst
- server 2.pool.ntp.org iburst
- server 3.pool.ntp.org iburst
檢查 ntpd 同步情況:# ntpq -np,時間同步完成后,用 hwclock -w 寫入硬件時鐘.
創建普通用戶:
- # useradd -m fwolf
- # passwd fwolf
通常,這個用戶我們要賦予 sudo 權限:
- # pacman -S sudo
- # cat /etc/sudoers.d/fwolf_sudo_conf
- Defaults env_reset
- Defaults secure_path="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
- fwolf ALL=(ALL:ALL) ALL
- %admin ALL=(ALL) ALL
- %sudo ALL=(ALL:ALL) ALL
- # chmod 0440 /etc/sudoers.d/fwolf_sudo_conf
注意: /etc/sudoers.d/ 下的文件,名稱帶有 ~ 或者 . 的不會生效,參見 CentOS – 0005017:The #includedir directive in sudoers does not work,文件屬性也必須是 0440
安裝其他常用工具:bash-completion htop
圖形系統
由于移動硬盤要抱著到處跑,所以圖形驅動一定是什么都有,也不追求多么花哨的界面效果,簡潔明快,所以選擇 LXDE+Openbox.
字符界面分辨率
默認進入字符界面后,分辨率是最大分辨率,如果要另行指定,可以修改 /etc/default/grub:
GRUB_CMDLINE_LINUX_DEFAULT="quiet video-1024x768M@75m"
然后 grub-mkconfig -o /boot/grub/grub.cfg 重新生成 grub 配置文件,默認點亮 Numlock,需要用到兩個命令:系統自帶的 setleds 和 通過 pacman 安裝的 numlockx.
要在字符界面下打開 Numlock,可以在 $HOME/.bashrc 中添加:
- # Numlock
- if [ -x /usr/bin/setleds ]; then
- for tty in /dev/tty{1..6}; do
- /usr/bin/setleds -D +num < /dev/tty > /dev/null 2>&1
- done
- fi
這樣設置會在登錄之后自動打開 Numlock,若要登錄之前就打開,可以參照 Arch Wiki 將上述內容添加到 /etc/rc.local 或者 /etc/inittab,但不如跟著用戶配置容易備份.
要在 X 下打開 Numlock,可以在 $HOME/.xinitrc 中添加:
- # Set numlock
- if [ -x /usr/bin/numlockx ]; then
- /usr/bin/numlockx on
- fi
安裝 xorg 和顯卡驅動
Xorg:xorg-server xorg-xinit xorg-server-utils mesa
顯卡驅動:xf86-video-ati xf86-video-intel xf86-video-nouveau nouveau-dri
筆記本觸摸板支持:xf86-input-synaptics
測試 X 工作是否正常:xorg-twm xorg-xclock xterm
現在可以用 startx 啟動 X 看到簡陋的圖形界面了,如果想用 Ctrl+Alt+Backspace 關閉 X,需要在 /etc/X11/xorg.conf.d/10-evdev.conf 中增加一段:
- Section "InputClass"
- Identifier "Keyboard Defaults"
- MatchIsKeyboard "yes"
- Option "XkbOptions" "terminate:ctrl_alt_bksp"
- EndSection
安裝 LXDE
LXDE 組的所有包,然后照官方說明復制 Openbox 的三個配置文件,監測文件系統變化的 Gamin,常用軟件:leafpad obconf epdfview,顯示管理器(圖形登錄界面)Slim,并且 sudo systemctl enable slim.
配置一個簡單的 $HOME/.xinitrc,從 /etc/skel/.xinitrc 復制一份, 然后添加:
- xrandr -s 1024x768 # 提前指定分辨率
- exec startlxde
安裝啟動管理器 SLiM
這個很好裝,默認也能用,但就是分辨率和刷新率有問題,我的舊電腦最佳分辨率為 1024×768@85Hz,LXDE 里很容易就設置了,但 SLiM 沒有直接的可設置方法,只能自建一個 /etc/X11/xorg.conf 如下:
- Section "Monitor"
- Identifier "Monitor0"
- VertRefresh 60.0 - 85.0
- UseModes "Modes1024x768@85"
- EndSection
- Section "Device"
- Identifier "Device0"
- Driver "nouveau"
- EndSection
- Section "Modes"
- Identifier "Modes1024x768@85"
- # 1024x768 @ 85.00 Hz (GTF) hsync: 68.60 kHz; pclk: 94.39 MHz
- Modeline "1024x768_85.00" 94.39 1024 1088 1200 1376 768 769 772 807 -HSync +Vsync
- # 1024x768 @ 75.00 Hz (GTF) hsync: 60.15 kHz; pclk: 81.80 MHz
- Modeline "1024x768_75.00" 81.80 1024 1080 1192 1360 768 769 772 802 -HSync +Vsync
- EndSection
- Section "Screen"
- Identifier "Screen0"
- Device "Device0"
- Monitor "Monitor0"
- DefaultDepth 24
- SubSection "Display"
- Depth 24
- Modes "1024x768_85.00"
- EndSubSection
- EndSection
這個配置文件已經非常簡單了(其中 Modeline 是用 gtf 生成的),但考慮到不同機器上的兼容性,還是不用 SLiM 了,手工 startx 吧.
中文相關
基本字體 ttf-dejavu artwiz-fonts wqy-zenhei wqy-microhei
輸入法 fcitx-im fcitx-configtool fcitx-fbterm,在 $HOME/.xinitrc 里添加:
- export GTK_IM_MODULE=fcitx
- export QT_IM_MODULE=fcitx
- export XMODIFIERS="@im=fcitx"
字體配置,把原先用的其他常用字體和配置文件都搬過來了,就是 $HOME/.fonts 目錄,Ubuntu 下用的很好,這里也可以直接用,把 $HOME/.fonts/fonts.conf 鏈接為 /etc/fonts/local.conf 即生效,然后修改 /etc/fonts/conf.avail 下的 40-nonlatin.conf 和 60-latin.conf 將 SimSun 或者其他你喜歡的字體設置為首選字體,最后 $ fc-cache -vf 更新下字體緩存,重啟 X 就可以了.
至此,一個基本的、具備圖形界面的 Arch Linux 就安裝完成了,基本程序占用空間約 1.4G,總體感覺,運行速度受移動硬盤讀寫速度影響非常大,電腦是 USB 1.1 接口.
新聞熱點
疑難解答