這一篇參考了 How to Customise the Ubuntu Desktop CD 的說明文件 https://help.ubuntu.com/community/LiveCDCustomization ,目前我遇到一個問題,目前我可以將 ubuntu Live CD 轉成 USB Disk https://benjr.tw/1550 或是 PXE https://benjr.tw/1138 來開機,但是要如何讓 ubuntu Live CD 開機後自動啟動某些程式了.方式如下:
-
下載 Ubuntu Desktop CD
Ubuntu 的官方網站下載點 http://www.ubuntu.com/netbook/get-ubuntu/download -
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
-
新增應用程式
如果是執行檔可以直接放在 ubuntu Live CD 的根目錄下, Ubuntu Live CD 開機後預設是將光碟內容掛載在 /cdrom 目錄下. -
自動執行
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:
- /etc/xdg/autostart
- /usr/share/autostart
-
User specific autostart directories:
- ~/.config/autostart
- ~/.kde/share/autostart (KDE specific)
- ~/.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"
-
System-wide autostart directories:
-
打包 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
客製化 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
剛開始使用 Ubuntu 以為他不像其他的 Linux
剛開始使用 Ubuntu 以為他不像其他的 Linux Distribution 有
可以使用,所以採用了 XDG(X Desktop Group) 的 autostart ,不過事後想想 script 放在 /etc/profile 或是其他 login 會執行到的 scripts 應該都是沒問題的.
開機時就直接呼叫出 terminal
開機時就直接呼叫出 terminal 程式,在runlevel 3跟5有差嗎?都已經有啟動x-window了 我是把script放在/etc/profile的最後一行,但在runlevel 3不會執行
autostart 的命令直接接在 .desktop 設定檔裡即可
如果要執行程式其實是不需透過 gnome-terminal 就可以將 autostart 的命令直接寫在 .desktop 設定檔裡的 Exec= 後面即可.
gnome-terminal & xterm
前面介紹使用 gnome-terminal 可以讓我們在開機時就直接呼叫出 terminal 程式,如果想要自動執行特定程式在這 terminal 上,可以加入參數 –command ,如 gnome-terminal –command="ksysguard" (這邊以叫出 KDE System Mointor 程式).
但如果想要在 gnome-terminal 一次加入兩個程式來執行時似乎又不行,建議可以使用另外一支 terminal 程式 "xterm" ,方式也很簡單 xterm -e "command1 ; command 2" 即可.