2011年5月9日 星期一

Arch Linux Live USB

一直很想弄個 Live USB Stick 來玩玩,但是試了 UNetbootin 和 Universal USB Installer,不管是 GNOME 3 Live CD、Ubuntu、Xubuntu、Mint 都沒辦法成功開機,不然就是畫面有問題,進入 X 後變成模糊畫面,燒到 CD 來測試卻是正常,後來又看到了 Debian Live Project,翻了文件發現要搞定一套可以用的系統得花上更多的時間,乾脆就直接把 Arch Linux 安裝到 USB Stick 上面,對 Arch Linux 比較熟悉,操作起來會比較順手一點,要保存資料和設定也很方便

OS: Arch Linux
USB Stick minimal disk space: 4G ( About 3.1G after GNOME 3 installed )

因為希望這隨身碟還是能拿來存一些資料,所以有另外切一個 vfat 的分割,而且這個分割的順序必須是第一個,Windows 才讀的到
fdisk -l
Disk /dev/sdd: 8032 MB, 8032092160 bytes
248 heads, 62 sectors/track, 1020 cylinders, total 15687680 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: 0xdacf2b24

Device Boot Start End Blocks Id System
/dev/sdd1 * 2048 1435647 716800 c W95 FAT32 (LBA)
/dev/sdd2 1435648 9824255 4194304 83 Linux
/dev/sdd3 9824256 15687679 2931712 83 Linux

系統安裝在 /dev/sdd2 ,type ext4,掛載的時候時候加上 noatime 這個 flag

這次是用 pacman -r /mnt/arch_live 的方式去安裝,要手動設定一些 /dev 的 nodes ,有點麻煩,不知道利用 CD Image 的 AIF 會不會比較簡單

裝完需要的 packages ,像 xorg-server、nvidia、gnome 後,要記得在 /etc/mkinitcpio.conf 裡的 HOOKS 加上 usb,因為 grub-install 失敗,所以是用手動安裝的方式,沒搞清楚設定檔,結果卡了一天都沒辦法進入系統...Orz

整體上來講,照著 wiki 上的指示安裝,再依 Beginner's Guide 做設定,應該是沒什麼大問題,另外網路頻寬也要夠,否則下個 pacman -Syu 大概會抓到睡著

常常用 sudo ,下指令和複製本機設定檔的時候要再三檢查路徑,搞錯的話就要跟太陽公公說再見了;還有之前沒試過 chroot ,每次 sudo mount proc, sys, dev 都有點怕打錯,也有寫個 bash script 來幫忙,倒是 umount 還要自己 key,還要再研究一下怎麼寫,最怕的就是沒辦法 umount ,就要回想剛剛是不是下了什麼指令動到 /dev 下面的東西...

碰到卡比較久的問題:
  1. GRUB 出現 Error 15: File not found:
    問題是在 menu.lst 的設定,當初安裝 GRUB 的時候是安裝到 MBR,設定的 root 是 (hd0,0) ,但是我的系統是安裝在第二個分割,所以必須要改成 (hd0,1);由於 /boot 沒有獨立一個分割區給他,所以 kernel 和 initrd 前面必須加上 /boot/ ,GRUB 才知道要到 boot 這個資料夾下尋找 kernel image
    ## /boot/grub/menu.lst
    # (0) Arch Linux
    title Arch Linux [/boot/vmlinuz26]
    root (hd0,1)
    kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/544dccdf-2aaf-4843-973c-f04c305f5e1f ro vga=792
    initrd /boot/kernel26.img

  2. 開機後無法進入 X:
    錯誤訊息有好幾個,條列如下:
    # 開機以後進入 X ,畫面閃了幾下出現類似
    gdm-binary[3684]: WARNING: GdmDisplay: display lasted 0,858447 seconds
    gdm-binary[3684]: WARNING: GdmDisplay: display lasted 0,864611 seconds
    gdm-binary[3684]: WARNING: GdmLocalDisplayFactory: maximum number of X display failures reached: check X server log for errors
    # 進 console 裡下 `startx` 則是出現以下錯誤
    (EE) USB USB Keyboard failed to initialize for relative axes.
    # 在 Xorg.0.log 除了上面鍵盤的問題之外還有一些其他的錯誤訊息
    (WW) Open ACPI failed (/var/run/acpid.socket) (No such file or directory)
    (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/X11/100dpi/".
    Entry deleted from font path.
    (Run 'mkfontdir' on "/usr/share/fonts/X11/100dpi/").

    ### 解決方法:不太確定是哪個方式解決的,只好把做過的修改一樣樣列出來 ###
    # 1.在 /etc/rc.conf 的 DAEMONS 中加入 hal 和 acpid
    DAEMONS=(syslog-ng dbus hal acpid @network netfs crond @openntpd @alsa)
    # 2.依錯誤訊息指示,在 /usr/share/fonts/X11/... 中執行 mkfontdir
    # 另外也安裝了一些字型像 ttf-fireflysung, wqy-zenhei, ttf-dejavu 之類...
    # 3.Reinstall xorg-server,gdm,並檢查 ~/.xinitrc 是不是有加上
    exec ck-launch-session gnome-session

  3. 網際網路無法連線:
    區網是使用 DHCP,一開機就會啟動,網際網路連線則是使用 PPPoE 手動啟用
    ping 區網上的電腦沒有問題,但是對外像 www.google.com, 168.95.1.1 都 ping 不到,後來才想到可能是 route table 的問題
    # 預設的 gateway 是 eth0 ,照理說 PPPoE 啟動應該會把預設改成 ppp0 才對
    [left]$ route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    h254.s98.ts.hin * 255.255.255.255 UH 0 0 0 ppp0
    192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
    default * 0.0.0.0 U 0 0 0 eth0

    # 手動更改 gateway 就正常了
    [left]$ sudo route del default
    [left]$ sudo route add default ppp0

    # 測試確定是 route 的問題的話,可以在 /etc/ppp/ 下面新增名為 ip-pre-up 的 script
    # 這樣 pppd 在啟動的時候就會去執行它,內容如下 ( 記得要 chmod +x 才能執行)

    [left]$ cat /etc/ppp/ip-pre-up
    #! /bin/sh
    /sbin/route del default

    [left]$ sudo chmod +x /etc/ppp/ip-preup

在 bitbucket 上面開了 repository 放些設定檔,有興趣的可以參考看看。


Reference on Arch Linux Wiki:
Installing Arch Linux on a USB key
Install from Existing Linux
Change Root
Tips for Minimizing SSD Read/Writes
Beginners' Guide

沒有留言: