ช่วยด้วยครับ เครื่องเซิฟเวอร์เป็น Debian ไฟดับ Boot ขึ้นมาอีกทีมันมาค้างที่ Setting the system clock... ครับ

เครื่องเซิฟเวอร์เป็น Debian ไฟดับ Boot ขึ้นมาอีกทีมันมาค้างที่ Setting the system clock... ครับ แล้วก็ค้างอยู่อย่างนั้นไม่ไปไหนต่อเลยครับ รบกวนพี่ผู้รู้ ช่วยแนะนำด้วยครับ

ขอบคุณครับ

ลอง reboot ใหม่แล้วมันค้างที่เดิมใช่ใหมครับ?

debian ที่ใช้เป็นตัวใหนครับ? squeeze, wheezy หรือตัวอื่นๆครับ
grub ที่ใช้เป็น grub2 (grub-pc) หรือ grub-legacy ครับ?

สิ่งแรกที่น่าจะลองทำดูก่อนคือ ระบุให้แน่ชัดว่า ปัญหาเกิดขึ้นที่จุดใหน
ถ้า message ที่แสดงออกมาบนจออยู่ที่ "Setting the system clock" ก็หมายความว่า
ระบบกำลัง execute ต้ว hwclockfirst.sh script แต่ปัญหาที่ทำให้ระบบหยุดทำงาน
อาจจะเป็นที่ hardware clock เอง หรือที่อื่นก็ได้ เพราะฉะนั้นต้องการรายละเอียดขณะกำลัง
boot ให้มากที่สุด

วิธีการที่จะให้ได้ข้อมูล ก็โดยการระบุให้ linux kernel boot โดยแสดง message แบบ verbose
ซึ่งก็ต้องไปแก้ไข boot parameter ของ boot loader ซึ่งน่าจะเป็น grub

เลยต้องได้ข้อมูลเพิ่มก่อน

ลอง reboot ใหม่แล้วครับมันก็ค้างที่เดิม
GNU GRUB version 0.97
Debian GNU/Linux, kernel 2.6.18-6-686

ภาพที่มันค้างครับ http://pic.free.in.th/id/8d39f93fdea8869853ce468a3f88684e

ขอบคุณครับ

ลองบูตเข้าเป็น single mode ดูได้ปะครับผม
ถ้ามัน scan disk เสร็จแล้วอาจจะเกิด error สักอย่างหลังจากการ sync time

ลองทำตามวิธีของเทพ chatchai ดูครับผม น่าจะได้ทราบค่า error แล้วนำไปแก้ไขได้ต่อไป

ผม Boot โดยแสดง message แบบ verbose แล้วครับได้ตามรูปข้างล่างนี้เลยครับ
รูปภาพ http://pic.free.in.th/id/97e0c6673ff1208d2156bbd1aed57536

รบกวนด้วยนะครับ ขอบคุณครับ

@golfreeze ปัญหาดูเหมือนว่าจะไม่ได้อยู่ที่ disk เพราะ scandisk /dev/sda1 เสร็จแล้ว
และสามารถ add swap /dev/sda5 ได้ ไม่มีปัญหา

@pagapong boot แบบ verbose ก็ดูเหมือนว่าจะไม่ช่วยเท่าไหร่ และถ้าใช้ single user mode
ก็น่าจะไปหยุดอยู่ที่เดียวกัน

คงต้องดูว่ามันไปค้างที่ script ตัวใหนกันแน่ จะเป็น hwclockfirst หรือ
script ตัวถัดมา

ให้ boot เครื่องใหม่และกำหนด kernel parameter เพ่ิม "init=/bin/bash" เข้าไป

วิธีนี้จะทำให้หลังจาก boot kernel เสร็จมันจะ execute /bin/bash แทนที่จะเป็น init
และมันจะไม่ execute rc script ตัวใหนเลย แต่เราจะสามารถใช้ shell บน terminal ได้

คราวนี้หลังจากได้ shell prompt แล้ว ใช้คำสั่ง "ls -l /etc/rcS.d" นะครับดูว่า
มันมี script อะไรบ้างที่จะต้อง execute ในขั้นตอนของการ boot single user mode
และมันน่าจะหยุดอยู่ที่ตัวใหน

หลังจากนั้น จะใช้วิธีการ disable ตัว script ที่น่าสงสัยทีละตัว แล้ว reboot เครื่อง
เพื่อดูว่ามันไปหยุดที่ script ตัวใหนนะครับ

ตอนที่ boot โดยใช้ init=/bin/bash (หรือใช้ init=/bin/sh แต่ผมว่า bash สะดวกกว่า)
root file system จะ mount เป็น read only เราจะไม่สามารถแก้ไขอะไรบน file system ได้

ลองใช้ คำสั่ง "ls > /tmp/x" ดูนะครับ จะเห็นว่ามันไม่สามารถสร้างไฟล์ได้

จะต้อง remount มันให้เป็นแบบ read/write ก่อน โดยการใช้คำสั่ง

# mount -o remount,rw /

หลังจากนั้น ลองใช้คำสั่ง "ls > /tmp/x" จะเห็นว่ามันสามารถสร้างไฟล์ /tmp/x ขึ้นมาได้

หลังจาก filesystem mount เป็นแบบ read/write แล้ว เราก็จะสามารถแก้ไข ลำดับ หรือ script
ที่ init จะ execute ได้

สมมตว่า สงสัยว่า rc script ที่ชื่อ /etc/rcS.d/S06hwclockfirst.sh เป็นตัวทำให้เครื่องหยุดทำงาน
ก็ลอง rename มันชื่ออื่นก่อน เช่น

# cd /etc/rcS.d
# mv S06hwclockfirst.sh _S06hwclockfirst.sh

เปลี่ยนชื่อไฟล์ ให้ตัวอักษรตัวแรก ไม่เป็น 'S' -- สำหรับ Start หรือ 'K' -- Kill สำหรับ
stop script จะทำให้ในขั้นตอนของการ boot up หรือ shutdown เครื่อง มันไม่ execute script
เหล่านั้น

rename โดยให้ยังคงชื่อเดิมเอาไว้เพราะในครั้งต่อไป เราอาจจะต้อง rename มันกลับเป็นชื่อเดิมอีกครั้ง
ผมใช้วิธีการเพิ่ม '_' เข้าไปหน้าชื่อ

หลังจากนี้ ก็ต้อง reboot เครื่อง แต่จะใช้คำสั่ง reboot หรือ shutdown ไม่ได้เพราะเราไม่ได้ boot เครื่อง
โดยใช้ init ตามปกติ ... ผมไม่แน่ใจว่ามีคำสั่งใหนบ้างที่จะ force reset มันได้ โดยไม่ไป execute script
ผมใช้วิธีการกดปุ่ม reset หรือ ปุ่ม power เลย

แต่ก่อนที่จะทำอย่างนั้น เพื่อความสบายใจว่า เรา mount filesystem เป็นแบบ read/write อยู่ อาจจะทำให้
file เสียหายถ้ากดปุ่ม reset เลย ก็ใช้วิธีการ remount ให้มันกลับเป็น แบบ read only ก่อน

# sync
# mount -o remount,ro /

แล้วค่อยกดปุ่ม reset ครับ

คราวนี้ให้มัน boot แบบ verbose ตามปกติแล้วดูว่ามันไปหยุดที่ใหน
แล้ว reboot เครื่องใหม่ โดยใช้ init=/bin/bash อีกครั้ง
เข้าไปดูว่ามันหยุดที่ script ตัวใหน
ใช้ คำสั่ง grep หรือ more สำหรับ ดูข้อมูลในไฟล์ได้ ว่า script ตัวใหน
เป็นตัวพิมพ์ string ล่าสุดออกมาก่อนที่มันจะหยุดไป
หลีกเลี่ยงการใช้ editor แบบ nano/vi/... นะครับ :)

ลองทำตามที่ผมอธิบายคร่าวๆ ก่อนครับ ติดปัญหาที่ช่วงใหนลองถามใหม่อีกครั้งครับ

สวัสดีครับคุณ chatchai ผมลองใช้คำสั่ง "ls -l /etc/rcS.d" จะไปหยุดอยู่ที่ S99stop-boot logd-single ซึ่งมันน่าจะปกติใช่มั้ยครับ ตามรูปข้างล่างนี้ครับ

http://pic.free.in.th/id/0224cb2b97106547e4005611f4395e84

แล้วอันนี้อีกรูปเป็น script ทั้งหมดที่อยุ่ใน /etc/rcS.d ครับ

http://pic.free.in.th/id/da00cc7706dff0e42909e02354e5e708

ขอบคุณครับ

ผมสงสัยว่าอาจเป็นที่ HW นะครับ ลองดู m/b ผิดปกติรึเปล่า ลอง clear cmos ดู แล้วตั้งเวลาใหม่ดูครับ

คุณ pagapong ผลของคำสั่ง ls -l จะแสดงแค่ไฟล์ script ที่ debian จะ execute ใน Single User Mode ครับ
โดยมันจะ execute ตามลำดับ เริ่มจาก S01glibc.sh ตามด้วย S02hostname.sh และไปเรื่อยๆจนครบในส่วนของ single user
ที่ S99stop-bootlogd-single แล้วหลังจากนั้นก็จะไป excute script สำหรับการทำงานแบบ Multi User / Server
ซึ่งโดยทั่วไปจะเป็น /etc/rc2.d/ และจะไล่ไปตามลำดับเหมือนกัน

แต่ปัญหาตอนนี้ มันหยุดการทำงานก่อนที่จะ boot ในส่วนของ single user เสร้จ
ถ้าลองใช้คำสั่ง "grep 'Setting the system clock' /etc/rcS.d/*" ดู จะเห็นว่า
script ที่พิมพ์ string ตัวนี้ออกมาคือ S11hwclock.sh นั่นคือว่า เครื่องหยุดการทำงาน
หลังจากมัน execute คำสั่ง echo 'Setting ...' ใน script S11hwclock
แต่ ผมยังไม่ทราบว่า จะเป็นคำสั่งใน script S11hwclock.sh เอง หรือ อาจจะเป็น script หลังจากนั้น

ถ้าในที่นี้ สงสัยว่า script S11hwclock.sh เป็นตัวการทำให้ เครื่องหยุดการทำงาน
ก็ลอง เปี่ยนชื่อ script ตัวนี้ ตามที่ผมอธิบายไปในครั้งที่แล้วก่อนดู

แล้ว reboot เครื่องใหม่ ให้มันทำงานตามปกติ แล้วดูว่ามันหยุดที่เดิมอีกหรือเปล่า หรือเป็นที่อื่นๆ

คงจะต้องใช้เทคนิคนี้ จนจะสามารถระบุได้ว่า มันหยุดทำงานที่ใหน และเป็นคำสั่งอะไรที่เป็นปัญหาครับ

คุณ chatchai ครับผมได้ทำการ rename S11hwclock.sh เพื่อไม่ให้มัน execute ครับ ผลปรากฏว่าสามารถ Boot ผ่านเรียบร้อยแล้วครับ น่าจะมีปัญหาที่ script S11hwclock.sh ครับแต่อยากทราบเหมือนกันว่า มันมีปัญหาตรงไหน แต่ยังไงผมขอบคุณคุณ chatchai มากครับนะครับ ที่กรุณาช่วยแนะนำผมจนสามารถ Boot ได้ และได้ความรู้จากท่านเพิ่มขึ้นด้วย ขอบคุณด้วยใจจริงครับ

Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้