GRUB2: khởi động vào đĩa cứng thứ hai (khác)


10

Tôi đã nghiên cứu cho câu hỏi này, nhưng không thể tìm thấy câu trả lời rõ ràng ... hoặc thậm chí là một câu hỏi rõ ràng. Vì vậy, tôi sẽ sử dụng một ví dụ đơn giản.

Máy tính của tôi có ** hai đĩa cứng: **

  • Đĩa cứng 1 : Ubuntu Linux với GRUB2 trên MBR .
  • Đĩa cứng 2 : Bất kỳ hệ điều hành nào khác (có làm phiền cái nào không?) Với một số trình tải MBR khác.

GRUB2 chỉ khởi động lên Ubuntu (trong đĩa cứng thứ 1, trong ví dụ của tôi).
Phát hành update-grubkhông không phát hiện hệ điều hành trên đĩa cứng thứ 2, nhưng tôi biết có một.
Nếu tôi nhập BIOS vào thời gian khởi động và thay đổi thứ tự khởi động thành Hard Disk 2, hệ điều hành thứ hai sẽ khởi động OK .

Làm cách nào tôi có thể thêm một mục vào GRUB2 khởi động vào đĩa cứng thứ hai ?

(Thực tế là: Tôi nghĩ rằng câu hỏi này có thể được hỏi mà không chỉ định cái nào là hệ điều hành trong đĩa cứng thứ 2. Hay không?)

Thêm theo yêu cầu đầu ra của os-probermột máy mẫu có cấu hình này:

luis@threepwood:~$ sudo os-prober
/dev/sdb1:Windows 7 (loader):Windows:chain
/dev/sdb7:Ubuntu 14.04.3 LTS (14.04):Ubuntu:linux

Trong ví dụ cụ thể này (tôi đã thay đổi thứ tự khởi động tại BIOS):

  • sdb là ổ cứng-1.
  • sda là ổ cứng-2.

Ubuntu đã được biết là có vấn đề phát hiện các mục cài đặt / bộ nạp khởi động dựa trên RedHat trừ khi cái sau được gắn vào thời điểm khi update-grubchạy. Xem câu trả lời dưới đây từ "Radek Radek" (phk) để biết thêm chi tiết. Mặc dù vậy, nó nên được phát hiện mà không cần các bước bổ sung được liệt kê ở đó sau khi được gắn.
ILMostro_7

Câu trả lời:


2

Điều đó khá dễ dàng. Chỉ cần làm theo các bước.

Kịch bản ví dụ:

  • /dev/sda1 - CentOS

  • /dev/sdb1 - Debian

Hãy nói rằng trên ổ đĩa CentOS có MBR hoạt động. Vì vậy, chúng tôi có quyền truy cập vào hệ thống CentOS sau khi khởi động; Debian phải được thêm vào.

Các tác vụ trong HĐH hoạt động (CentOS trong kịch bản của chúng tôi):

  1. mount /dev/sdb1 /mnt/debian

  2. Cắt toàn bộ menuentryphần của Debian từ /mnt/debian/boot/grub{2}/grub.cfg, như dưới đây:

    menuentry 'Debian GNU/Linux' --class debian --class gnu-linux ... { ... }

  3. Bây giờ, tạo tập tin: touch /etc/grub.d/11_linux

  4. Vì đây là kịch bản, hãy nhớ làm: chmod +x /etc/grub.d/11_linux

  5. Thêm vào:

    #!/bin/sh
    echo "
    

    vào đầu 11_linuxvà dán phần đó vào nó. Kết thúc với "kết thúc. Vì vậy, chúng ta nên có:

    centos #~> cat /etc/grub.d/11_linux
    
    #!/bin/sh
    echo "menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-78026456-ebcc-4eed-b59d-a3f0bdff7353' {
        load_video
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  f2de4123-5a98-4568-99dd-e61940b99ab2
        else
          search --no-floppy --fs-uuid --set=root f2de4123-5a98-4568-99dd-e61940b99ab2
        fi
        echo    'Loading Linux 3.16.0-4-amd64 ...'
        linux   /vmlinuz-3.16.0-4-amd64 root=/dev/mapper/Thinkpad--vg-root ro  quiet
        echo    'Loading initial ramdisk ...'
        initrd  /initrd.img-3.16.0-4-amd64
    }"
    
  6. grub2-mkconfig -o /boot/grub{2}/grub.cfg

  7. Khởi động lại.

Voila.


Có vẻ như thực sự chỉ cần thực hiện bước 6 của bạn để giải quyết vấn đề ... os-probertìm cài đặt và thêm nó vào danh sách trong quá trình, vì vậy thực hiện tất cả các bước sẽ thực sự tạo ra các bản sao. Mặc dù, đó có thể là một sự khác biệt giữa grub-mkconfiggrub2-mkconfig
redbmk

2

Trong khi tôi khởi động vào GRUB từ USB-Stick, tôi đã nhấn cphím cho chế độ dòng lệnh , được nhập

rootnoverify (hd0)
chainloader +1
boot

et voilà, tôi cũng đã cho tôi GRUB, nhưng GRUB 2, thử lại

set root=(hd0)
chainloader +1
boot

Tôi lại gặp vấn đề tương tự, đã giải quyết;)


6
Câu trả lời này không dễ hiểu lắm. Bạn có thể chỉnh sửa nó để làm rõ không?
Robin Green

1

Xin chào, tôi chỉ có vấn đề tương tự. Tôi thấy rằng sau khi tôi cài đặt os-prober, grub-customizer đã có thể sử dụng os-prober để tìm HĐH trên ổ cứng thứ hai và thêm nó vào menu khởi động của tôi. Bạn có thể tìm thấy điều này dễ dàng hơn là chỉnh sửa các tập tin cấu hình :)


1

Tôi thường viết grub.cfgthủ công và không bao giờ sử dụng update-grubvà có một bộ tải khởi động chính Grub2, nơi tôi chọn từ nơi khởi động, sau đó tôi để mỗi bản phân phối linux cài đặt bộ tải khởi động riêng trên phân vùng gốc của mình, vì vậy linux có thể chỉnh sửa bộ tải khởi động của riêng nó mà không cần chạm vào bộ tải khởi động grub2 chính của tôi.

Và để nhảy sang đĩa MBR khác, tôi có loại mục này grub.cfgcho hệ điều hành bình thường mà không cần phải xem đĩa như thể nó là đĩa thứ nhất:

menuentry "Boot from second disk" {
   chainloader (hd1)+1
}
menuentry "Boot from third disk" {
   chainloader (hd2)+1
}
menuentry "Boot from fourth disk" {
   chainloader (hd3)+1
}

Vì vậy, nó chỉ cần tải MBR trên đĩa khác tôi muốn.

Nhưng đối với một số Linux khó tính (và cả một số Windows) muốn xem đĩa khác như thể nó là nơi đầu tiên tôi cũng thêm một số đơn đặt hàng vào các mục menu, vì vậy nó trông như thế này:

menuentry "Boot from second disk and see it as first disk" {
   set root=(hd1)
   drivemap -s hd0 hd1
   chainloader +1
}
menuentry "Boot from third disk and see it as first disk" {
   set root=(hd2)
   drivemap -s hd0 hd2
   chainloader +1
}
menuentry "Boot from fourth disk and see it as first disk" {
   set root=(hd3)
   drivemap -s hd0 hd3
   chainloader +1
}

Tất cả được giải thích chi tiết:

  • (hd #) đại diện cho đĩa, trong đó # bắt đầu từ số không

  • drivemap thực hiện việc hoán đổi các ổ đĩa, vì vậy bất kỳ đĩa nào cũng có thể được xem là đĩa đầu tiên hoặc bất kỳ số nào bạn muốn (nó hoán đổi thứ tự trên hai đĩa được nhìn thấy)

  • chainloader (hd #) + 1 nhảy tới MBR của đĩa

  • chainloader +1 nhảy đến khu vực đầu tiên của những gì được lưu trữ trên (root)

  • đặt root = ... đặt những gì (root) có.

  • (root) giống như một biến, có thể được sử dụng để gõ ít hơn

Đối với tài liệu đầy đủ về grub.cfgtập tin, bạn có thể xem trang web chính thức:

https://www.gnu.org/software/grub/manual/grub/grub.html


0

Tôi nghĩ bạn nên thêm một mục cho hdd thứ hai, trong cấu hình grub.

Không quan trọng đó là HĐH nào.

Tôi đang sử dụng sách kép với grub2 trên windows HDD. Nó phát hiện cả windows và linux và cung cấp cho tôi một menu để chọn một os để khởi động.

Để biết cấu hình nâng cao, tải chuỗi và thêm các mục maunal vào grub, hãy theo liên kết sau:

https://help.ubfox.com/community/Grub2/CustomMenus


Tôi giả sử bạn đang đề xuất một cái gì đó như # grub-install /dev/sdb. Nhưng điều đó sẽ sao chép cùng một menu GRUB trên HDD-2. Không phải là vấn đề nhưng ... sẽ không vô hiệu hóa MBR đã có trên HDD-2 (giả sử FreeBSD được cài đặt ở đó: nó ghi dữ liệu của chính nó trên MBR)?
Sopalajo de Arrierez

1
đầu ra của os-prober lệnh là gì?
Ijaz Ahmad Khan

Câu hỏi là một trường hợp hipothetycal, nhưng tôi có một máy có cấu hình tương tự, vì vậy tôi đã chỉnh sửa câu hỏi ban đầu với thông tin đó.
Sopalajo de Arrierez

để thêm mục, hãy đọc cú pháp trong liên kết đã được chứng minh
Ijaz Ahmad Khan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.