สืบเนื่องมาจากได้คุยกับคุณอนุชิตหลายเรื่องเกี่ยวกับความฝันในการทำ 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 เข้าไปแล้วเย้ ๆ ดีใจ ๆ
สวัสดีรค่ะ คุณวุฒิพร
เยี่ยมมากเลยครับ ขอสนับสนุนครับ
อืมม... แต่ผมใช้ GNOME นะสิ LiveCD ของ GigGoK จะมี version GNOME ให้ไหมครับ ไม่เป็นไรคอยได้ครับ :-)
มาอ่านเจอบทความนี้โดยความบังเอิญ รู้สึกคุ้นๆตาว่าเคยเห็นมาก่อน
คุณวุฒิพรครับ วิธีการคัดลอกมาโดยไม่อ้างอิงถึงผู้เผยแพร่ความรู้ (ก็อปมาแทบทุกตัวอักษร) มันจะน่าเกลียดไปกระมังครับ ... ไม่ดี ไม่ดี
http://prach-public.blogspot.com/2006_09_01_prach-public_archive.html
ขอบคุณครับผม กับ Comment ของอาสมเจตน์นะครับผม ผมก็ให้ Credit web http://prach-public.blogspot.com/2006_09_01_prach-public_archive.html ของคุณ Prach Pongpanich นะครับผม ที่ได้เผยแพร่ข้อมูลเหล่านี้ก่อนผม ก็ขอยก Credit ให้นะครับผม แต่มันก็ Build ตามเขาก็อาจจะไม่ได้นะครับผม มันมีวิธีอีกเยอะไว้จะมาเล่าต่อครับผม รายละเอียดที่เห็นผมก็ไปเอาข้อมูลมาจาก
https://help.ubuntu.com/community/LiveCDCustomization
ครับผม
ดีครับ พี่วุฒิ โครงการใหญ่โตเชียวนะครับ ปั้นเป็นรูปร่างยัง ส่งตัว close beta มาให้ลองมั่งนะ