Pages

搜尋此網誌

2013年12月24日 星期二

tips: customize live cd

tips: customize live cd

最近在研究如何製作 live cd 也因為這項研究,讓我更熟悉 linux 的架構,發現一些有用的知識,與 linux 運作的設定,這篇算是筆記,陸續在新增

  • /etc/skel

    在這資料夾下面的檔案,只要當新增使用者時,就會複製一份給新增使用者,當你需要有一些預設設定時很好用,比如說:chrome 要有預設的首頁以及捷徑,還有輸入法預設有哪些等。


  • /etc/xdg/autostart/

    global 自動執行,放在底下的 *.desktop 將會自動執行


  • ~/.config/autostart/

    local 自動執行,同 /etc/xdg/autostart/,可搭配 /etc/skel 服用,如果你有每個使用者登入就要執行某些程式的需求



  • live cd 啟動後,沒有 gdm 的情況下,自動登入 xwindow

    well,這是特定的議題,在查相關資料時,一度認為要用 /etc/rc.local 來解,但後來發現不適用,因為他是用 root,會造成 chrome 無法開啟,故我需要用一般 user 登入,需要將啟動判斷式改放在 .bash_profile

    加入下列語法;

if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty1 ]; then
    startx
fi

相關說明可以看這:bash 環境設定檔


  • locale-gen zh_TW.UTF-8

    改變系統語系指令,範例為變更為繁體中文環境


  • apt-get --yes autoremove

    製作 live cd 對於容量要很講究,故要將一些沒有相依不需要的套件進行移除,就可以使用這個指令

  • 產生 live cd 範例 makefile

    下面是我做出來的 makefile 有需要的就拿去參考吧!

LIVECD_HOME=~/livecd
LIVECD_TMP=/tmp/livecd

ORG_ISO_URL=http://www.ubuntu-mini-remix.org/download/12.10
ORG_ISO_NAME=ubuntu-mini-remix-12.10-i386.iso

CREATE_ISO_NAME=Ubuntu-cusmize-livecd.iso

DEPLOY_LOC=~/
DEPLOY_REMOTE=user@ip:~/


all: clean

clean: 
    - sudo umount ${ORG_ISO_NAME}
	- sudo umount ${LIVECD_TMP}/casper/filesystem.squashfs
    - sudo umount ${LIVECD_HOME}/custom/proc/
	- sudo umount ${LIVECD_HOME}/custom/sys/
    sudo rm -rf ${LIVECD_HOME}
init: clean
	wget -nc ${ORG_ISO_URL}/${ORG_ISO_NAME}
	sudo apt-get install squashfs-tools dchroot
	- mkdir ${LIVECD_TMP}
    - sudo mount -o loop ${ORG_ISO_NAME} ${LIVECD_TMP}
    - mkdir -p ${LIVECD_HOME}/cd
	rsync --exclude=/casper/filesystem.squashfs -a ${LIVECD_TMP}/ ${LIVECD_HOME}/cd
	- mkdir ${LIVECD_HOME}/squashfs  ${LIVECD_HOME}/custom
	sudo modprobe squashfs
	- sudo mount -t squashfs -o loop ${LIVECD_TMP}/casper/filesystem.squashfs ${LIVECD_HOME}/squashfs/
	sudo cp -a ${LIVECD_HOME}/squashfs/* ${LIVECD_HOME}/custom
	sudo cp /etc/resolv.conf /etc/hosts ${LIVECD_HOME}/custom/etc/   


install: init

    # copy install script 在 install.sh 寫入你需要安裝的套件
    sudo chmod +x install.sh
    sudo cp install.sh ${LIVECD_HOME}/custom/home/

    sudo chroot ${LIVECD_HOME}/custom /home/./install.sh

build: install
    chmod +w ${LIVECD_HOME}/cd/casper/filesystem.manifest
	sudo chroot ${LIVECD_HOME}/custom dpkg-query -W --showformat='${Package} ${Version}\n' > ${LIVECD_HOME}/cd/casper/filesystem.manifest
	sudo cp ${LIVECD_HOME}/cd/casper/filesystem.manifest ${LIVECD_HOME}/cd/casper/filesystem.manifest-desktop
	sudo mksquashfs ${LIVECD_HOME}/custom ${LIVECD_HOME}/cd/casper/filesystem.squashfs
	cd ${LIVECD_HOME}/cd ;sudo mkisofs -r -V "Ubuntu-cusmize-livecd" -b isolinux/isolinux.bin -c isolinux/boot.cat -cache-inodes -J -l -no-emul-boot -boot-load-size 4 -boot-info-table -o ~/${CREATE_ISO_NAME} .

deploy: build
    scp ~/${CREATE_ISO_NAME} ${DEPLOY_REMOTE}

deploy_loc: build
    cp ~/${CREATE_ISO_NAME} ${DEPLOY_LOC}

test:
    qemu-system-i386 -cdrom ~/${CREATE_ISO_NAME} -boot d -m 512

其中 install.sh:

#!/bin/bash

mount -t proc none /proc/
mount -t sysfs none /sys/
export HOME=/root

locale-gen zh_TW.UTF-8
update-locale LANG=zh_TW.UTF-8

sudo apt-get update

sudo apt-get --yes install lxde
sudo apt-get --yes install language-support-zh language-pack-gnome-zh* ttf-arphic-*

wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb

sudo dpkg -i ./google-chrome*.deb
sudo apt-get --yes -f install

rm google-chrome-stable_current_i386.deb

sudo apt-get --yes install Leafpad
sudo apt-get --yes install xinit
sudo apt-get --yes install ibus
sudo apt-get --yes install ibus-chewing
sudo apt-get --yes install lxterminal
sudo apt-get --yes install ttf-arphic-uming


sudo apt-get --yes purge xscreensaver

apt-get --yes autoremove
apt-get clean
rm -rf /tmp/*
rm -f /etc/hosts /etc/resolv.conf
umount /proc/
umount /sys/
exit

話說:最近越來越 linux 了~

張貼留言