Chainload hai cài đặt Grub2


14

Điều này thực sự làm tôi thất vọng. Tôi có Gentoo và Ubuntu, cả hai đều có Grub2. Gentoo có một /bootphân vùng chuyên dụng , trong khi Ubuntu thì không. Tôi có một menuentryGentoo /etc/grub.d/40_customđể khởi động Ubuntu (và Ubuntu không khởi động được).

Bởi vì Ubuntu đi kèm với Grub, tôi muốn chainload vào cái đó, thay vì duy trì mục nhập của tôi, thiết lập root, kernel, initrd và Stuff. Đây là những gì tôi có cho trình tải chuỗi (Ubuntu đã bật /dev/sda4và tôi đã cài đặt Grub ở đó):

menuentry 'Chainloader' {
    insmod chain
    set root=(hd0,4)
    chainloader +1
}

Nó đang cho tôi error: Invalid signaturevà tôi không tìm thấy giải pháp nào cả. Ai đó có thể chỉ ra một cái gì đó?

Đây là kết quả của </dev/sda4 head -c 512 | hd

00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200

Đây là kết quả của fdisk -l. /dev/sda1/bootcủa Gentoo, Gentoo ở trong /dev/sda2, Ubuntu đang ở /dev/sda4. Ubuntu ấy /bootlà trong /dev/sda4quá.

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe001152b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           9       72261   83  Linux
/dev/sda2              10       13064   104864287+  8e  Linux LVM
/dev/sda4   *       18152       19457    10490445   83  Linux

Không có lỗi với grub-install /dev/sda4 --no-floppy --force

/usr/sbin/grub-setup: warn: Attempting to install GRUB to a partition instead of the MBR.  This is a BAD idea..
/usr/sbin/grub-setup: warn: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
Installation finished. No error reported.

Rõ ràng bạn chưa cài đặt bộ tải khởi động /dev/sda4. Bạn có nhiều hơn một đĩa không? Bảng phân vùng của bạn là gì? Xin vui lòng gửi đầu ra của fdisk -l, và các tin nhắn từ grub-install /dev/sda4 --no-floppy --force.
Gilles 'SO- đừng trở nên xấu xa'

vâng, tôi đã cập nhật câu hỏi
phunehehe

Câu trả lời:


4

Bạn có thể chainload GRUB2 từ GRUB2, tôi chỉ thử nó theo cách bạn mô tả và nó hoạt động. Tuy nhiên, thông tin bạn cung cấp làm cho nó trông giống như hình ảnh khởi động không được nhúng vào MBR của đĩa (hoặc nó sẽ không phải là số không).

Tôi sẽ thử điều này, mặc dù nó không chính xác sử dụng GRUB2 từ Ubuntu (chỉ là tệp cấu hình). Bạn có thể tạo một mục menu trong tệp cấu hình Gentoo GRUB2 tải tệp cấu hình Ubuntu. Có hai cách tôi thấy để làm điều này.

Lệnh tôi sẽ sử dụng là với lệnh thông thường , cho phép bạn chỉ định tệp cấu hình để tải cho chế độ bình thường. Nếu bạn đi theo tuyến đường này, có một lệnh gọi là normal_exit mà bạn có thể thêm dưới dạng một mục tùy chỉnh trong cấu hình Ubuntu sẽ cho phép bạn quay lại cấu hình Gentoo của mình.

Tùy chọn khác là lệnh configfile , cho phép bạn chỉ định tệp cấu hình thay thế để tải. Có vẻ như sẽ khó hơn để "rút lui" tùy chọn này.

Thông tin thêm về các lệnh này có thể được tìm thấy ở đây .


3

Phần đầu của quá trình khởi động bao gồm tải mã từ khu vực đầu tiên của ổ cứng, được gọi là Bản ghi khởi động chính (MBR) . Thông thường, Grub được ghi vào khu vực ổ cứng đầu tiên này chứ không phải vào khu vực đầu tiên của phân vùng giữ / khởi động. Tuy nhiên, thông thường bạn có thể thay đổi điều này trong quá trình cài đặt Linux nhưng trong các thói quen cài đặt hiện đại, điều này thường bị ẩn đi.

Bạn nói rằng bạn đã cài đặt Grub vào / dev / sda4, tuy nhiên cấu hình của bạn có vẻ chính xác và thông báo lỗi bạn đã đăng cho thấy, Grub có thể không được cài đặt chính xác vào phân vùng bạn muốn tải chuỗi. Bạn nên khởi động vào Gentoo, sau đó chroot vào phân vùng Ubuntu. Hãy chắc chắn rằng / boot bây giờ trỏ chính xác vào Ubuntu- / boot chứ không phải Gentoo! Bây giờ cài đặt Grub 2 vào khu vực đầu tiên của Phân vùng Ubuntu / dev / sda4:grub-install /dev/sda4 --no-floppy .

Như mọi khi khi đấu tranh với MBR và các phân vùng, hãy đảm bảo bạn có một bản sao lưu chức năng, cập nhật trước khi bạn bắt đầu.


nó có làm nên sự khác biệt nếu tôi khởi động vào Ubuntu và chạy cài đặt grub không? Vì đó là những gì tôi đã làm và nó không hoạt động :(
phunehehe

Tôi nghĩ bạn không thể khởi động vào Ubuntu vì chuỗi tải không hoạt động? Nhưng không, nó sẽ không tạo ra sự khác biệt nếu bạn khởi động vào Ubuntu hoặc chroot vào nó.
fschmitt

@phunehehe: Thông báo lỗi có nghĩa là Grub chưa tìm thấy chữ ký bộ nạp khởi động trong khu vực đầu tiên của /dev/sda4(hai byte cuối cùng phải là 0x55 0xaa). Bạn có thể gửi đầu ra của </dev/sda4 head -c 512 | hd?
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles: Tôi đã thêm kết quả cho câu hỏi. Có vẻ không đúng, phải không?
phunehehe

thực sự tôi phải chạy grub-install /dev/sda4 --no-floppy --force, nếu không sẽ có một số phàn nàn về danh sách chặn
phunehehe

-1

Không phải sda4 sẽ trở thành (hd0,3) trong grub, hay loại điều này đã thay đổi trong grub2?


vâng, tôi chắc chắn / dev / sda4 sẽ trở thành (hd0,4) bởi vì đó là những gì tôi đã sử dụng để khởi động Ubuntu
phunehehe

3
Có, Grub 0.97 bắt đầu đếm đĩa cứng và phân vùng bằng 0. Grub 2 vẫn bắt đầu đếm đĩa bằng 0 nhưng bắt đầu đếm phân vùng với 1. Vì vậy / dev / sda4 là hd0,3 trong Grub 0.97 và hd0,4 trong Grub 2.
fschmitt
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.