- Back to Home »
- Linux PC »
- Khôi phục Bootloader cho máy Linux (Fedora)
Sunday, May 24, 2015
Bootloader là trình khởi động ban đầu cho máy tính, với Linux nó có tên là Grub, khi trên cùng một máy có cài nhiều OS thì Grub sẽ tạo cho bạn một menu boot để bạn chọn OS sẽ dùng.
Để cài đặt Windows và Linux trên cùng một máy tính (xem lại các cài đặt tại đây) thì trước tiên bạn cài Windows trước sau đó mới đến Linux, lý do là vì Linux được thiết kế một trình Bootloader tốt để có thể tạo ra menu boot tự động khi nó phát hiện trên máy tính của bạn đã có một OS nào đó. Nhưng vì một lý do nào đó mà thứ tự cài OS không như trên (ví dụ Windows bị lỗi phải cài lại trong khi Linux vẫn ok) thì Bootloader của linux sẽ không còn vì thế sẽ không hiển thị menu boot cho bạn, trong trường hợp này cần phải tiến hành khôi phục lại bootloader Grub cho linux, các bước thực hiện như sau:
+ Tạo Fedora Live USB như hướng dẫn tại đây
+ Khởi động vào USB
+ Sau khi khởi động vào thì không thực hiện install OS mà mở Terminal lên để thực hiện các lệnh sau
- su
- [root@localhost liveuser]# fdisk -l
Sẽ hiện ra danh sách các phần vùng chứa Windows và Linux như dưới
Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x8f9b8f9b
Device Boot Start End Blocks Id System
/dev/sda1 2048 209717247 104857600 83 Linux
/dev/sda2 209717248 419432447 104857600 83 Linux
/dev/sda3 * 419441085 503332514 41945715 7 HPFS/NTFS/exFAT
/dev/sda4 503332515 625137344 60902415 f W95 Ext'd (LBA)
/dev/sda5 503332578 620783729 58725576 7 HPFS/NTFS/exFAT
/dev/sda6 620783793 625137344 2176776 82 Linux swap / Solaris
Disk /dev/sdb: 4016 MB, 4016046080 bytes
64 heads, 32 sectors/track, 3830 cylinders, total 7843840 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00053dec
Device Boot Start End Blocks Id System
/dev/sdb1 * 62 7841791 3920865 b W95 FAT32
Disk /dev/mapper/live-rw: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders, total 6291456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/live-rw doesn't contain a valid partition table
Disk /dev/mapper/live-osimg-min: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders, total 6291456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/live-osimg-min doesn't contain a valid partition table
- [root@localhost liveuser]# mount /dev/sda1 /mnt
Lưu ý chọn phân vùng khởi động đầu tiên của Linux (có thông số start nhỏ nhất), như trên vd nó tương ứng với /dev/sda1
- [root@localhost liveuser]# mount -o bind /dev /mnt/dev
- [root@localhost liveuser]# mount -o bind /proc /mnt/proc
- [root@localhost liveuser]# mount -o bind /sys /mnt/sys
- [root@localhost liveuser]# chroot /mnt
- [root@localhost /]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.3.6-3.fc16.i686
Found initrd image: /boot/initramfs-3.3.6-3.fc16.i686.img
Found linux image: /boot/vmlinuz-3.3.5-2.fc16.i686
Found initrd image: /boot/initramfs-3.3.5-2.fc16.i686.img
Found linux image: /boot/vmlinuz-3.3.4-3.fc16.i686
Found initrd image: /boot/initramfs-3.3.4-3.fc16.i686.img
No volume groups found
Found Microsoft Windows XP Professional on /dev/sda3
done
- [root@localhost /]# grub2-install --no-floppy --recheck /dev/sda
Installation finished. No error reported.
- [root@localhost /]#
Restart máy để tiến hành khởi động vào Hard Disk như bình thường. Có một trường hợp xấu là nhiều khôi phục lại được bootloader nhưng trong menu boot lại không thấy lựa chọn boot vào Windows, khi đó bạn cúa boot vào Linux bình thường, sau đó mở terminal rồi làm lại hai bước sau:
[root@localhost
/]# grub2-mkconfig -o /boot/grub2/grub.cfg
[root@localhost
/]# grub2-install --no-floppy --recheck /dev/sda