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






Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Lập trình hệ thống nhúng Linux . Powered by Luong Duy Ninh -