วันพฤหัสบดีที่ 27 กรกฎาคม พ.ศ. 2560

แก้ปัญหาพาร์ติชั่นบูต(boot)เต็มสำหรับระบบปฏิบัติการ Ubuntu 16.04.2 LTS

 

แก้ปัญหาพาร์ติชั่นบูต(boot)เต็มสำหรับระบบปฏิบัติการ Ubuntu  16.04.2 LTS หนักใจที่สุดก็คือระบบจะมีปัญหาในการบูตครั้งต่อ ๆ ไป สาเหตุที่พาร์ติชั่นบูตเนื้อที่ไม่พอ

สาเหตุหลักมาจากการที่ระบบพยายามจะอัพเกรดเคอร์เนลเรื่อย ๆ จนกลายเป็นว่ามีการจัดเก็บอิมเมจอย่างยาวนานและต่อเนื่องมาหลาย ๆ เวอร์ชั่นจนทำให้พาร์ติชั่นบูตซึ่งมีขนาดเล็กอยู่แล้วไม่เพียงพอพื้นที่ในการจัดเก็บอิมเมจเหล่านั้นนั่นเอง

สิ่งที่ต้องระมัดระวังก็คือหากมีการอัพเกรดแล้วไม่ค่อยได้รีบูตเครื่องใหม่ ล่าสุดพบข้อผิดพลาดที่ระบบลินุกส์ไม่สามารถอัพเกรมเคอร์นอลใหม่ได้สมบูรณ์เพราะพื้นที่ฮาร์ดดิสก์ในพาร์ติชั่นบูตไม่เพียงพอ

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

ขั้นตอนที่ 1 ต้องตรวจสอบพื้นที่ว่างของพาร์ติชั่นบูตดูก่อนว่ามีพื้นที่เหลือเพียงพอหรือไม่ จากตัวอย่างข้างล่างจะพบว่า พาร์ติชั่น boot มีการใช้งานไปถึง 465M จากพื้นที่เต็ม 472M คิดเป็นเปอร์เซนต์ที่ 100%

นี่แหล่ะคือปัญหาที่เกิดขึ้นสำหรับเนื้อหาในวันนี้

# df -h
Filesystem                   Size  Used Avail Use% Mounted on
udev                         3.9G     0  3.9G   0% /dev
tmpfs                        799M  8.7M  790M   2% /run
/dev/mapper/ubuntu--vg-root   28G   22G  5.2G  81% /
tmpfs                        3.9G     0  3.9G   0% /dev/shm
tmpfs                        5.0M     0  5.0M   0% /run/lock
tmpfs                        3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1                    472M  465M     0 100% /boot
tmpfs                        799M     0  799M   0% /run/user/1000

ขั้นตอนที่ 2 เป็นการตรวจสอบเคอร์นอลที่ใช้งานอยู่ว่าเป็นเวอร์ชั่นไหน จากตัวอย่างพบว่าเป็นเวอร์ชั่น 4.4.0-63 ผู้เขียนจึงได้ย้ายข้อมูลในพาร์ติชั่นบูตที่ต่ำกว่าเวอร์ชั่นที่ใช้งานอยู่ออก เพื่อเพิ่มพื้นที่ให้ หลังจากได้ทดลองมาแล้วพบว่าวิธีที่ดีที่สุดสำหรับขั้นตอนนี้ก็คือดำเนินการลบไฟล์เคอร์เนลเวอร์ชั่นที่ต่ำกว่าออก ตามตัวอย่าง

# uname -r
4.4.0-137-generic
 ต่อจากนั้นตรวจสอบด้วยสคริปต่อไปนี้ว่าเคอร์เนลไฟล์ใดที่ต้องการลบออก

# sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") pri                                                                             nt $2}'|grep -v `uname -r`
linux-image-4.4.0-109-generic
linux-image-4.4.0-119-generic
linux-image-4.4.0-135-generic
linux-image-4.4.0-138-generic
linux-image-extra-4.4.0-109-generic
linux-image-extra-4.4.0-135-generic
linux-image-extra-4.4.0-138-generic
linux-image-generic

จากนั้นทำการลบไฟล์นั้นออกเลยโดยใช้คำสั่ง
## apt-get --purge remove linux-image-4.4.0-109-generic linux-image-extra-4.4.0-109-generic

ระบบการอัพเกรดเคอร์แนลทำงานได้สมบูรณ์แบบ หลังจากนั้นใช้คำสั่ง apt-get -f install

#apt-get -f install

ขั้นตอนที่ 3 หลังจากที่ดำเนินการอัพเกรดได้เสร็จสิ้นไม่มีข้อผิดพลาดใด ๆ เรียบร้อยแล้วในขั้นตอนที่ 2 ให้ใช้คำสั่ง apt-get autoremove เพื่อจัดการกับเคอร์เนลเก่าที่ไม่ได้ใช้งานออกไป

#apt-get autoremove

จากนั้นตรวจสอบพื้นที่ว่าของพาร์ติชั่นบูตดูใหม่ ตามตัวอย่างพบว่ามีพื้นที่ว่างเพิ่มขึ้น 287M หรือคิดเป็น 37% นั่นเอง
# df -h
Filesystem                   Size  Used Avail Use% Mounted on
udev                         3.9G     0  3.9G   0% /dev
tmpfs                        799M  8.6M  790M   2% /run
/dev/mapper/ubuntu--vg-root   28G   21G  6.0G  78% /
tmpfs                        3.9G     0  3.9G   0% /dev/shm
tmpfs                        5.0M     0  5.0M   0% /run/lock
tmpfs                        3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1                    472M  162M  287M  37% /boot

จากนั้นใช้คำสั่งอัพเดทบูตโหลดเดอร์

# update-grub

ขั้นตอนที่ 4 เป็นการรีสตาร์ทเพื่อเริ่มระบบใหม่ ปรากฎว่าผ่านการบูตไปไม่ได้ หน้าจอไปติดอยู่ที่ initramfs ก็ไม่ต้องตกใจให้ดำเนินการตามนี้ ให้เลือก y เพื่อทำการแก้ไขไฟล์และinodeที่ผิดพลาดทั้งหมด ตอบใช่ในทุก ๆ ขั้นตอนรอจนระบบบูตได้สมบูรณ์

(initramfs) fsck /dev/mapper/ubuntu--vg-root
select 'y' to all 'Fix?' prompts

ต้องขอขอบพระคุณพื้นที่เวบไซต์บล็อกเนื้อหาดี ๆจาก https://thaigpstrackers.com สนับสนุนเนื้อหาดี ๆในวันนี้ให้เราได้ศึกษากัน สนใจระบบจีพีเอสติดตามรถยนต์ มาตรฐานไทย ต้องอย่าลืมแวะเข้าไปเยี่ยมชมที่ลิงค์ดังกล่าวข้างต้น

GPS ติดตามรถ