แก้ Debian ให้ Boot โดยใช้ UUID

ปกติ Linux จะมีการเรียก device ต่าง ๆ โดยเรียงตามลำดับที่ detect เจอ
เช่น /dev/sda1 หมายถึง scsi device ที่เจอตัวแรก partition ที่ 1
ซึ่งอาจเป็น SATA หรือ Flash drive ก็ได้
แต่ปัจจุบัน harddisk ถูก รวมทั้ง Flash Disk ตกประมาณ 4 - 5 MB บาท (เรียกแบบชั่งกิโล :P)
และเสียซะ internal / external แบ่งซอยออกหลาย partition

ที่ทำงานผมมีการ duplicate harddisk โดยการใช้ dd พอเราใส่ harddisk ตัวใหม่ลงไป partition วิ่งวุ่น หา root file system ไม่เจอซะงั้น เพราะว่า ที่ grub reference เป็น /dev/sdxx ต่างกับ ubuntu ที่เป็น UUID

อันดับแรก ตรวจสอบ UUID

  1. sake@papaya:~$ sudo vol_id /dev/sda1
  2. [sudo] password for sake:
  3. ID_FS_USAGE=other
  4. ID_FS_TYPE=ext3
  5. ID_FS_VERSION=2
  6. ID_FS_UUID=d97cba8d-c1a7-4c6e-95ba-b747bb2cc3bf
  7. ID_FS_UUID_ENC=d97cba8d-c1a7-4c6e-95ba-b747bb2cc3bf
  8. ID_FS_LABEL=
  9. ID_FS_LABEL_ENC=
  10. ID_FS_LABEL_SAFE=

จากนั้น แก้ /etc/fstab

  1. # /etc/fstab: static file system information.
  2. #
  3. # <file system> <mount point>   <type>  <options>       <dump>  <pass>
  4. proc            /proc           proc    defaults        0       0
  5. # /dev/sda1
  6. UUID=d97cba8d-c1a7-4c6e-95ba-b747bb2cc3bf /               ext3    relatime,errors=remount-ro 0       1
  7. # /dev/sda2
  8. UUID=75da6682-e84a-a6a4-25ef-30c7148f0507 none            swap    sw              0       0

สุดท้าย แก้ /boot/grub/menu.lst

  1. title           Linux, kernel 2.6.24-18-generic
  2. root            (hd0,2)
  3. kernel          /boot/vmlinuz-2.6.24-18-generic root=UUID=d97cba8d-c1a7-4c6e-95ba-b747bb2cc3bf ro quiet splash
  4. initrd          /boot/initrd.img-2.6.24-18-generic
  5. quiet

จากนั้น ก็ทำการ reboot เป็นการเรียบร้อย ทีนี้จะสลับ harddisk ก็รอบก็ boot ถูก ;)