Theppitak's blog

My personal blog.

10 สิงหาคม 2547

debian-installer ภาค 2

เมื่อวานพยายามทำแผ่นติดตั้ง debian ต่อ เจอปัญหาหลายอย่างอยู่ ก็ค่อยๆ โกงไปทีละเรื่องจนติดตั้ง base system ได้ในที่สุด

พบปัญหาและแก้เป็นข้อๆ ดังนี้:

  • เปลี่ยนเครื่องมาเป็นเครื่องเปล่า เพื่อจะได้ทดสอบการติดตั้งทั้งกระบวนการ ปัญหาคือ เครื่องใหม่นี้มีปัญหาช่วง detect hardware มันจะค้างไปเลย แม้จะเข้า expert mode ก็ยังควบคุมขั้นตอนไม่ได้ ดู syslog ก็ไม่ให้ข้อมูลอะไร กำลังคิดว่าเจอทางตัน ก็บังเอิญเหลือบไปเห็น boot prompt:
    Press F1 for help, or ENTER to boot: _
    ก็เลยเขกกบาลตัวเองก่อนกด F1 ไล่หา boot param จนพบ param ที่ควบคุมการ detect hardware ได้ ก็เลยลองทีละตัว จนพบว่ามันไปค้างที่ USB โดยสั่ง disable ได้ด้วยคำสั่ง:
    linux debian-installer/probe/usb=false
    จากนั้นก็ผ่านขั้น detect hardware ไปได้
  • ปัญหาถัดมา หลังจาก detect hardware ผ่านแล้ว ก็มาค้างอีก โดยดูใน syslog ก็ไม่พบร่องรอยอีกเช่นเดิม เลยบูตแบบ expert เพื่อจะได้ควบคุมขั้นตอนได้:
    expert debian-installer/probe/usb=false
    พบว่า ถ้าพยายามข้ามขั้น network config ไป มันจะไม่ค้าง จนไปแบ่งพาร์ทิชันได้
  • แต่เมื่อไปถึงขั้น install base system มันจะพยายามเลือก mirror ซึ่งต้องกลับมา config network ก่อน แล้วก็จะค้าง ตรงนี้พบว่าขาดโมดูล load-cdrom ไป ทำให้ไม่มีวิธีโหลดจาก CD → เพิ่มเข้าไปแล้วตัดแผ่นใหม่ → คราวนี้สามารถข้ามการ config network ได้แล้ว (แต่ถ้าบูตแบบปกติก็ยังค้างอยู่ดี ..ช่างมันก่อน)
  • เจอปัญหาถัดมา คือมันบอกว่า “cannot install” เพราะไม่ได้ mount CD หรือเลือก mirror ไว้ อ้าว.. ก็งงสิ CD ก็ mount อยู่เห็นๆ → ไล่ script ของ base-installer ดู ก็พบว่า มันพยายามตรวจสอบไฟล์ /cdrom/.disk/base_installable ซึ่งเราไม่มี → ไล่ Makefile ของ debian-cd อีกจนพบว่า มันจะสร้างไฟล์นี้ก็ต่อเมื่อแผ่นแรกมี package ที่ debootstrap ต้องการครบ → จัดการสร้าง task ของ debian-cd โดย dump มาจาก debootstrap:
    # echo "#include <debian-installer>" > tasks/mine
    # debootstrap --arch i386 --print-debs sid | tr ' ' '\n' | sed -e '/^$/d' >> tasks/mine
    แล้วตัดแผ่นใหม่
  • ทดลองใหม่อีกครั้ง ปรากฏว่ามันยังไม่ยอม install ให้อีก แต่ error message เปลี่ยนไป ฟ้องว่าไม่มี rule /usr/lib/debootstrap/scripts/unknown → ไม่ค่อยแปลกใจ เพราะตอนแกะ script ของ base-installer ในขั้นที่แล้ว ก็เหลือบเห็นแล้ว ว่ามันตรวจสอบ Codename ในไฟล์ Release → ไปแก้ไฟล์ Release ใน submirror ให้เป็น sid เอาดื้อๆ เลย แล้วตัดแผ่นใหม่อีกครั้ง → คราวนี้ผ่านตลอดจนจบกระบวนการ ไชโย! ☺ (แต่ต้องจำไว้ว่า ก่อนตัดแผ่นทุกครั้งต้องมาแก้ไฟล์นี้ก่อน เพราะ apt-move มันเขียนทับ)

สรุปว่าเป็นวันที่แก้ปัญหาได้สนุกสนานดี จบเมื่อคืน ใช้ CD ติดตั้ง sid ลงเครื่องเปล่าได้ โดยไม่ต้องสลับไปที่ shell เลย นับว่าทำให้ลดเวลาติดตั้ง debian ในเครื่องใหม่ได้มากทีเดียว แต่ข้อแม้คือ ต้องเข้า expert mode แล้วต้องรู้วิธีสั่งนิดหน่อย ถ้าคิดจะปั๊มแผ่นให้คนอื่นใช้ด้วย ยังต้อง hack โปรแกรมติดตั้งต่ออีก

0 ความเห็น:

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

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

hacker emblem