วันอาทิตย์ที่ 2 พฤษภาคม พ.ศ. 2553

freebsd บูตไม่ขึ้นไฟดับ

แนวทางแก้ไขไฟฟ้าดับบน freebsd บูตไม่ได้วิธีแก้ไขโดยพี่มะขาม...คุณพรมมาศ
# fsck -p
# mount -u /
# mount -a -t ufs

หาก fsck -p ไม่ผ่าน ลอง fsck -f ดูครับ
ท่าที่เคยทำ ไม่ได้เม้าหรอก ลุยเลย

# /sbin/adjkerntz -i
อาจจะไม่ได้เน้อ ตอนนี้ ผ่านไป ถ้ามันติด
# fsck_ufs /dev/da0s1a
ถ้าว่า root partition นั้นอยู่ที่ /dev/da0s1a น่ะ อย่ไปลบวาย (-y) ทนเอาครับ ทนทำเอา รึอยากจะใส่แต่ทีแรกเลย ก็ไม่ว่า

แล้วก็ไล่ทำไปทีละ partition น่ะ จนหมด

จากนั้นค่อยสั่งเม้าลบเอ mount -a แล้วก็ exit ไปสู่ multiuser mode

โชคดีน่ะ
อ้าว มาโพสไล่ๆกัน

จำไว้ เวลาอยู่ใน single user mode อย่าลบ

/etc/fstab ถ้าหาย ก็โชคร้ายแล้ว เว้นเสียแต่จะจำได้ว่า partition ไหน mount device อะไรไว้

ซึ่ง ถ้าจำได้ ก็ทำฟิ้สกี้ไป พอจบอย่างสะอาดแล้ว ก็ไล่ mount ไปทีละ partition ซะ แล้วก็เขียนแฟ้ม /etc/fstab ใหม่น่ะ

ถ้าลบ /etc/fstab ก็คงจะหมดทางที่จะบูตด้วยระบบเดิมครับ เพราะไฟล์นี้จะมีรายการ partition ทั้งหมด คงต้องบูตด้วยแผ่น live fs ครับ ไปที่เมนู Fix จะเข้าสู่ shell ได้ ทำการ mount partition แล้วคัดลอกข้อมูลออกมาครับ
โดยส่วนใหญ่จะชื่อ dev จะเป็นแบบนี้ครับ
/dev/ad0s1a
/dev/ad0s1d
/dev/ad0s1e
/dev/ad0s1f
บางเครื่องอาจไม่เหมืือนกันเป็น ad0, ad1, da0
พอจะสังเกตได้โดยใช้คำสั่ง ls /dev ครับ
ดาวน์โหลดแผ่น live fs
ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/8.0/8.0-RELEASE-i386-livefs.iso
บูตด้วยแผ่น live fs เลือก fix จนเข้า shell ได้
mount patition / โดย
# mount -t ufs /dev/ad0s1a /mnt
ตอนนี้ก็จะเข้า partition / ของระบบเดิมได้โดยจะอยู่ใน /mnt
ถ้าจำได้ว่า /home อยู่ partition ไหนก็ทำการ mount โดยใช้คำสั่งรูปแบบเีดียวกับ mount partition /
แล้วคัดลอกไฟล์ fstab ไปไว้ที่ /mnt/etc หรือจะสร้างใหม่ก็ได้ครับดูตัวอย่างจากเครื่องอื่นก็ได้ครับ เอาแค่ partition ที่จำเป็นก็พอ
วิธีค่อนข้างยุ่งยากครับ ผมอธิบายย่อ ๆ ไว้ก่อนครับ
อยู่บ้านรึ
ปกติ ถ้าพอจำได้ว่ามีแค่ /, /var, /usr, /home ละก็ มันจะอยู่ partition สุดท้ายแหละ f ไง

ลองดูน่ะ fsck_ufs /dev/da0s1f

ลำดับของมันจะแปลกๆ คือ /, /home, /usr, /var และ partition ที่อยู่จะเป็น a, f, e, d ตามลำดับ และ /etc/fstab เท่าที่ใช้ ก็เป็น

/dev/ad0s1b none swap sw 0 0
/dev/da0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1f /home ufs rw 2 2
/dev/ad0s1e /usr ufs rw 2 2
/dev/ad0s1d /var ufs rw 2 2
/dev/da0s1d /kaitag ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0

ดูยากหน่อยน่ะ เพราะที่นี่เขามีสวยๆกันไม่ได้ สวยๆ เป็นโดนเก็บไปหมดรึไงก็ไม่รู้แฮะ
นี่นี่ ในแฟ้ม /etc/fstab นั้น ลำดับที่ ๒ เป็น swap partition ที่ หาค่าเทอม ใช้เองน่ะ ปกติ มีแต่ swap partition แรกเท่านั้นระวังให้มากมาก

[~] % cat /etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1f /home ufs rw 2 2
/dev/ad0s1e /usr ufs rw 2 2
/dev/ad0s1d /var ufs rw 2 2
/dev/da0s1d /kaitag ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
proc /proc procfs rw 0 0

นั่นแหละ เอามาเถอะ คือ ปกติ คนเรามักจะทำอะไรซ้ำๆกันน่ะ เพราะฉะนั้น ลูกใหม่ที่ลงมา มันก็คงใช้ partition เดิมๆแหละ

ส่วน dmesg นั้นก็เพียงอยากทราบชื่อของ hard disk ลูกนั้นเท่านั้นเอง ไม่มีอะไรปิดบังกันหรอก เห็นบอกว่ามันเป็นลูกแรกไม่ใช่หรือ ดังนี้แล้ว unit number จะเป็น 0 และถ้าใช้ทั้งลูก slice number ก็คงเป็น 1

พอรู้ ก็เอามาประกอบได้เลย สังเคราะห์ได้เลย

/dev/XX0s1a คือ partition / ของ hard disk ที่ชื่อ XX

พอได้ก็สั่งฟิ้สกี้ได้เลย

fsck_ufs /dev/XX0s1a

แล้วก็ไล่ไปทีละ partition จาก d,e,f สำหรับ /var, /usr, /home เท่านั้นเอง

เดาเอาน่ะ ว่ามีเพียง usr, var , home

เฮ้อ
พอดี รายการทีวีช่องหนึ่งออกรายการให้ทารกมาร้องเพลงหาค่าเทอม มันมาออกรายการเอาตอนตอบ เลยใช้ชื่อว่า หาค่าเทอม
ความจริง ก็กำลังจะบอกว่า ให้ boot ด้วยแผ่นที่สามารถให้ระบบวิ่งได้ซะก่อน
จากนั้น สั่ง
# fsck_ufs /dev/da0s1g
# fsck_ufs /dev/da0s1a
จากนั้น ถ้า มันจบอย่างสะอาดน่ะ ให้สั่ง
# mount /dev/da0s1g /mnt
แล้วก็ ไปเอาแฟ้ม fstab ที่ว่า เอาไว้ที่ /home นั่นแหละ จด คัดลอกออกมา
แล้วก็ umount /mnt ซะ แล้วก็สั่ง
# mount /dev/da0s1a /mnt
แล้วถึงเรียก หรือสั่ง
# vi /mnt/etc/fstab
แล้วก็พิพม์ลงไป ข้อความที่ได้คัดลอกออกมาแล้วนั่นแหละ แล้วก็ save และ exit จาก vi ซะ
แล้วก็ reboot ด้วยก้อนแรก ก้อนที่เพิ่งเขียนแฟ้ม /etc/fstab ไปนี่แหละ ซึ่งน่าจะได้ และมาจบที่ single user mode ตามเดิม

แต่เมื่อ file system พัง ก็เป็นอันจบเห่กันพอดี
ยังไงก็ตามทีเหอะ น่ะ ขอให้โชคดี และสนุกกับ FreeBSD น่ะ

ไม่มีความคิดเห็น: