เดิมนั้นโน้ตบุ๊คผมมีทั้ง Windows XP และ Ubuntu ผมใช้วิธีการ dual boot โดยใช้การติดตั้ง grub ใน boot sector ของ root partition (/dev/sda6) แล้วใช้คำสั่ง
# dd if=/dev/sda6 of=ubuntu.bin bs=512 count=1
แล้ว copy ubuntu.bin ไปใว้ใน C:\
แก้ boot.ini ประมาณนี้
[boot loader]
timeout=9
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=”Windows XP Media Center Edition” /noexecute=optin /fastdetect
C:\ubuntu.bin=”Ubuntu Linux 8.04″
ต่อมาผมเปลี่ยน Harddisk ซึ่งเป็นแบบ SATA จาก 120 G เป็น 250 G ผมใช้วิธีการ clonning บน Windows โดยใช้ Acronis TrueImage Home สามารถโคลนนิ่งได้ไม่มีปัญหาอะไร แต่ไม่สามารถบู๊ตเข้า Ubuntu Linux ได้ เพราะ boot sector เปลี่ยนไปแล้ว
ผมเลยใช้ sysresccd ที่ได้ทำให้บู๊ตผ่าน usb-stick ไว้แล้ว boot เข้าไปใน Ubuntu Linux (สามารถใช้แผ่น Ubuntu cd ก็ได้ แต่ผมชอบ sysresccd ใน usb มันโหลดเร็วดี) แล้วติดตั้ง grub ใหม่ โดยใช้คำสั่ง
# grub-install /dev/sda6
แล้ว
# dd if=/dev/sda6 of=ubuntu.bin bs=512 count=1
แล้ว copy ubuntu.bin ไปใว้ใน C:\ ใหม่อีกครั้ง
ก็จะสามารถบู๊ตได้ตามปกติ
ใน Ubuntu ไฟล์ /etc/fstab จะใช้ UUID แทน device file ของ root partition ตัวอย่างเครื่องของผมเป็นดังนี้
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
# /dev/sda6
UUID=1212e5b0-c9e5-4072-a077-01a35080419b / ext3 relatime,errors=remount-ro 0 1
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
ข้อดีของ UUID ก็คือ มันจะคงที่ ไม่เปลี่ยนเหมือน harddisk device file เช่น harddisk ของผมเดิมเป็น /dev/sda พอถอดออกมาเสียบผ่าน usb ก็จะเป็น /dev/sdb หรืออื่นๆ ไป ดังนั้นถ้าใช้ UUID แล้ว harddisk ตัวเก่าของผมมันก็จะสามารถบู๊ต Linux (ไม่ใช่ Windows ) ผ่าน usb จากเครื่องที่สามารถบู๊ตจาก usb ได้ แหม…แหล่มเลย!
ผมเลยลองเลือกจาก bios ให้ boot จาก usb harddisk ซึ่งเป็นตัวเก่าของผม ปรากฎว่ามันยังคงไปบู๊ต Ubuntu Linux จาก harddisk ตัวใหม่ในเครื่องอยู่ ทั้งนี้ก็เพราะว่ามัน clonning มา ดังนั้น UUID มันเลยเหมือนกัน ผมเลยต้องแก้ UUID ในตัวใหม่ ใช้คำสั่ง
# uuidgen | xargs tune2fs /dev/sda6 -U
แล้วตรวจสอบค่า UUID ใหม่ ใช้คำสั่ง
# vol_id /dev/sda6
ID_FS_USAGE=filesystem
ID_FS_TYPE=ext3
ID_FS_VERSION=1.0
ID_FS_UUID=03b62130-795e-44f3-977a-28412adef5e6
ID_FS_UUID_ENC=03b62130-795e-44f3-977a-28412adef5e6
ID_FS_LABEL=
ID_FS_LABEL_ENC=
ID_FS_LABEL_SAFE=
แล้วก็ตามไป แก้ไข /etc/fstab และ /boot/grub/menu.lst เป็น UUID ใหม่ที่ได้ เป็นอันเรียบร้อย
/user
/root
/boot
/hom
คำสั่งเหล่านี้หมายความว่าอย่างไรเหรอครับ
ความเห็น โดย Smit — กันยายน 8, 2008 @ 9:48 am