วิธีการติดตั้ง GRUB ลงในดิสก์ ext4 ทั้งหมดโดยไม่มีตารางพาร์ติชั่น?


15

ขณะนี้ฉันมี/dev/sdaรูปแบบดิสก์ทั้งหมดเป็น ext4 และติดตั้ง Gentoo

(ไม่มี MBR ไม่มีพาร์ติชันเลย)

แต่ในที่สุดฉันไม่สามารถติดตั้ง GRUB ได้เพราะดูเหมือนว่า GRUB ต้องเขียนถึง 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. 

ไม่grubทำงาน

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

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

ฉันจะติดตั้ง GRUB ลงใน / dev / sda โดยไม่ใช้ MBR ได้อย่างไร?

PS /bootไดเรกทอรีและgrub.confไฟล์:

# 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

จะมีประโยชน์หากคุณสามารถรวมคำสั่งที่คุณใช้และข้อความแสดงข้อผิดพลาดที่คุณได้รับเมื่อพยายามติดตั้ง ตัวอย่างเช่นคุณเคยลองgrub-install /dev/sdaบ้างไหม?
phunehehe

ฉันได้สร้างเค้าโครงดิสก์ใหม่ด้วย MBR แล้วและคัดลอกระบบไฟล์ดิบไปยังพาร์ติชันเดียวของดิสก์ แม้ว่าฉันจะลองติดตั้ง Gento ใหม่และวางข้อความแสดงข้อผิดพลาดในภายหลัง ขอบคุณ
XièJìléi

แก้ไขฉันได้เพิ่มข้อความผิดพลาด
XièJìléi

คำตอบ:


5

BIOS จะอ่านเซกเตอร์แรก (512 ไบต์) ของดิสก์และแตกสาขา หากดิสก์ของคุณมีพาร์ติชั่นสไตล์ PC ภาคแรกก็จะมีตารางพาร์ติชั่นด้วย หากดิสก์ของคุณมีระบบไฟล์เดียวส่วนแรกจะมีสิ่งที่ระบบไฟล์ตัดสินใจวางไว้ ในกรณีของ ext [234] (และระบบไฟล์อื่น ๆ อีกมากมาย), เซกเตอร์แรกจะถูกสงวนไว้สำหรับ bootloader (และเริ่มแรกเป็นศูนย์) คุณสามารถติดตั้ง Grub /dev/sdaได้

อย่างที่กล่าวไปแล้วว่ามีไบออสเป็นครั้งคราวซึ่งปฏิเสธที่จะบู๊ตจากอุปกรณ์ที่ไม่มีตารางพาร์ติชัน (แต่ยังมีไบออสที่ปฏิเสธที่จะบู๊ตจากอุปกรณ์ภายนอกบางตัวหากมีตารางพาร์ติชั่น!) หากคุณมีไบออสเหล่านี้คุณจะต้องสร้างตารางพาร์ติชัน

แม้ว่าจะไม่จำเป็นต้องใช้ตารางพาร์ติชันก็ตาม คุณเสียเวลาเพียงไม่กี่กิโลไบต์และสามารถอ่านได้ภายใต้ระบบปฏิบัติการที่ไม่ใช่ Linux จำนวนมากและแปลกใจน้อยลงสำหรับผู้ดูแลระบบ หากคุณเสียบดิสก์ของคุณลงในเครื่องที่ใช้ Windows โดยบังเอิญอาจแนะนำให้คุณฟอร์แมตดิสก์ใหม่หากไม่เห็นตารางพาร์ติชันในขณะที่มันแค่บ่นว่ามันไม่สามารถอ่านข้อมูลได้หากเห็นตารางพาร์ติชันด้วย ประเภทพาร์ติชันที่ไม่รู้จัก

¹ ในความเป็นจริงบล็อกแรกผมคิดว่าที่บล็อกเป็น 1KB, 2KB หรือ 4KB mkfsขึ้นอยู่กับตัวเลือกที่ผ่านมา


5
มันถูกใช้โดยแขก Gentoo OS ใน VirtualBox ฉันได้สร้าง .vmdk ดิสก์เสมือนซึ่ง back-end image.ext4โดยดิบ เหตุผลที่ฉันใช้ดิสก์ทั้งหมดสำหรับระบบไฟล์หนึ่งก็คือว่าผมต้องการที่จะติดตั้งไดรฟ์โดยตรงใน OS -o loop,offset=1048576โฮสต์โดยไม่ต้องพาร์ทิชันหากินชดเชยเช่น
XièJìléi

1
ในกรณีที่เกี่ยวข้องเรามีดิสก์ FC ติดอยู่กับระบบ สิ่งเหล่านี้มีความหมายว่าเป็น JBOD สำหรับการใช้งานโดยฐานข้อมูลหรือ LVM โดยตั้งใจให้ไม่มีการแบ่งพาร์ติชัน เมื่อทำการติดตั้ง Grub ใหม่อีกครั้ง--recheckก็จะทำการอัพเดตตารางแผนที่พร้อมกับไดรฟ์ที่ไม่มีพาร์ติชั่นเหล่านั้นจากนั้นก็บ่นเมื่อมันทำเครื่องตารางพาร์ติชั่นที่ไม่มีอยู่ หากฉันลบเส้นทางของไดรฟ์เหล่านี้ออกจากไฟล์แผนที่คำเตือนจะหายไป
Otheus

2

ไม่ใช่ข้อบังคับที่ GRUB จะต้องเขียนถึง MBR คุณสามารถติดตั้งลงบนเซกเตอร์สำหรับบูตพาร์ติชันและปล่อยให้ตัวโหลดการบูตอื่นจาก MBR โหลดได้เช่นโหลดเดอร์ของ Windows 7

http://www.linuxselfhelp.com/gnu/grub/html_chapter/grub_3.html


0

ทุกอย่างเกี่ยวกับตารางพาร์ทิชัน ฉันคิดว่าคุณจะต้องติดตั้งใหม่และปฏิบัติตามแนวทางที่แนะนำในการมีอย่างน้อย a / boot, swap และ / root partition แลกเปลี่ยนของคุณอยู่ที่ไหน


4
Linux ไม่สนใจ BIOSes ส่วนใหญ่ไม่สนใจ (แม้ว่าบางคนจะทำ) ไม่จำเป็นต้องสลับพาร์ติชั่นการบูตและพาร์ติชั่นแยกต่างหากและ/bootไม่แนะนำให้ใช้กับฮาร์ดแวร์ที่ทันสมัยอีกต่อไป (มันเป็น kludge ที่จะข้ามข้อ จำกัด ของ BIOS ในขนาดของดิสก์และไม่รองรับโหมดดิสก์ขั้นสูงเช่น LVM ใน Grub 1)
Gilles 'หยุดชั่วร้าย'

@Gilles คุณหมายถึงฉันสามารถมี LVM โดยไม่ต้องแยก/bootหรือไม่ ถ้าเป็นเช่นนั้นทำไมมันดีที่จะออก/bootในพาร์ทิชันเดียวกับ/?
phunehehe

2
@phunehehe: คุณสามารถมี LVM ได้โดยไม่ต้องแยก/bootกับ Lilo หรือ Grub 2 แต่ไม่ใช่กับ Grub 1 แยกจากกัน/bootมีค่าใช้จ่ายในการบริหาร (คุณจำเป็นต้องสร้างพาร์ติชันเพิ่มเติมอีกหนึ่งรายการและคุณต้องระวังไม่ให้สับสน/bootกับ/) ดังนั้นคุณจะใช้เพียงอย่างเดียวหากมีเหตุผล (เช่น bootloader ของคุณไม่เข้าใจ LVM)
Gilles 'หยุดชั่วร้าย'

1
@Gilles ตอนนี้คุณทำให้ฉันรู้สึกเหมือนติดตั้ง ...
phunehehe

1
นอกจากนี้คุณยังสามารถมีสิ่งที่ต้องการการเข้ารหัสดิสก์ทั้ง :)
XTL
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.