以下內容是參考了一些網路上文章
加上自己不斷嘗試與測試的記錄
如有錯誤,請多多指正 ^_^
(Part 1 remaster tc iso)
先了解如何重新打包(remaster) tc 的開機 iso
然後再來編輯符合自己需求的 rootfs
首先,下載 tinycore 5.x ios 檔
我選用 64bit 版的原因是家裡有幾台 8GB 電腦閑置中
如果用 32bit 雖然有打包好的 memcached 直接可以安裝
但是 32bit 系統只能抓到 4GB 啊,所以還是花點時間
用 64bit 系統來製作
載點:
http://distro.ibiblio.org/tinycorelinux/5.x/(host -> 就是我設定打包 tinycore 所使用的系統)
$ cd ~
$ mkdir tc
$ cd ~/tc
-----
$ sudo git init
-----
先把 iso 掛載起來,並將裡面的資料複製出來
$ sudo umount mnt
$ sudo mount -o loop,ro iso/org/CorePure64-5.1.iso ./mnt
$ ls mnt/boot
isolinux modules64.gz rootfs64.gz vmlinuz64
$ mkdir x64
$ cp -a mnt/boot x64
$ chmod -R +w x64
修改開機設定,tc 開機畫面預設等待30秒後自動開機,改成 1/3 秒
$ sudo vim x64/boot/isolinux/isolinux.cfg
label corepure64
kernel /boot/vmlinuz64
initrd /boot/rootfs64.gz,/boot/modules64.gz
append loglevel=3
timeout 300 => timeout 3
$
rootfs64.gz 其實就是開機後所看到的根目錄『/』裡的資料
modules64.gz 則是放一些 driver,如果想讓系統再小一點
也可以將 modules64.gz 解開刪除一些確定用不到的 driver
$ mkdir rootfs64 repo
$ cd rootfs64
$ zcat ../x64/boot/rootfs64.gz | sudo cpio -i -H newc -d
$ ls
bin dev etc home init lib mnt opt proc root run sbin sys tmp usr var
不要改變 rootfs64 裡面檔案與目錄的權限
在操作 rootfs64 時要注意不要在路徑最前面加『/』
那會變成是在操作 host 系統『/』下的東西 XD
-----
$ cd ~/tc
$ sudo git add rootfs64
$ sudo git commit -m "最原始的 rootfs64"
-----
不急著加東西進來,先試看看如何打包 rootfs 與 iso 檔
$ cd rootfs64
$ sudo vim opt/bootlocal.sh
#!/bin/sh
# put other system startup commands here
sleep 1
echo "Hello, World! ^_^"
$
opt/bootlocal.sh 開機時會自動被執行
加了一行 echo,在開機後顯示一行字串
將修改過的 rootfs64 重新打包並做成新的 iso
$ pwd
~/tc/rootfs64 <---- 注意現在所在的位置
$ ls -l ../x64/boot/rootfs64.gz
-rwxrwxr-x 1 yamaka yamaka 3334090 Jan 4 16:09 ../x64/boot/rootfs64.gz
$ find | sudo cpio -o -H newc | gzip -9 > ../x64/boot/rootfs64.gz
$ ls -l ../x64/boot/rootfs64.gz
-rwxrwxr-x 1 yamaka yamaka 3434839 Feb 10 15:04 ../x64/boot/rootfs64.gz
這是打包 rootfs,再來是 製作成可開機的 iso 檔
$ mkisofs -l -J -R -V TC-x64 -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -o ../iso/TC-x64-v1.0.1.iso ../x64
I: -input-charset not specified, using utf-8 (detected in locale settings)
Size of boot image is 4 sectors -> No emulation
93.83% done, estimate finish Mon Feb 10 15:08:38 2014
Total translation table size: 2048
Total rockridge attributes bytes: 1391
Total directory bytes: 4096
Path table size(bytes): 38
Max brk space used 23000
5334 extents written (10 MB)
$ ls -l ../iso/TC-x64.iso
-rw-r--r-- 1 yamaka yamaka 10924032 Feb 10 15:08 ../iso/TC-x64.iso
將這個 iso 掛到 vm 然後開機,開機過程不用再等待30秒或按 enter 鍵
開機進入系統後會看到畫面上顯示『Hello, World! ^_^』字串。
-----
$ scp ../iso/TC-x64-v1.0.1.iso yamaka@uYmk:~/tmp/.
$ cd ~/tc
$ sudo git add rootfs64
$ sudo git commit -m "rootfs64 開機後顯示『Hello, World! ^_^』字串"
-----
PS:
64bit 版的 iso 預設有兩個 gz 檔,如果想將這兩個合併,可以用下面指令
(合併 rootfs64.gz modules64.gz)
$ zcat *.gz | gzip > boot2/rootfs64.gz
然後要修改 x64/boot/isolinux/isolinux.cfg
initrd /boot/rootfs64.gz
刪除『,/boot/modules64.gz』