Làm cách nào để cài đặt GRUB vào toàn bộ đĩa ext4 mà không cần bảng phân vùng?


15

Hiện tại tôi có toàn bộ đĩa /dev/sdađược định dạng là ext4 và đã cài đặt Gentoo.

(Không có MBR, không có phân vùng nào cả.)

Nhưng cuối cùng, tôi không thể cài đặt GRUB trên đó, vì có vẻ như GRUB cần phải ghi vào MBR.

# grub-install /dev/sda
Unknown partition table signature
Unknown partition table signature
Unknown partition table signature
Unknown partition table signature
Unknown partition table signature
The file /boot/grub/stage1 not read correctly. 

cũng không grublàm việc,

# grub
grub> root (hd0)
 Filesystem type unknown, using whole disk

grub> setup (hd0)
 Error 17: Cannot mount selected partition

Tôi có thể cài đặt GRUB vào / dev / sda bằng cách nào mà không cần MBR không?

PS Thư mục /bootgrub.conftập tin:

# tree /boot 
/boot
|-- boot -> .
|-- grub
|   |-- default
|   |-- device.map
|   |-- e2fs_stage1_5
|   |-- fat_stage1_5
|   |-- ffs_stage1_5
|   |-- grub.conf
|   |-- iso9660_stage1_5
|   |-- jfs_stage1_5
|   |-- menu.lst -> grub.conf
|   |-- minix_stage1_5
|   |-- reiserfs_stage1_5
|   |-- splash.xpm.gz
|   |-- stage1
|   |-- stage2
|   |-- stage2_eltorito
|   |-- ufs2_stage1_5
|   |-- vstafs_stage1_5
|   `-- xfs_stage1_5
`-- kernel-2.6.36-gentoo-r5

# cat /boot/grub/grub.conf
default 0
timeout 30
splashimage=(hd0)/boot/grub/splash.xpm.gz

title Gentoo Linux 2.6.36-r5
root (hd0)
kernel /boot/kernel-2.6.36-gentoo-r5 root=/dev/sda

title Gentoo Linux 2.6.36-r5 Rescue
kernel /boot/kernel-2.6.36-gentoo-r5 root=/dev/sda init=/bin/bb

# cat /boot/grub/devices
(fd0)   /dev/fd0
(hd0)   /dev/sda

Sẽ rất hữu ích nếu bạn có thể bao gồm lệnh bạn đã sử dụng và thông báo lỗi mà bạn nhận được khi cố gắng cài đặt. Ví dụ, bạn đã thử grub-install /dev/sdachưa?
phunehehe

Tôi đã tạo lại bố cục đĩa bằng MBR và sao chép hệ thống tệp thô vào phân vùng duy nhất của đĩa. Mặc dù vậy, tôi sẽ thử cài đặt Gento mới và dán thông báo lỗi một thời gian sau. Cảm ơn
Xiè Jìléi

EDIT Tôi đã thêm thông báo lỗi.
Xiè Jìléi

Câu trả lời:


5

BIOS đọc sector đầu tiên (512 byte) của đĩa và phân nhánh vào nó. Nếu đĩa của bạn chứa các phân vùng kiểu PC, cung đầu tiên cũng chứa bảng phân vùng. Nếu đĩa của bạn chứa một hệ thống tệp duy nhất, cung đầu tiên chứa bất cứ thứ gì mà hệ thống tệp quyết định đặt ở đó. Trong trường hợp của ext [234] (và nhiều hệ thống tập tin khác), sector đầu tiên được dành riêng cho bộ tải khởi động (và ban đầu bị loại bỏ). Bạn có thể cài đặt Grub trên /dev/sda.

Điều đó đang được nói, đôi khi các BIOS từ chối khởi động từ một thiết bị không chứa bảng phân vùng. (Nhưng cũng có những BIOS từ chối khởi động từ một số thiết bị bên ngoài nếu chúng có chứa bảng phân vùng!) Nếu bạn có một trong những BIOS này, bạn sẽ phải tạo bảng phân vùng.

Ngay cả khi một bảng phân vùng là không cần thiết, nó được khuyến khích. Bạn chỉ lãng phí một vài kilobyte và có thể đọc được dưới nhiều hệ điều hành không phải là Linux và ít gây bất ngờ cho bất kỳ co-sysadmin nào. Nếu bạn vô tình cắm đĩa của mình vào máy chạy Windows, nó có thể đề nghị bạn định dạng lại đĩa nếu nó không nhìn thấy bảng phân vùng, trong khi nó sẽ phàn nàn rằng nó không thể đọc dữ liệu nếu thấy bảng phân vùng có một loại phân vùng nó không nhận ra.

¹ Trong thực tế, khối đầu tiên, tôi nghĩ rằng, nơi một khối là 1KB, 2kB hoặc 4KB tùy thuộc vào các tùy chọn truyền cho mkfs.


5
Nó được sử dụng bởi hệ điều hành Gentoo của khách trong VirtualBox. Tôi đã tạo một đĩa ảo .vmdk mà back-end bằng một raw image.ext4. Lý do tôi sử dụng toàn bộ đĩa cho một hệ thống tệp là vì tôi muốn gắn âm lượng trực tiếp vào hệ điều hành máy chủ, mà không cần phân vùng bù trừ như thế -o loop,offset=1048576.
Xiè Jìléi

1
Trong một trường hợp liên quan, chúng tôi có các đĩa FC được gắn vào một hệ thống. Chúng có nghĩa là JBOD để sử dụng bởi cơ sở dữ liệu hoặc LVM, dự định không có phân vùng. Khi cài đặt lại Grub --recheck, nó sẽ cập nhật bảng bản đồ với các ổ đĩa không có phân vùng đó, sau đó phàn nàn khi nó cổ vũ bảng phân vùng không tồn tại của chúng. Nếu tôi xóa các đường dẫn ổ đĩa này khỏi tệp bản đồ, cảnh báo sẽ biến mất.
Otheus


0

Tất cả mọi thứ mong đợi một bảng phân vùng. Tôi nghĩ rằng bạn sẽ phải cài đặt lại và làm theo các hướng dẫn được đề xuất là có ít nhất một phân vùng / boot, trao đổi và / root. Trao đổi của bạn ở đâu?


4
Linux không quan tâm. Hầu hết các BIOS không quan tâm (mặc dù một số làm). Các phân vùng trao đổi và khởi động riêng biệt là không cần thiết và /bootkhông còn được khuyến nghị trên phần cứng hiện đại (đó là một cách loại bỏ các giới hạn BIOS về kích thước đĩa và thiếu hỗ trợ cho các chế độ đĩa nâng cao như LVM trong Grub 1).
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles Ý bạn là, tôi có thể có LVM mà không cần tách /boot? Nếu vậy, tại sao tốt hơn là để /boottrong cùng một phân vùng như /?
phunehehe

2
@phunehehe: Bạn có thể có LVM mà không cần tách riêng /bootvới Lilo hoặc Grub 2, nhưng không có Grub 1. Một riêng biệt /bootcó chi phí quản lý (bạn cần tạo thêm một phân vùng và bạn cần cẩn thận không trộn lẫn /bootvới /), vì vậy bạn sẽ chỉ sử dụng một lý do nếu có lý do (chẳng hạn như bộ tải khởi động của bạn không hiểu LVM).
Gilles 'SO- ngừng trở nên xấu xa'

1
@Gilles bây giờ bạn làm cho tôi cảm thấy như cài đặt lại ...
phunehehe

1
Bạn cũng có thể có những thứ như mã hóa toàn bộ đĩa :)
XtL
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.