Bagaimana cara menginstal GRUB ke seluruh disk ext4 tanpa tabel partisi?


15

Saat ini saya memiliki seluruh disk yang /dev/sdadiformat sebagai ext4, dan menginstal Gentoo.

(Tidak ada MBR, tidak ada partisi sama sekali.)

Tetapi akhirnya, saya tidak dapat menginstal GRUB di atasnya, karena sepertinya GRUB perlu menulis ke 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. 

tidak grubbekerja,

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

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

Bagaimana saya bisa menginstal GRUB ke / dev / sda tanpa MBR?

PS /bootDirektori dan grub.conffile:

# 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

Akan sangat membantu jika Anda dapat memasukkan perintah yang Anda gunakan dan pesan kesalahan yang Anda dapatkan ketika mencoba menginstal. Misalnya, sudahkah Anda mencoba grub-install /dev/sda?
phunehehe

Saya sudah membuat ulang tata letak disk dengan MBR, dan menyalin sistem file mentah ke partisi tunggal disk. Meskipun demikian, saya akan mencoba lagi instalasi Gento baru dan menempelkan pesan kesalahan beberapa waktu kemudian. Terima kasih
Xiè Jìléi

EDIT Saya telah menambahkan pesan kesalahan.
Xiè Jìléi

Jawaban:


5

BIOS membaca sektor pertama (512 byte) dari disk dan bercabang ke dalamnya. Jika disk Anda berisi partisi bergaya PC, sektor pertama juga berisi tabel partisi. Jika disk Anda berisi sistem file tunggal, sektor pertama berisi apa pun sistem file yang memutuskan untuk diletakkan di sana. Dalam kasus ext [234] (dan banyak sistem file lainnya), sektor pertama¹ dicadangkan untuk bootloader (dan pada awalnya nol). Anda dapat menginstal Grub di /dev/sda.

Yang sedang berkata, ada sesekali BIOS yang menolak untuk mem-boot dari perangkat yang tidak mengandung tabel partisi. (Tetapi ada juga BIOS yang menolak untuk mem-boot dari beberapa perangkat eksternal jika mereka memang berisi tabel partisi!) Jika Anda memiliki salah satu dari BIOS ini, Anda harus membuat tabel partisi.

Bahkan jika tabel partisi tidak diperlukan, ini direkomendasikan. Anda hanya menyia-nyiakan beberapa kilobyte, dan mendapatkan keterbacaan di bawah banyak OS non-Linux dan kurang mengejutkan untuk co-sysadmin apa pun. Jika Anda secara tidak sengaja mencolokkan disk Anda ke mesin yang menjalankan Windows, ini mungkin menyarankan Anda untuk memformat ulang disk jika tidak melihat tabel partisi, sedangkan itu hanya akan mengeluh tidak dapat membaca data jika melihat tabel partisi dengan tipe partisi yang tidak dikenali.

¹ Sebenarnya, blok pertama, saya pikir, di mana satu blok adalah 1kB, 2kB atau 4kB tergantung pada opsi yang diteruskan mkfs.


5
Ini digunakan oleh OS tamu Gentoo di VirtualBox. Saya telah membuat disk virtual .vmdk yang back-end oleh mentah image.ext4. Alasan saya menggunakan seluruh disk untuk satu sistem file adalah bahwa, saya ingin me-mount volume langsung di OS host, tanpa offset partisi yang rumit seperti -o loop,offset=1048576.
Xiè Jìléi

1
Dalam kasus terkait, kami memiliki disk FC yang melekat pada suatu sistem. Ini dimaksudkan sebagai JBOD untuk digunakan oleh database atau LVM, yang dimaksudkan sebagai partisi. Ketika menginstal ulang Grub dengan --recheck, itu akan memperbarui tabel petanya dengan drive tanpa partisi itu, lalu mengeluh ketika ia mencoba tabel partisi yang tidak ada. Jika saya menghapus jalur drive ini dari file peta, peringatan itu hilang.
Otheus


0

Hampir semuanya mengharapkan tabel partisi. Saya pikir Anda harus menginstal ulang, dan ikuti panduan yang disarankan untuk memiliki setidaknya partisi / boot, swap, dan / root. Di mana swap Anda?


4
Linux tidak peduli. Sebagian besar BIOS tidak peduli (meskipun beberapa melakukannya). Partisi swap dan boot yang terpisah tidak diperlukan, dan /boottidak lagi direkomendasikan pada perangkat keras modern (itu adalah kludge untuk memotong batasan BIOS pada ukuran disk dan kurangnya dukungan untuk mode disk canggih seperti LVM di Grub 1).
Gilles 'SO- stop being evil'

@Gilles Maksud Anda, saya dapat memiliki LVM tanpa dipisahkan /boot? Jika demikian, mengapa lebih baik pergi/boot di partisi yang sama /?
phunehehe

2
@ phunehehe: Anda dapat memiliki LVM tanpa terpisah /bootdengan Lilo atau Grub 2, tetapi tidak dengan Grub 1. Sebuah terpisah /bootmemiliki biaya administrasi (Anda perlu membuat satu partisi lagi, dan Anda perlu berhati-hati untuk tidak berbaur /bootdengan/ ), jadi Anda hanya akan menggunakan satu jika ada alasan (seperti bootloader Anda tidak memahami LVM).
Gilles 'SO- berhenti menjadi jahat'

1
@Gilles sekarang Anda membuat saya merasa ingin menginstal ulang ...
phunehehe

1
Anda juga dapat memiliki hal-hal seperti enkripsi seluruh disk :)
XTL
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.