Máy chủ Ubuntu, bảng phân vùng gpt, mdadm, grub boot fail


9

Chi tiết hệ thống làm việc cơ bản:

Tôi đã sử dụng CD máy chủ Ubuntu 12.04 để cài đặt máy chủ.

Tôi có 4 đĩa. Trên tất cả các đĩa tôi đã làm như sau, tương tự như cách này :

  • đã tạo phân vùng trao đổi 2GB
  • đã tạo phân vùng 256 GB / khởi động
  • đã tạo phân vùng RAID10 64 GB (cho root)
  • đã tạo một phân vùng RAID10 lớn chiếm phần còn lại của không gian

Tôi định dạng boot là ext3. Tôi thiết lập RAID10 trên các phân vùng gốc và lớn. Tôi định dạng gốc một ext4. Tôi đã tạo ra một khối lượng logic trên cái lớn và định dạng nó ext4.

Hệ thống kết quả hoạt động tốt, và khởi động tốt.

Chi tiết vấn đề:

Sau đó, tôi quyết định làm tài liệu cho một thủ tục thất bại. Bước đầu tiên, tôi quyết định sẽ cài đặt lại grub.

# grub-install /dev/sda
warn: This GPT partition label has no BIOS Boot Partition; embedding won't be possible!.
error: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
# grub-install /dev/sdb
warn: This GPT partition label has no BIOS Boot Partition; embedding won't be possible!.
error: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..

Vì vậy, có vẻ như nó đã thất bại, nhưng cũng có vẻ như nó đã từ bỏ và không thực hiện thay đổi. Thế là tôi khởi động lại. Việc khởi động thất bại. Nó chỉ bị treo với một màn hình đen với một con trỏ nhấp nháy xuống khoảng 4 dòng. Nếu tôi khởi động giữ "Shift", tôi sẽ thấy từ "GRUB" ở bên trái con trỏ, nhưng không có dấu nhắc tương tác.

Tại thời điểm này, tôi đã sử dụng boot-Repair-đĩa để tạo báo cáo này: http : //paste.ub Ubuntu.com/966531/

Lưu ý trong báo cáo trên, nó nói rằng bộ nạp khởi động không trỏ đến đúng sector cho core.img. (sda là đĩa CD ảo

Sau đó, tôi khởi động từ CD máy chủ Ubuntu, khởi động hệ thống cứu hộ và đưa ra các lệnh sau, đã hoàn thành mà không gặp lỗi (trong đó sda là CD ảo và b, c, d, e là các đĩa là a, b, c , d trong các lệnh grub trước đó):

# parted /dev/sdb set 2 bios_grub on
# parted /dev/sdc set 2 bios_grub on
# grub-install /dev/sdb
# grub-install /dev/sdc

Tại thời điểm này, tôi đã sử dụng boot-Repair-đĩa để tạo báo cáo này: http://paste.ubfox.com/966561/

Lưu ý rằng trong báo cáo trên, vấn đề về core.img đã biến mất. Nó dường như chỉ đến đúng khu vực.

Bây giờ nếu tôi cố gắng khởi động, tôi nhận được một dấu nhắc grub. Nếu tôi chạy "set", tôi thấy root đó được tìm thấy và thiết lập. Nếu tôi chạy "ls /", tôi thấy thư mục gốc của mình từ khối lượng đột kích, bao gồm cả tệp nhân vmlinuz. Nếu tôi gõ "ls / vmlinuz" thì nó báo "lỗi: không tìm thấy tệp." Nó báo lỗi tương tự nếu tôi sử dụng lệnh "linux" để thử tải kernel. Tệp vmlinuz không được liệt kê nếu tôi sử dụng "ls -l /".

Chi tiết quá dài dòng, trong trường hợp bạn muốn theo dõi:

Tôi nhận thấy cũng không có /boot/grub/grub.cfg, vì vậy tôi đã chạy

# grub-mkconfig -o /boot/grub/grub.cfg

Nhưng vấn đề vẫn còn.

Nếu tôi sử dụng công cụ "gptsync", sẽ không có thay đổi nào trong hành vi này.

Đĩa khởi động-sửa chữa sẽ không sửa chữa hệ thống, vì nó muốn tôi khởi động với một bios được kích hoạt EFI. Tôi thoáng nhìn vào điều này, nhưng tôi không biết nó hoạt động như thế nào. Tôi đã tìm thấy trình bao UEFI trong các tùy chọn khởi động của mình, nhưng tôi không biết gì về nó và không thấy cách thay đổi khởi động từ đó (ví dụ: để khởi động CD từ trình bao EFI đó).

Tôi cũng đã đọc trang này , nhưng Ubuntu không đi kèm với lệnh "grub", vì vậy tôi không thể theo dõi chính xác. Tôi chỉ có thể cài đặt lệnh đó, nhưng tôi tò mò hơn để tìm hiểu cách trình cài đặt Ubuntu quản lý để cài đặt nó thay vì có một thiết lập khác. Nó đã sử dụng danh sách chặn?

Đây là đầu ra của parted, trong khi khởi động trên đĩa boot-sửa chữa (trong đó sdb là đĩa cứng đầu tiên, sda khi được khởi động từ đĩa và "boot" thay đổi thành "bios_grub" trong liên kết dán thứ 2):

Model: ATA Hitachi HUA72303 (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system     Name   Flags
1      17.4kB  2000MB  2000MB  linux-swap(v1)  swap1
2      2000MB  2256MB  256MB   ext3            boot1  boot (this says bios_grub in 2nd link)
3      2256MB  66.3GB  64.0GB                  root1  raid
4      66.3GB  3001GB  2934GB                  data1  raid

Dưới đây là một máy ảo siêu cũ không liên quan để so sánh (đối với bất kỳ ai không quen với boot-Repair-đĩa ): http : //paste.ub Ubuntu.com/966799/

Đây là lần dán mới nhất từ ​​hệ thống sự cố, sau khi chạy grub-mkconfig ở trên và cũng đặt "bios_grub" trở lại "boot". http://paste.ubfox.com/966808/

So sánh hai, điều này có vẻ thú vị:

sdb2: __________________________________________________________________________

File system:       
Boot sector type:  Grub2's core.img
Boot sector info: 
Mounting failed:   mount: unknown filesystem type ''

md/bcserver8:0: ________________________________________________________________

File system:       ext4
Boot sector type:  -
Boot sector info: 
Operating System:  Ubuntu 12.04 LTS
Boot files:        /boot/grub/grub.cfg /etc/fstab /boot/grub/core.img

Có vẻ như cuộc đột kích có các tệp khởi động và sdb2 không được định dạng. (mặc dù vậy, hệ thống đã khởi động trước khi chạy grub-install). Từ đĩa CD cứu hộ, "mount -t ext3 / dev / sdb2 / boot" không thành công. Nhưng điều này có nghĩa là điều này sẽ gây nhầm lẫn cho mọi thứ, vì grub sử dụng phân vùng 2 một cách rõ ràng (2 trong lệnh chia tay đã đặt bios_grub trên).

Vì vậy, tôi đã làm một cái gì đó như thế này:

# mkfs.ext3 -L boot1 /dev/sdb2
# mv boot boot_on_root
# mkdir boot
# mount /dev/sdb2 boot
# rsync -avHP boot_on_root/ boot/
# parted /dev/sdb set 2 bios_grub on
# parted /dev/sdc set 2 bios_grub on
# grub-install /dev/sdb
# grub-install /dev/sdc

Sau đó khởi động lại, và tôi có màn hình đen một lần nữa, không có dấu nhắc. http://paste.ubfox.com/966848/

Vì vậy, tại thời điểm này, tôi đoán là khi bios_grub được thiết lập, grub không cài đặt vào MBR và không cài đặt hệ thống tệp ext3 trên ext3, nhưng trên chính phân vùng, như thể đó là EFI ... rõ ràng sẽ gây rối lên hệ thống tập tin ext3 đó. Từ bài đọc ngắn gọn của tôi về EFI, có vẻ như EFI giả định phân vùng đầu tiên là khởi động, nhưng trong trường hợp của tôi, đầu tiên là trao đổi, và sau đó nó phải là FAT chứ không phải là một thứ gì đó không thể đếm được ... ý nghĩa, tôi vẫn hoàn toàn bị mất mà không có manh mối. [EDIT: bây giờ tôi có manh mối ... bỏ qua một chút để cập nhật]

Và bây giờ khi tôi nhấp vào sửa chữa trong boot-Repair-đĩa , nó sẽ hỏi một cái gì đó khác. Lần trước lỗi đã bị ẩn dưới cửa sổ và tôi phải kéo người kia đi để xem. Lần này, cửa sổ chính không còn nữa và cửa sổ mới cho biết:

GPT detected.       You may want to retry after creating a
BIOS-Boot partition (>1Mo, flag). Do you want to continue?

Vì vậy, tôi đã nhấp vào có, và nó nói rằng nó đã được sửa chữa thành công và tạo ra một dán khác: http : //paste.ub Ubuntu.com/966862/

Nhưng tôi vẫn có một màn hình đen với một con trỏ nhấp nháy.

Bây giờ lý thuyết của tôi là boot đã bị ghi đè bởi một thứ không phải là EFI không béo, vốn chỉ là mã grub mà trước đây có trong các ngành 0-63. Tôi may mắn gặp được một tuyên bố rất rõ ràng trên trang này, có lẽ đã hoàn thành sự hiểu biết của tôi về tất cả những điều này có nghĩa là gì. Và sau khi tôi tìm thấy điều đó, Jeremy đã đăng một câu trả lời mà nếu đúng, xác nhận rằng đây là khái niệm quan trọng còn thiếu. http://blog.psych0tik.net/2011/08/grub-embpping-blocklists-and-bios_grub-partitions/

Câu hỏi:

Chuyện gì đang xảy ra vậy? Tại sao grub không khởi động được? Tại sao nó nói "không tìm thấy tập tin"?

Tại sao grub không muốn cài đặt mà không có cài đặt này mà tôi đã đặt với parted (không được cài đặt bởi trình cài đặt Ubuntu)? Tôi nghĩ rằng tất cả những gì tôi cần để cài đặt nó là một boot / boot riêng biệt không có trong LVM hay RAID phần mềm, vì root của tôi nằm trong RAID và bảng phân vùng là GPT.

Làm thế nào để trình cài đặt Ubuntu CD cài đặt nó mà không gặp sự cố này và không có cài đặt bios_grub?

Tôi cũng sẽ xem xét sử dụng EFI. Nếu đây là một ý tưởng tốt, và có một cách tiêu chuẩn để thiết lập nó, tôi luôn sẵn sàng học hỏi những điều mới.

Câu trả lời nhanh nhất sẽ khiến tôi hài lòng, thậm chí không trả lời tất cả các câu hỏi của tôi, sẽ là một bộ lệnh mà tôi có thể chạy từ đĩa CD cứu hộ để sửa bộ tải khởi động theo cách tương tự như đĩa CD cài đặt đã làm. Sẽ rất tuyệt nếu tôi có thể chạy chúng với hệ thống khởi động, thay vì CD.


Bạn có thể thêm đầu ra in từ chia tay?
Jeremy

Bạn có thể thấy rằng trong 2 liên kết dán trên dòng 993, nhưng mỗi yêu cầu, tôi sẽ thêm nó vào câu hỏi của tôi.
Peter

Câu trả lời:


8

Giải pháp là sử dụng phân vùng bios_grub, không giống với phân vùng / boot.

Theo mặc định, phân vùng bios_grub là 1MiB và nó phải được gắn cờ bios_grub. Của tôi là phân vùng đầu tiên trên đĩa của tôi. Nếu phân vùng 2 của bạn thực sự / khởi động như một phần gợi ý, điều đó sẽ không chính xác và bạn nên tạo một phân vùng 1MiB khác.

Với GPT và GRUB2, hệ thống tệp tối thiểu có ba phân vùng: bios_grub, root, exchange. (không hoàn toàn chắc chắn trao đổi được yêu cầu)

Tại sao grub không khởi động được sau khi chạy "grub-install"?

Không biết ... Bạn sẽ nghĩ rằng nó sẽ không sửa đổi bất cứ điều gì nếu nó nói rõ ràng nó không thể nhúng để nó không thể hoạt động.

Tại sao nó nói "không tìm thấy tập tin"?

/ vmlinuz là một liên kết tượng trưng sử dụng phân vùng khởi động và phân vùng khởi động bị hỏng. Mã bios_grub được viết trên cấu trúc ext3 của nó. Điều này có thể có nghĩa là / boot không được gắn kết và các tệp grub nhìn thấy thực sự có trên hệ thống gốc, không chứa kernel.

Tại sao grub không muốn cài đặt mà không có cài đặt này, tôi đặt với chia tay

Bảng phân vùng GPT không có không gian cho bộ tải khởi động, không giống như MBR. Vì vậy, một phân vùng cụ thể phải được tạo để giữ mã khởi động. Trước khi chạy "grub-install", chỉ định phân vùng này bằng lệnh:

    parted /dev/sda set 1 bios_grub on

Tôi nghĩ tất cả những gì tôi cần là một khởi động / riêng biệt. Làm thế nào để trình cài đặt Ubuntu CD cài đặt nó mà không có cài đặt bios_grub?

Yêu cầu này dường như là tất cả những gì cần thiết cho trình cài đặt Ubuntu, nhưng nó tạo ra một hệ thống không đạt tiêu chuẩn dễ bị phá vỡ.

Khi GRUB nói "Nhãn phân vùng GPT này không có Phân vùng khởi động BIOS ", điều đó có nghĩa là phân vùng bios_grub, không phải / boot.


Cảm ơn bạn. Điều này thực sự rất gần với những gì tôi đang làm. Xem "Tôi vẫn hoàn toàn bị mất mà không có manh mối." phần trên. Bây giờ lý thuyết của tôi là boot đã bị ghi đè bởi một thứ không phải là EFI không béo, vốn chỉ là mã grub mà trước đây có trong các ngành 0-63. Tôi đang làm việc trên một thử nghiệm, và sau đó sẽ cho bạn biết nó diễn ra như thế nào.
Peter

Bạn đang sử dụng Ubuntu? Có cách nào trình cài đặt Ubuntu có thể cài đặt đúng bằng phân vùng bios_grub không?
Peter

@Peter Tôi sử dụng Ubuntu và nếu bạn thực hiện phân vùng có hướng dẫn, trình cài đặt sẽ thiết lập chính xác. Tôi biết rằng nó đã làm cho tôi với trình cài đặt 11.10.
Jeremy

Cảm ơn rât nhiều. Đây là câu trả lời. Tiếp theo tôi sẽ thử với các thiết lập phức tạp hơn (đột kích và lvm khi khởi động) và sau đó tôi sẽ chỉnh sửa câu trả lời của bạn với các chi tiết.
Peter
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.