Thứ Hai, 3 tháng 6, 2013

Thay đổi vị trí boot mặc định trong GRUB 2


GRUB 2 ra đời với hàng loạt thay đổi so với GRUB legacy (phiên bản Grub trước). Dù muốn hay không, bạn buộc phải làm quen với GRUB 2 vì nó đã được tích hợp vào Ubuntu 9.10. Bài viết này chỉ đề cập đến một vấn đề rất nhỏ nhưng hay thường gặp trong việc cấu hình GRUB nói chung và GRUB 2 nói riêng, đó là chỉnh sửa vị trí boot mặc định.
Đặt vấn đề: Tôi có cài sẳn một hệ điều hành (ví dụ windows), khi cài thêm Ubuntu 9.10 vào thì chương trình GRUB 2 luôn mặc định trỏ đến dòng Ubuntu 9.10. Bây giờ tôi muốn nó mặc định trỏ đến hệ điều hành quen thuộc của tôi (windows) khi khởi động thì phải làm thế nào?
Nếu ở GRUB legacy thì bạn sẽ nghĩ ngay đến tập tin menu.lst trong /boot/grub/, nhưng qua đến GRUB 2 thì khái niệm này không còn nữa. Có người bảo rằng menu.lst năm xưa giờ là grub.cfg nên chỉ việc chỉnh sửa grub.cfg là xong thôi. Điều đó cũng đúng nhưng cũng có phần… sai! Đúng là bạn có thể tìm thấy trong đó những thông tin giống giống với GRUB cũ, còn sai là vì tập tin đó sinh ra không để chỉnh sửa.
Bởi vì nó là một tập tin do máy tính tạo ra nó có thể bị thay đổi chỉ với một câu lệnh. Do đó đừng có cố chỉnh sửa tập tin grub.cfg nhé!

Vậy thì ta sẽ chỉnh sửa ở đâu? Hơi lằng nhằng một chút, những cũng không quá phức tạp đâu! Ta sẽ tìm đến tập tin tên là grub trong /etc/default/ . Đây mới chính là tập tin ta cần thay đổi (dĩ nhiên là với quyền root rồi nhé! )
# If you change this file, run ‘update-grub’ afterwards to update
    # /boot/grub/grub.cfg.

    GRUB_DEFAULT=0
    #GRUB_HIDDEN_TIMEOUT=0
    GRUB_HIDDEN_TIMEOUT_QUIET=true
    GRUB_TIMEOUT=10
    GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
    GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
    GRUB_CMDLINE_LINUX=”"

    # Uncomment to disable graphical terminal (grub-pc only)
    #GRUB_TERMINAL=console

    # The resolution used on graphical terminal
    # note that you can use only modes which your graphic card supports via VBE
    # you can see them in real GRUB with the command `vbeinfo’
    #GRUB_GFXMODE=640×480

    # Uncomment if you don’t want GRUB to pass “root=UUID=xxx” parameter to Linux
    #GRUB_DISABLE_LINUX_UUID=true

    # Uncomment to disable generation of recovery mode menu entrys
    #GRUB_DISABLE_LINUX_RECOVERY=”true”
Những dòng đầu tiên chắc sẽ quen thuộc nếu bạn có vọc với GRUB một hai lần. Hãy chú ý đến dòng đầu tiên:
GRUB_DEFAULT=0
Đây là thứ cần chỉnh nếu muốn thay đổi vị trí boot mặc định trong menu GRUB 2.
Hãy thay 0 bằng các con số tượng trưng cho vị trí của các mục trong menu (0 là mục đầu tiên) hay bằng từ “saved” – nét mới trong GRUB 2. Khi GRUB_DEFAULT=saved thì GRUB sẽ nhớ vị trí của mục đã được boot ở lần khởi động trước, lần khởi động sau sẽ trỏ đến đúng vị trí đó. Còn nếu thay bằng con số thì ta phải bận tâm đến mục lựa chọn mà ta muốn chọn làm mặc định nằm ở vị trí thứ mấy trong mục để điền vào cho thích hợp.
Trong trường hợp thay bằng số thì sau đây là cách để biết vị trí của mục cần chọn. Thông thường, các hệ điều hành khác được cài sẳn sẽ được Ubuntu nhận diện và để ở dưới cùng của bảng lựa chọn. Với phiên bản 9.10, Ubuntu cho ta tới 4 mục lựa chọn, vậy các hệ điều hành khác sẽ nằm từ vị trí thứ 5 trở đi, và vì vị trí đầu tiên bắt đầu từ số 0, cho nên vị trí thứ năm phải là số 4.
Để biết có bao nhiêu mục trong menu thì chạy lệnh sau:
grep menuentry /boot/grub/grub.cfg
Sau khi xem xét kĩ lưỡng ta thay 0 bằng 4:
GRUB_DEFAULT=4
Lưu lại tập tin và đừng có restart vội, vẫn còn một bước cuối cùng nữa:
Chạy lệnh này trong terminal:
sudo update-grub
Lệnh này sẽ cập nhật thông tin từ các tập tin riêng lẻ trong /etc/grub.d và tập tin vừa mới chỉnh /etc/default/grub vào trong tập tin /boot/grub/grub.cfg. Do đó, không được thay đổi tập tin grub.cfg một cách thủ công cũng là vì lẽ này.
Vậy là xong rồi đó. Rườm rà phức tạp quá phải không? Cái gì mới cũng cần có thời gian làm quen tìm hiểu, rồi đâu sẽ vào đó thôi.
Bổ sung: ngoài việc thay bằng các con số thứ tự và từ saved ra ta còn có thể dùng chính xác tên của mục lựa chọn. Ưu điểm là không cần phải quan tâm đến vị trí của mục trong bảng lựa chọn nữa. Cách thay như sau:
GRUB_DEFAULT=”xxxx”
Với xxxx là tên chính xác của mục, nhớ phải kẹp giữa 2 dấu ngoặc kép.
Để biết tên mục ta cũng chạy lệnh:
grep menuentry /boot/grub/grub.cfg
Hoặc:
Để chỉnh thứ tự ưu tiên boot trong Ubuntu bạn chỉ cần vào Terminal gõ lênh: gksu gedit /boot/grub/grub.cfg
Nó sẽ mở file grub.cfg .Muốn cho cái nào khởi động trước thì sửa cái chỗ SET_DEFAULT=0 sửa số 0 thành số thứ tự của dòng bạn muốn cho nó khởi động.
VD: Windows 7 của tôi ở dòng thứ 6(trong chế độ boot, khi màn hình mới bật lên) thì tôi sửa SET_DEFAULT=5, vì dòng đầu là 0. Have fun! ...

Không có nhận xét nào: