2011年9月1日 星期四

利用 archiso 和 aif 搭配 chroot 安裝 Arch Linux


因為硬碟出問題,系統碟在 error.log 裡面跳了一堆 UNC error,跑 S.M.A.R.T. 測試也是 read failure,用 Live USB 撐了幾天,把重要資料備 份以後,買了兩個大容量的隨身碟來當外接硬碟使用(7年前的電腦,要更換零件不如換整台,預算有限,就先湊合著用,用久了有感情也是一個原因 ^^),主要系統還是灌在硬碟上,/var 和 /home 及一些暫存的資料就丟到隨身碟上。


因為要重灌,就順便試試之前在 Arch Wiki 上看到用 archiso 配上 chroot 安裝的方法,沒想到 8/19 出了新的 image,wiki 的內容已經不能適用,花了將近一天測試順便寫了個 script,丟在之前開的 repository 內( utils/unarchfs.sh ),改天有空再更新 Arch Wiki。

新的 iso 包含了 5 個檔案,mount archiso 後再一一解壓縮或 mount 到 chroot 目錄內,步驟簡單描述如下,因為記憶體有 1.5G,所以就全部都丟到 /tmp/archinstall 下面


# mount archlinux iso

mkdir -pv /tmp/archinstall/image
mount -o loop archlinux-2011.08.19-core-i686.iso /tmp/archinstall/image

# create directory for chroot
mkdir -pv /tmp/archinstall/archlinux

# start to extract
cd /tmp/archinstall/image/arch/i686/

# root-image
unsquashfs -dest /tmp/archinstall/root-image root-image.fs.sfs
mount -t ext4 /tmp/archinstall/root-image/root-image.fs /tmp/archinstall/archlinux

# create directories in chroot env for other fs to mount
mkdir -pv /tmp/archinstall/archlinux/lib/modules
mkdir -pv /tmp/archinstall/archlinux/usr/share
mkdir -pv /tmp/archinstall/archlinux/repo/core/{i686,any}

# lib-modules
unsquashfs -dest /tmp/archinstall/lib-modules lib-modules.fs.sfs
mount -t ext4 /tmp/archinstall/lib-modules/lib-modules.fs /tmp/archinstall/archlinux/lib/modules

# repo-core-i686
mount -o loop -t squashfs repo-core-i686.sfs /tmp/archinstall/archlinux/repo/core/i686

cd /tmp/archinstall/image/arch/any/

# usr-share
unsquashfs -dest /tmp/archinstall/usr-share usr-share.fs.sfs
mount -t ext4 /tmp/archinstall/usr-share/usr-share.fs /tmp/archinstall/archlinux/usr/share

# repo-core-any
mount -o loop -t squashfs repo-core-any.sfs /tmp/archinstall/archlinux/repo/core/any

接著 cd /tmp/archinstall/archlinux/ ,再進入 chroot 下 aif -p interactive 就可以開始安裝,比起用 pacman 安裝要方便許多,不必自己準備 /dev 下的檔案, aif 也會幫忙跑 mkinitcpio、locale-gen、設定 Grub ……等,十分輕鬆,不過有一點要注意的是安裝完後要在 chroot 環境內把 aif 自動掛載的磁碟卸載掉,否則離開 chroot 後會發現沒辦法卸載 root-image,可是又找不出有其他程式使用這個檔案。

目前系統已使用快一個禮拜,/home 掛在 USB 3.0 的隨身碟上插 2.0 的接口,傳大檔可以跑到 15 mb/s,只是瀏覽器的 cache 要設到記憶體下(預設丟在 /home/$USER 內),否則開新分頁會很卡,大概是頻繁寫入小檔案,寫到隨身碟效率變差。

此外還有遇到 gdm 的小問題:舊系統是用 xfce 4.8 配上 .xinitrc 來設定 gcin ,但是換成 gdm 來登入(沒安裝 gnome)就沒辦法搞定,會把全部的 locale 改成 zh_TW.UTF-8,我只是想用中文輸入法,不想全部介面都變成中文,搞到最後還是換回 xdm。

另外困擾我兩天的問題是字型,隨身碟系統上是用 Gnome 3,切回 xfce 後預設字型完全不同,讓我眼睛痛了整整一天,平常應該要定期紀錄常用字型,晚點要再寫一篇來紀錄目前使用的字型。

Reference :
Arch Wiki - Install_from_Existing_Linux
archiso - README


沒有留言: