詳解在移動硬碟上安裝 ArchLinux 教程

來源:互聯網
上載者:User

熟悉 Arch Linux 最好的方式就是經常使用、沒事就折騰。 我的 Linux 經驗並不算豐富,換 Arch 肯定會遇到很多新問題, 為了不耽誤正常使用,不能在正式工作用機上安裝(包括公司和家裡), 也沒有額外的機器,只好選擇將其安裝在 隨身碟或者移動硬碟上。

至於伺服器,我倒不敢也不推薦輕易更換成 Arch,別說案頭使用還沒有熟悉, 就是熟悉了,也沒有精力定期去升級伺服器。 所以伺服器還是用著現在的 Ubuntu 吧,比較省事,也算穩定。 即使是已經不再維護的舊發行版,官方也提供 舊發行版倉庫 。 倉庫中沒有個別新軟體,一般也能在網上找到安裝方法。 所以,在熟練駕馭 Arch,以及有足夠精力定期升級之前, 別亂折騰生產伺服器的好,謹慎選擇。

基本系統安裝

之前已經找了個 2G 隨身碟裝過了,精簡安裝,運行速度還是可觀的。 不過 隨身碟太小,裝到能夠基本使用的話,使用者可用空間只剩 100M 了, 所以只能留著用來應急。 另外作業系統長期在 隨身碟上啟動並執行話,還會影響快閃記憶體使用壽命, 所以這次用移動硬碟來安裝,準備較長期的使用。

這個移動硬碟是要拿著到處跑的,所以選擇 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% 的硬碟空間,作為備用?難怪我那個 隨身碟空間顯得很小。

    安裝基本系統

    家裡有無線路由,網路不用配置,已經自動連上了。

    編輯 /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 (隨身碟一定要作前 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

    現在的 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

        IME 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 介面)。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.