Theppitak's blog

My personal blog.

08 สิงหาคม 2547

debian-installer

เผลอแผลบเดียว ไม่ได้ blog ไปเสียเกือบอาทิตย์ ก็ไปสะสางธุระหลายเรื่องอยู่ ตอนนี้มีกิจวัตรเพิ่มอีกอย่าง คือคอย remote เข้าไปเช็กเซิร์ฟเวอร์บ่อยๆ ถ้าเน็ตล่มก็จะได้ recover รวมทั้งไป update package ต่างๆ เสมอๆ นอกจากนั้นก็มีงานอื่นเพิ่มอีกนิดหน่อย ไว้วันหลังค่อย blog

ช่วง 3-4 วันที่ผ่านมา พยายามจะทำแผ่น debian CD ที่ตัดออกมาให้ใช้ติดตั้งได้จริง จากที่เดิมใช้เป็นแค่แผ่น upgrade เท่านั้น ความจริงแล้ว ถ้าใครมี full mirror tree ก็จะสามารถทำแผ่นติดตั้งได้ด้วย debian-cd ได้เลย แต่ปัญหาของผมคือ ไม่ได้มี full mirror ก็เลยต้องพยายามเฟ้นเอาเฉพาะไฟล์ที่จำเป็นมาจาก full mirror

เมื่อสมัยก่อนที่จะมี sarge นั้น ผมตัดแผ่น sid โดยอาศัย boot image ของ woody ซึ่งเคอร์เนลและ libc เก่ามากเมื่อเทียบกับ sid ทำให้ใช้ installer ของ woody โดยตรงไม่ได้ เวลาติดตั้งต้องเริ่มแตก package พื้นฐานทีละอันจนสามารถเรียก debootstrap ได้ และก็ยังไม่มีเวลาไปค้น ว่าต้องดาวน์โหลดอะไรมาเพิ่มบ้าง คราวนี้ ได้โอกาสก็กระโดดมาจับ sarge เลย ซึ่งใน sarge จะมี debian-installer ซึ่งพัฒนาขึ้นใหม่ หลังจากที่ debian โดนว่าว่าไม่เป็นมิตรกับมือใหม่ จากเดิมที่ทุกอย่างเป็นเมนูที่สามารถเลือกวิธีการในขั้นตอนต่างๆ ได้ตามใจชอบ ก็กลายมาเป็นระบบที่อัตโนมัติมากขึ้น (แต่โดยส่วนตัว ผมก็ว่าของเดิมมันก็ไม่ได้ใช้ยากตรงไหนนะ ดีเสียอีกที่ยืดหยุ่น สั่งการได้เต็มที่ โดยมีเมนูให้เลือก ไม่ต้องจดจำอะไรมาก ทั้งที่ debian ไม่ได้ออกแบบมาให้ต้องเจอโปรแกรมติดตั้งบ่อย [คือเป็น continuous upgrade ไม่ใช่ quantum upgrade เหมือน distro ที่ใช้ CD เป็นหลัก โดยเฉพาะในสมัยที่ยังไม่มี apt-rpm, urpmi หรือ yum กัน] แต่กลับมาเจอทีไรก็ยังเดาขั้นตอนได้ แต่ผมอาจจะมองโลกด้วยแว่นคนละแบบกับคนอื่นก็ได้)

อย่างไรก็ตาม แผ่น CD ติดตั้งที่จะพยายามทำครั้งนี้ จะใช้ sarge installer เพื่อติดตั้ง sid จากที่ค้นเอกสารในเน็ต ก็ได้ความว่า debian-installer ใหม่นี้ ออกแบบมาให้ modular สามารถเพิ่ม-ลดฟังก์ชันได้ และมีการใช้ udeb ที่เป็น deb package แบบย่อส่วน ที่ไม่ได้ทำตาม debian policy ทั้งหมด (เช่น ไม่มีเอกสาร ไม่มี man page) แต่เน้นให้มีขนาดเล็กเพื่อใช้กับ installer (นัยว่า ตัว u ใน udeb นั้น หมายถึง micro (µ) นั่นเอง) เมื่อบูตแผ่นติดตั้ง debian นั้น ระบบใน boot image จะสร้าง ram disk ที่ใช้เริ่ม installer โดยจะให้ผู้ใช้เซ็ตค่าภาษา ประเทศ แป้นพิมพ์ แล้ว detect hardware เพื่อ mount CD และโหลด debian-installer จาก CD ซึ่งอยู่ในรูป udeb โดยอาศัย udpkg ติดตั้ง udeb ทั้งหลายลง ram disk จากนั้นก็เรียก debian-installer จาก ram disk ขึ้นมาทำหน้าที่ต่อไป

ดังนั้น เพื่อจะให้แผ่นที่ตัดจาก submirror ที่สร้างจาก apt-move สามารถติดตั้งได้ จึงต้องดาวน์โหลด udeb ทั้งหลายมาเพิ่ม โดยเพิ่มรายการต่อไปนี้ใน sources.list (เปลี่ยน mirror ใกล้บ้านได้ตามสะดวก):

deb ftp://ftp.debian.org/debian sid main/debian-installer

แล้วก็ดูดแพกเกจ base-installer มาลง (ผมลักไก่ใช้สคริปต์ apt-off ที่เคยเขียนไว้):

echo -n > status.null
./apt-off -s status.null suck install base-installer

และอาจจะต้องดูด udeb อื่นๆ ต่อไปนี้มาให้ครบ:

  • libc6-udeb
  • libdebconfclient0-udeb
  • libdebian-installer4-udeb
  • discover-udeb
  • libexpat1-udeb
  • libparted1.6-udeb
  • partman
  • kernel modules ต่างๆ สำหรับ kernel-image-{version}-1-386-di
  • ... (คิดว่ายังไม่หมด เพราะแผ่นที่ได้ ยังติดตั้งได้ไม่จบกระบวนการ ถ้าจะเอาชัวร์ๆ ก็ โหลดมาให้หมดตามรายการใน main/debian-installer/binary-i386/Packages)

สังเกตว่า ตอนที่ดูด base-installer นั้น udeb บางตัวจะถูก override โดย deb ที่สมบูรณ์ ซึ่งถ้าจะให้ใช้กับ debian-installer ได้ ต้องเป็น udeb เท่านั้น จึงต้องดูดแยกต่างหาก

จากนั้น สั่ง apt-move sync แล้ว generate ไฟล์ Packages เพิ่มเติมสำหรับ debian-installer udeb โดยสร้างไฟล์ config ที่ root ของ mirror ตามที่บอกใน เอกสาร แล้วสั่ง

apt-ftparchive generate config

(พบว่า apt-move จะสร้างไฟล์ Packages ให้เฉพาะ deb package เท่านั้น ไม่สนใจ udeb ก็เลยต้องสร้างเองต่างหาก ด้วยวิธีนี้)

จากนั้น ก็ generate iso image ด้วย debian-cd ตามปกติ อาจจะ hack นิดหน่อยด้วยการสร้าง symlink บางแห่งของ sid ให้ชี้ไปที่ sarge ซึ่ง script สำหรับทำแผ่นบูตของ sarge จะไปโหลด boot image จาก daily image อยู่แล้ว (เพื่อความรวดเร็ว ผมก็จัดการ hack script ให้มันโหลดจาก local copy ซะ ☺)

มีอีกวิธีหนึ่ง นอกเหนือจากการใช้ debian-cd คือการ hack จาก iso ที่ work แล้ว แบบนั้นดูแล้วน่าจะใช้ได้เลยเหมือนกัน แต่ยังไม่ได้ลอง

0 ความเห็น:

แสดงความเห็น (มีการกลั่นกรองสำหรับ blog ที่เก่ากว่า 14 วัน)

<< กลับหน้าแรก

hacker emblem