wiki:jazz/08-09-25

2008-09-25

  • [課程] DRBL/Clonezilla 進階課程 - http://drbl.nchc.org.tw/advanced/
    • [小問題] 顯示卡自動偵測到解析度是 1280x768 但是接到 4:3 的螢幕
      00:02.0 VGA compatible controller: Intel Corporation 82Q963/Q965 Integrated Graphics Controller (rev 02)
      
  • Ubuntu 8.04 常見 DRBL 安裝問題
    • 目前暫時只能選(2)與主機相同,(0)跟(1)都會出現以下錯誤訊息。
    • 錯字修改 patch 檔
      • /opt/drbl/sbin/drblsrv

        old new  
        34403440    if [ $rc_get_kernel -gt 0 ]; then
        34413441      [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
        34423442      echo "$latest_drbl_kernel_in_rep can NOT be downloaded!!! Something went wrong!"
        3443       echo "Maybe you should check /etc/sources.list or remove the unnecessary kernel block in /var/lib/dpkg/status so that "apt-cache pkgnames $kernel_img_name" can get the downloadable kernel! Then try to run this program again."
         3443      echo "Maybe you should check /etc/apt/sources.list or remove the unnecessary kernel block in /var/lib/dpkg/status so that "apt-cache pkgnames $kernel_img_name" can get the downloadable kernel! Then try to run this program again."
        34443444      echo "Program terminated!!!"
        34453445      [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
        34463446      exit 1
         
        40144014      if [ $RC -gt 0 ]; then
        40154015        [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
        40164016        echo "$latest_drbl_kernel_in_rep can NOT be downloaded!!! Something went wrong!"
        4017         echo "Maybe you should check /etc/sources.list so that "apt-cache pkgnames $kernel_img_name" can get the downloadable kernel! Then try to run this program again."
         4017        echo "Maybe you should check /etc/apt/sources.list so that "apt-cache pkgnames $kernel_img_name" can get the downloadable kernel! Then try to run this program again."
        40184018        echo "Program terminated!!!"
        40194019        [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
        40204020        exit 1
  • [備忘] Ubuntu 沒有 root 預設密碼,雖然有 sudo ,但 sudo 有兩個的困擾:
    • (1) 時間問題(sudo timeout): NTP更新或手動改時間的時候會造成
    • (2) hostname 問題: 如果有改 hostname, sudo 也會失效
  • [小問題] Windows XP 是 FAT32 格式必須轉換到 NTFS 格式
    convert d: /FS:NTFS 
    convert c: /FS:NTFS
    
  • [備忘] 本機加完使用者之後,必須手動跑 YP 的帳號更新程序
    drbladm@drbl-server:~$ sudo make -C /var/yp/
    
  • [備忘] 可以用 mknic-nbi 指令來更新 /tftpboot/nbi_img/ 目錄中的 Netboot Image
    # /opt/drbl/sbin/mknic-nbi
    
    • [密技] 如果想要自己加東西到 pxe-initrd 的 initial RAMDisk 的話,可以改 /usr/lib/mkpxeinitrd-net/initrd-skel 的內容,例如想要加 NFSv4 或者把 Lustre、AoE、iSCSI 的網路硬碟,可以改 /usr/lib/mkpxeinitrd-net/initrd-skel/sbin/udhcpc-post 這些程序。
  • [備忘] 為什麼 DRBL Client 的 /root 與 DRBL Server 的 /root 是各自獨立的呢?
    • 這個問題我先前也問過 Steven,最主要是因為 YP 沒辦法管理 root 帳號,此外獨立也可以增加系統安全性。因此如果用 DRBL 佈署叢集電腦,必須用 scp 把 .ssh/id_rsa.pub 拷貝到每一台的 .ssh/authorized_keys。(陽明叢集裝機的經驗談)
    • DRBL Client 的 /root : /tftpboot/nodes/$IP/root
  • [備忘] dcs re-deploy 就是跑 drblpush -c /etc/drbl/drblpush.conf
  • [備忘] DRBL 的更新原則: 如果是 df 顯示出來的目錄讀寫權限是 RW,請重新跑 drblpush (re-deploy) 或用 drbl-cp-host 強制複製到每一台 DRBL Client。drblpush 更新方法包含 rsync 跟直接覆蓋兩種。
  • [備忘] 在 Linux 底下查 BIOS 裡面的 UUID 可以用 dmidecode 套件的 dmidecode 指令,這個 UUID 就可以給 /tftpboot/nbi_img/pxelinux.cfg/ 指定特定機器的 pxelinux 設定用
  • [小技巧] 要查 TFTP Server 的互動要求,可以把 /etc/default/tftpd-hpa 裡的 OPTIONS 加上 -v 參數
    • etc/default/tftpd-hpa

       
      2  OPTIONS="-l -s /tftpboot/nbi_img"
       2 OPTIONS="-l -v -v -v -s /tftpboot/nbi_img"
    • 打開 logging verbosity 之後,重新啟動
      # /etc/init.d/tftpd-hpa restart
      
    • 從/var/log/daemon.log 可以看到 DRBL Client 送過來的 UUID
  • [小技巧] 把 /etc/dhcp3/dhcpd.conf 裡的 log 設定前的 mark 拿掉
    #!diff
    --- /etc/dhcp3/dhcpd.conf
    +++ /etc/dhcp3/dhcpd.conf
    @@ -37,9 +37,9 @@
    
    - #log(info, concat("Client ",
    - #        binary-to-ascii(16, 8, ":", substring(hardware, 1, 6)),
    - #        " requests ",
    - #        binary-to-ascii(16, 8, ":", option dhcp-parameter-request-list),
    - #        " - ",
    - #        pick-first-value(option vendor-class-identifier, "no vendor-id"),
    - #        " - ",
    - #        pick-first-value(option dhcp-client-identifier, "no dhcp-client-id"))
    - #   );
    + log(info, concat("Client ",
    +         binary-to-ascii(16, 8, ":", substring(hardware, 1, 6)),
    +         " requests ",
    +         binary-to-ascii(16, 8, ":", option dhcp-parameter-request-list),
    +         " - ",
    +         pick-first-value(option vendor-class-identifier, "no vendor-id"),
    +         " - ",
    +         pick-first-value(option dhcp-client-identifier, "no dhcp-client-id"))
    +    );
    
    • 打開 dhcpd log 之後,重新啟動 dhcpd
      # /etc/init.d/dhcp3-server restart
      
    • 就可以在 /var/log/daemon.log 裡看到 DHCP Server 與 DHCP Client 互動的過程
      Sep 25 13:04:51 drbl-server dhcpd: DHCPDISCOVER from 00:0f:fe:5e:4b:f8 via eth1
      Sep 25 13:04:52 drbl-server dhcpd: DHCPOFFER on 192.168.100.3 to 00:0f:fe:5e:4b:f8 via eth1
      Sep 25 13:04:53 drbl-server dhcpd: DHCPREQUEST for 192.168.100.3 (192.168.100.254) from 00:0f:fe:5e:4b:f8 via eth1
      Sep 25 13:04:53 drbl-server dhcpd: DHCPACK on 192.168.100.3 to 00:0f:fe:5e:4b:f8 via eth1
      Sep 25 13:04:53 drbl-server in.tftpd[19982]: RRQ from 192.168.100.3 filename pxelinux.0 
      Sep 25 13:04:53 drbl-server in.tftpd[19982]: tftp: client does not accept options 
      Sep 25 13:04:53 drbl-server in.tftpd[19983]: RRQ from 192.168.100.3 filename pxelinux.0 
      Sep 25 13:04:53 drbl-server in.tftpd[19984]: RRQ from 192.168.100.3 filename pxelinux.cfg/de568b5e-d92a-dc11-bbda-fe5e4bf8000f 
      Sep 25 13:04:53 drbl-server in.tftpd[19984]: sending NAK (1, File not found) to 192.168.100.3
      Sep 25 13:04:53 drbl-server in.tftpd[19985]: RRQ from 192.168.100.3 filename pxelinux.cfg/01-00-0f-fe-5e-4b-f8 
      Sep 25 13:04:53 drbl-server in.tftpd[19985]: sending NAK (1, File not found) to 192.168.100.3
      Sep 25 13:04:53 drbl-server in.tftpd[19986]: RRQ from 192.168.100.3 filename pxelinux.cfg/C0A86403 
      Sep 25 13:04:53 drbl-server in.tftpd[19986]: sending NAK (1, File not found) to 192.168.100.3
      Sep 25 13:04:53 drbl-server in.tftpd[19987]: RRQ from 192.168.100.3 filename pxelinux.cfg/C0A8640 
      Sep 25 13:04:53 drbl-server in.tftpd[19987]: sending NAK (1, File not found) to 192.168.100.3
      Sep 25 13:04:53 drbl-server in.tftpd[19988]: RRQ from 192.168.100.3 filename pxelinux.cfg/C0A864 
      Sep 25 13:04:53 drbl-server in.tftpd[19988]: sending NAK (1, File not found) to 192.168.100.3
      Sep 25 13:04:53 drbl-server in.tftpd[19989]: RRQ from 192.168.100.3 filename pxelinux.cfg/C0A86 
      Sep 25 13:04:53 drbl-server in.tftpd[19989]: sending NAK (1, File not found) to 192.168.100.3
      Sep 25 13:04:53 drbl-server in.tftpd[19990]: RRQ from 192.168.100.3 filename pxelinux.cfg/C0A8 
      Sep 25 13:04:53 drbl-server in.tftpd[19990]: sending NAK (1, File not found) to 192.168.100.3
      Sep 25 13:04:53 drbl-server in.tftpd[19991]: RRQ from 192.168.100.3 filename pxelinux.cfg/C0A 
      Sep 25 13:04:53 drbl-server in.tftpd[19991]: sending NAK (1, File not found) to 192.168.100.3
      Sep 25 13:04:53 drbl-server in.tftpd[19992]: RRQ from 192.168.100.3 filename pxelinux.cfg/C0 
      Sep 25 13:04:53 drbl-server in.tftpd[19992]: sending NAK (1, File not found) to 192.168.100.3
      Sep 25 13:04:53 drbl-server in.tftpd[19993]: RRQ from 192.168.100.3 filename pxelinux.cfg/C 
      Sep 25 13:04:53 drbl-server in.tftpd[19993]: sending NAK (1, File not found) to 192.168.100.3
      Sep 25 13:04:53 drbl-server in.tftpd[19994]: RRQ from 192.168.100.3 filename pxelinux.cfg/default 
      Sep 25 13:04:53 drbl-server in.tftpd[19995]: RRQ from 192.168.100.3 filename menu.c32 
      Sep 25 13:04:53 drbl-server in.tftpd[19996]: RRQ from 192.168.100.3 filename pxelinux.cfg/default 
      Sep 25 13:05:12 drbl-server in.tftpd[20001]: RRQ from 192.168.100.3 filename vmlinuz-pxe 
      Sep 25 13:05:12 drbl-server in.tftpd[20002]: RRQ from 192.168.100.3 filename initrd-pxe.img 
      
  • [備忘] DRBL 群組的作法: 寫 /etc/drbl/IP-grp-* 或 /etc/drbl/IP-mac-*
    root@drbl-server:~# cat /etc/drbl/IP-grp-1 
    192.168.100.1
    192.168.100.2
    192.168.100.3
    
    • 如果用 dcs 把群組設定成 FreeDOS 開機或其他預設模式,就會在 /tftpboot/nbi_img/pxelinux.cfg 目錄下看到對應的獨立設定檔跑出來
      root@drbl-server:/tftpboot/nbi_img/pxelinux.cfg# ls -al
      總計 28
      drwxr-xr-x 2 root root 4096 2008-09-25 14:39 .
      drwxr-xr-x 3 root root 4096 2008-09-25 10:31 ..
      -rw-r--r-- 1 root root 3829 2008-09-25 14:39 C0A86401
      -rw-r--r-- 1 root root 3829 2008-09-25 14:39 C0A86402
      -rw-r--r-- 1 root root 3829 2008-09-25 14:39 C0A86403
      -rw-r--r-- 1 root root 3831 2008-09-25 14:34 default
      -rw-r--r-- 1 root root 3829 2008-09-25 14:39 default_skeleton
      
  • [備忘] 用 DRBL 來製作 GNU/Linux 網路安裝 USB 隨身碟
    • 首先檢查 USB 隨身碟代號,可以從 dmesg , /proc/partitions 得知,在 Ubuntu 8.04 會自動 mount 到 /media/USB
      root@drbl-server:~# cat /proc/partitions 
      major minor  #blocks  name
         8    16     253440 sdb
         8    17     248976 sdb1
      root@drbl-server:~# mount
      /dev/sdb1 on /media/USB type vfat (rw,nosuid,nodev,uhelper=hal,shortname=mixed,uid=1000,utf8,umask=077,flush)
      
    • 執行 drbl-syslinux-netinstall 以後跑 syslinux 更新 MBR 的部分理論上就可以用這個 USB 拇指碟開機了
      root@drbl-server:~# /opt/drbl/sbin/drbl-syslinux-netinstall
      root@drbl-server:~# unzip linux-netinstall-20080925.zip -d /media/USB/
      root@drbl-server:~# which syslinux
      /usr/bin/syslinux
      root@drbl-server:~# umount /media/USB/
      root@drbl-server:~# syslinux -s /dev/sdb1
      root@drbl-server:~# cat /usr/lib/syslinux/mbr.bin > /dev/sdb
      
  • [備忘] Ubuntu 8.04 安裝 VirtualBox 的程序(安裝 gcin 跟 VirtualBox,並設定 TUN 內部網路)
    drbladm@drbl-server:~$ sudo apt-get update; sudo apt-get install gcin virtualbox-ose virtualbox-ose-modules-`uname -r`
    drbladm@drbl-server:~$ im-switch -s gcin
    drbladm@drbl-server:~$ sudo /etc/init.d/vboxdrv restart
    drbladm@drbl-server:~$ sudo adduser `whoami` vboxusers 
    drbladm@drbl-server:~$ wget http://drbl.nchc.org.tw/advanced/01_DRBL/utils/config-tun.sh
    drbladm@drbl-server:~$ sudo apt-get install uml-utilities; sudo chmod +x config-tun.sh; sudo ./config-tun.sh start
    
  • [備忘] 用 VirtualBox 執行 Clonezilla Live CD 並掛載 VDI 格式的虛擬磁碟,

  • [無聊亂測] 產生 GRUB Bootable CD Iso 檔案
    • 目前查資料的結果只有 GRUB 可以讀取 ISO 格式的檔案來開機,所以如果要用 PXE 開 ISO 的話,旁門左道是 PXELinux 去帶 GRUB 再去帶 ISO 檔開機。
    • 參考: GRUB 官方文件
      root@drbl-xen-srv:~# mkdir iso
      root@drbl-xen-srv:~# mkdir -p iso/boot/grub
      root@drbl-xen-srv:~# cp /usr/lib/grub/i386-pc/stage2_eltorito iso/boot/grub/
      

Last modified 16 years ago Last modified on Feb 3, 2009, 2:26:51 AM

Attachments (4)

Download all attachments as: .zip