2,481 瀏覽數

自訂 Ubuntu Live CD

這一篇參考了 How to Customise the Ubuntu Desktop CD 的說明文件 https://help.ubuntu.com/community/LiveCDCustomization ,目前我遇到一個問題,目前我可以將 ubuntu Live CD 轉成 USB Disk http://benjr.tw/1550 或是 PXE http://benjr.tw/1138 來開機,但是要如何讓 ubuntu Live CD 開機後自動啟動某些程式了.方式如下:

  1. 下載 Ubuntu Desktop CD
    Ubuntu 的官方網站下載點 http://www.ubuntu.com/netbook/get-ubuntu/download
  2. root squashed file systems
    Ubuntu Live CD 開機後 root 檔案是存放在光碟目錄  /casper/filesystem.squashfs 下,所以我們要讓 ubuntu 開機後自動執行特定程式也很簡單,就是自行修改他的 root 檔案,在 Ubuntu Live CD 的 root 系統採用了 Squash file system 的方式打包,首先我們來檢查看看 ubuntu 的 root 檔案,的確是 Squash file system 的格式.

    [root@benjr casper]# file filesystem.squashfs
    filesystem.squashfs: Squashfs filesystem, little endian, version 4.0, 1289372852 bytes, 137319 inodes, blocksize: 41 bytes, created: Sun Dec 28 03:29:04 2008
    

    透過 -o loop 和 -t squashfs 的方式一樣可以掛載 ,不過很可惜的是 Squash file system 在 RHEL5 下不支援,我們可以透過 patch 核心的方式或是直接使用 RHEL6 以支援這種檔案格式的 mount.當然直接使用 ubuntu 也就可以了.

    [root@benjr casper]# mount -t squashfs -o loop filesystem.squashfs /mnt
    mount: wrong fs type, bad option, bad superblock on /dev/loop0,
    missing codepage or other error
    In some cases useful info is found in syslog – try
    dmesg | tail or so
    

    直接把檔案複製出來,後面會將需自動執行的程式檔案放進去,接下來再做一次的 Squash file system 打包即可.

    [root@benjr ~]# mkdir livecd
    [root@benjr ~]# cp -ap /mnt/* livecd
    
  3. 新增應用程式
    如果是執行檔可以直接放在 ubuntu Live CD 的根目錄下, Ubuntu Live CD 開機後預設是將光碟內容掛載在 /cdrom 目錄下.
  4. 自動執行
    ubuntu 採用了 FreeDesktop.org 的規格,FreeDesktop.org 的官方網站 http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html,他定義了基本的 Linux 下的 X Window System (X11) 以及其他 Unix-like 作業系統的桌面環境.主要是為了增加 free software desktop environments 的互通性,而這環境簡稱為 XDG(X Desktop Group).

    如果要用 x-window 開啟後自動啟動應用程式,請自行修改或是新增 .desktop 檔案.不知道是不是因為 Live CD 的關係我在 filesystem.squashfs 裡面找不到 Live CD 預設登入的使用者 ubuntu 的家目錄,所以我都是新增在 /etc/xdg/autostart 目錄裡.

    • System-wide autostart directories:

      1. /etc/xdg/autostart
      2. /usr/share/autostart
    • User specific autostart directories:

      1. ~/.config/autostart
      2. ~/.kde/share/autostart (KDE specific)
      3. ~/.kde/Autostart (KDE specific)

    我們來看看基本的 .desktop 檔案內容有哪些

    [root@benjr ~]# cat ~/.config/autostart/gnome-terminal.desktop
    [Desktop Entry]
    Type=Application
    Exec=gnome-terminal
    Hidden=false
    X-GNOME-Autostart-enabled=true
    Name[en_US]=test
    Name=test
    Comment[en_US]=xdg testing
    Comment=xdg testing
    
    • Type=Application
    • Exec=gnome-terminal
      最重要的就是指定要執行哪一個程式
    • Hidden=false
    • X-GNOME-Autostart-enabled=true
    • Name[en_US]=test
    • Name=test
    • Comment[en_US]=xdg testing
    • Comment=xdg testing

    這邊我只開啟一個 gnome-terminal ,我們可以在 Exec=gnome-terminal 後面接要執行的程式,如 : Exec=gnome-terminal –command="command 1"

  5. 打包 root squashed file systems
    修改完 filesystem.squashfs 的目錄與檔案等資料後再用 # mksquashfs source1 source2 … destination [options] 重新打包即可.

    [root@pxe ~]# mksquashfs livecd/ filesystem.squashfs
    

    參數請參考官方網頁說明 http://tldp.org/HOWTO/SquashFS-HOWTO/mksqoverview.html

5 個網友的想法 “自訂 Ubuntu Live CD

  1. 客製化 Ubuntu Live CD

    如果你是想要簡單的將 Ubuntu Live CD 做些客製化的設定,比如將 Ubuntu Live CD 直接修改成為中文介面,那建議使用 Ubuntu 所推薦的一個套件 "Ubuntu Customization Kit" 在 Ubuntu software center 都可以找到.

    關於 "Ubuntu Customization Kit" 可以參考下面網站連結說明:
    http://www.eagle.com.tw/joomla/index.php?view=article&catid=41:2009-12-21-05-10-39&id=70:-ubuntu-1004-&option=com_content&Itemid=60

  2. 剛開始使用 Ubuntu 以為他不像其他的 Linux

    剛開始使用 Ubuntu 以為他不像其他的 Linux Distribution 有

    1. /etc/profile
    2. /etc/profile.d
    3. ~/.bash_profile
    4. ~/.bashrc
    5. /etc/bashrc

    可以使用,所以採用了 XDG(X Desktop Group) 的 autostart ,不過事後想想 script 放在 /etc/profile 或是其他 login 會執行到的 scripts 應該都是沒問題的.

  3. 開機時就直接呼叫出 terminal

    開機時就直接呼叫出 terminal 程式,在runlevel 3跟5有差嗎?都已經有啟動x-window了 我是把script放在/etc/profile的最後一行,但在runlevel 3不會執行

  4. autostart 的命令直接接在 .desktop 設定檔裡即可

    如果要執行程式其實是不需透過 gnome-terminal 就可以將 autostart 的命令直接寫在 .desktop 設定檔裡的 Exec= 後面即可.

  5. gnome-terminal & xterm
    前面介紹使用 gnome-terminal 可以讓我們在開機時就直接呼叫出 terminal 程式,如果想要自動執行特定程式在這 terminal 上,可以加入參數  –command ,如 gnome-terminal –command="ksysguard" (這邊以叫出 KDE System Mointor 程式).

    [root@benjr ~]# gnome-terminal –command="ksysguard"
    

    但如果想要在 gnome-terminal 一次加入兩個程式來執行時似乎又不行,建議可以使用另外一支 terminal 程式 "xterm" ,方式也很簡單 xterm -e "command1 ; command 2" 即可.

    [root@benjr ~]# xterm -e "command1 ; command 2"
    

發表迴響