GIGOG มาแล้วจ้า

สืบเนื่องมาจากได้คุยกับคุณอนุชิตหลายเรื่องเกี่ยวกับความฝันในการทำ Opensource ให้ปลุกกระแสในไทยหน่อยคุณอนุชิตก็เลยให้โจทย์มาเกี่ยวกับอยากทำ Linux Live CD ผมก็อยากได้เหมือนกันก็เลยพยายามหาข้อมูลเพื่อมาทำการตอบโจทย์เหล่า นั้น พูดง่าย ๆ สนองความอยากรู้ของผมด้วย ผมก็เลยหาข้อมูลเป็นการยกใหญ่ พอดีผมมี Kbuntu Linux ที่เป็น Distribution ต่ออีกทีจาก ubuntu ผมก็เลยลองหาข้อมูลการทำ LIVE CD ก็เลยเมามันไม่ได้ทำอะไรมา 2 วันเต็ม ๆ นอกจาก Kbuntu (แล้วหน้าที่การงานก็เริ่มมืดมน555) คำตอบที่ผมได้ผมสามารถยัด Package ทั้ง Binary และ .deb ที่เป็น format ของ debian ผมได้ใน Live CD ของผมอย่างลงตัว (3 วันกว่าแนะเล่นเอาปวดหัวเหมือนกัน) ผมยัด xampp ใส่ให้คุณอนุชิตตามความต้องการแล้ว พร้อมกันนี้คุณอนุชิตยังช่วยผมเขียน script สำหรับ run xampp อัตโนมัติใน Live CD ของผมด้วย อืมมาเข้าเรื่องการทำ Live CD จาก Kbuntu เลยครับผม

ตอนนี้ก็ศึกษาขั้นตอนจนสามารถทำการ remaster และเพิ่ม package ได้แล้วโดยมีขั้นตอนต่าง ๆ ดังนี้
1. คัดลอก LiveCD
ทำการ download iso ของ kbuntu-desktop-i386.iso หรือไม่ก็ copy image เป็น iso จากแผ่นครับผมแต่ต้องใช้ Linux ทำนะครับผม ไม่งั้นได้ files ไม่ครบครับผม กำหนดค่าไดเรคทอรีที่จะใช้ในการพัฒนา 
ผมสร้าง Direcotory remaster ใน home ครับผม
 
(export work=~/remaster)

#mkdir /home/remaster
#export work= /home/remaster

จากนั้นทำการ mount และคัดลอกข้้อมูลใน iso ลงในไดเรคทอรี่ที่ใช้พัฒนา

#mkdir $work/cdrom-org
#mount -o loop kbuntu-desktop-i386.iso $work/cdrom-org
#mkdir $work/cdrom-cust
#cp -a $work/cdrom-org $work/cdrom-cust

2. Mount compressed filesystem
ไฟล์ระบบของ ubuntu livecd นั้น ถูกบีบอัดด้วย squashfs

#mkdir $work/filesystem.org
#mount -t squashfs -o loop $work/cdrom-org/casper/filesystem.squashfs $work/filesystem.org

3. สร้าง image สำหรับใช้ในการปรับแต่ง compress filesystem
ขั้นตอนนี้ต้องการเนื้อที่ว่างประมาณ 2 GB ในการสร้างไฟล์ image

#dd if=/dev/zero of=$work/filesystem.img bs=1M count=2147
#mke2fs $work/filesystem.img
#mkdir $work/filesystem.cust
#mount -o loop $work/filesystem.img $work/filesystem.cust

ทำการคัดลอกไฟล์ระบบเดิมมายังไฟล์ image ที่เราสร้างขึ้นมาใหม่

#cp -af $work/filesystem.org/. $work/filesystem.cust
#umount $work/filesystem.org

4. Chroot เพื่อทำการแก้ไขระบบต่าง ๆ

#cp /etc/resolv.conf $work/filesystem.cust/etc/
#mount -t proc -o bind /proc $work/filesystem.cust/proc
#chroot $work/filesystem.cust /bin/bash

ขณะนี้เราอยู่ในระบบที่จะต้องการแก้ไข ในตัวอย่างนี้ผมจะทำการติดตั้ง ktips

#apt-get update
#apt-get install ktips
#apt-get clean
#exit

ขณะนี้ได้ออกจากระบบที่ทำการแก้ไขแล้ว

#umount $work/filesystem.cust/proc
#rm $work/filesystem.cust/etc/resolv.conf

5. แก้ไขเสร็จแล้ว
ต้องอัพเดทรายการ package และทำการ ลบข้อมูลที่ไม่ได้ใช้ออกจากระบบ
#
chroot $work/filesystem.cust dpkg-query -W --showformat='${Package} ${Version}\n' \ > $work/iso-cust/casper/filesystem.manifest
#dd if=/dev/zero of=$work/filesystem.cust/dummyfile
#rm $work/filesystem.cust/dummyfile

6. บีบอัดไฟล์ระบบ
#rm $work/cdrom-cust/casper/filesystem.squashfs
#cd $work/filesystem.cust
#mksquashfs . $work/cdrom-cust/casper/filesystem.squashfs
#cd ../
#umount filesystem.cust

7. สร้าง iso ไฟล์
#cd $work/cdrom-cust
#find . -type f -print0 |xargs -0 md5sum |sudo tee md5sum.txt
#cd ../
#mkisofs
-o kubuntu-desktop-cust.iso \
-b isolinux/isolinux.bin \
-c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -r -V "Custom Kbuntu Desktop" -cache-inodes -J -l iso-cust

เมื่อเสร็จแล้วจะได้ไฟล์ iso มา ก็นำไปเขียนลงแผ่น cd เท่านี้เราก็จะได้ แผ่น ubuntu livecd ของเราเองแล้วครับ เท่านี้เองก็เสร็จแล้วครับผม แต่มีข้อย่อย ๆ อีกเยอะไว้จะมาเล่าให้ฟังครับผม ไป Build ต่อดีกว่าตอนนี้ได้ xampp เข้าไปแล้วเย้ ๆ ดีใจ ๆ