อาการ
ตอนที่ FreeBSD กำลังแสดงข้อความต่าง ๆ ของระบบอยู่ดีมันก็มาหยุดที่ ndis0 (เป็นโมดูลที่เกี่ยวกับเน็ตเวิร์กของ ndis ครับ) ผมสั่งให้มันโหลดขึ้นมาตอนบู๊ท มันก็แจ้งว่า failed แล้วก็ค้างอยู่ตรงนี้
สาเหตุ
เนื่องจากว่าผมไปแก้ไฟล์ loader.conf (/boot/loader.conf) ให้มันโหลดโมดูลไดรเวอร์ของการ์ดแลนผมขึ้นมา แต่ไม่รู้ว่ามันเกิดปัญหาอะไร มันถึงโหลดไม่สำเร็จ ก็เลยเป็นสาเหตุให้ค้างตอนบู๊ทครับ
วิธีแก้
ตอนบู๊ท FreeBSD ขึ้นมาแล้วมีออปชั่นให้เลือก ให้เลือกออปชั่นหมายเลข 6 ครับ (จำไม่ได้ว่ามันเขียนว่าอะไร) แล้วมันก็จะมี prompt ขึ้นมาว่า OK ให้เราป้อนค่าตามนี้ครับ (OK นั่นเป็น prompt นะครับ ไม่ต้องกรอกตาม)
OK unload
OK load kernel
OK snd_hda
OK boot
แล้วเราก็จะบู๊ทได้ โดยไม่อ่าน loader.conf ครับ
แต่เดี๋ยวก่อนครับ ผมยังเจออีกปัญหา ตอนบู๊ทขึ้นมาด้วยวิธีนี้ ปรากฏว่าผมไปแก้ไฟล์ /etc/rc.conf ด้วย และแก้ผิดไปครับ (มีเครื่องหมายคำพูดเกินมาตัว) ทำให้มันแจ้งเตือนว่าไฟล์ /etc/rc.conf ผิด จากนั้นมันให้กรอก path ของ shell ที่จะใช้งานครับหลังจากกรอกเสร็จมันก็เข้าสู่ระบบให้โดยอัตโนมัติ
แต่ผมพบว่ามันไม่ได้ mount file system ให้ซักตัวเลยครับ ผมต้องมา mount เอง ทั้ง /usr /var /tmp เพราะเนื่องจากว่ามันไม่ได้ mount /usr ให้ดังนั้นเราจะไม่เห็นคำสั่งหลาย ๆ คำสั่งครับ รวมถึง vi ด้วย ผมเลยต้อง mount /usr แต่ว่าการใช้ vi นั้นมันจะไปสร้างไฟล์ใน /tmp เลยจำเป็นต้อง mount /tmp ด้วย ส่วน /var นั่นก็ mount เผื่อ ๆ ไปครับ (ตอน mount ก็เรียกดูจากไฟล์ /etc/fstab)
หลังจากนั้นผมก็พยายามแก้ไฟล์ทั้งสองแต่ปรากฏว่าผมไม่สามารถบันทึกได้ครับ มันแจ้งเตือนว่า "Read-Only file system" หลังจากค้นดูก็พบวิธีแก้โดยใช้คำสั่ง
mount -u /
มันจะไปเปลี่ยนจาก Read-Only เป็น Read/Write ครับ ทีนี้เราก็จะสามารถแก้ไขไฟล์ที่เสียได้ตามที่ต้องการ
----
แถม
เนื่องจากตอนที่มันไม่ mount อะไรให้ซักอย่างผมเลยต้องมา mount เอง แต่ตอนค้นเรื่อง Read-Only ผมก็เจอคำสั่ง mount ทั้งหมดให้อัตโนมัติครับ
mount -a
มันจะ mount ตามไฟล์ /etc/fstab ให้อัตโนมัติครับ