Sau khi cài đặt Arch Linux, nó chỉ hiển thị văn bản. Không có thiết bị khởi động nào được tìm thấy


8

Tôi đã cố gắng cài đặt Arch Linux. Sau khi cài đặt, nó hiển thị màn hình BIOS và sau đó xuất hiện một thông báo "Không tìm thấy thiết bị khởi động".

Tôi đã thử lại toàn bộ kịch bản bây giờ một vài lần, nhưng nó vẫn chỉ hiển thị cùng một thông điệp ...

Khi cài đặt, tôi đã làm theo Hướng dẫn cho người mới bắt đầu không chính thức từ wiki ArchLinux.

Đây là những gì tôi đã làm:

Trước hết, tôi xóa sạch ổ cứng (trên đó trước khi xóa Windows Vista) và đặt GPT lên nó bằng cách sử dụng gdisk. Sau đó, tôi thiết lập một số phân vùng, bây giờ trông như sau (đầu ra của parted):

Model: ATA ST9160310AS (scsi)
Disk /dev/sda: 160GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system     Name                 Flags
 1      1049kB  2097kB  1049kB                  BIOS boot partition  bios_grub
 2      2097kB  107MB   105MB   ext2            Linux filesystem     
 3      107MB   21.6GB  21.5GB  ext4            Linux filesystem     
 4      21.6GB  30.2GB  8590MB  linux-swap(v1)  Linux swap           
 5      30.2GB  160GB   130GB   ext4            Linux filesystem     

Sau đó, tôi gắn phân vùng gốc (sda2) vào / mnt, sau đó cũng là phân vùng khởi động và phân vùng nhà (sda3 và sda5) thành / mnt / boot và / mnt / home và ở cuối định dạng và kích hoạt phân vùng trao đổi (sda4) .

Bây giờ tôi bắt đầu cài đặt hệ thống cơ sở. Sau khi chọn các gương, tôi cài đặt cơ sở và cơ sở.

Khi kết thúc cài đặt, tôi tạo ra một fstab.

Sau đó, tôi cuối cùng đã chroot vào / mnt, thiết lập một số Địa điểm, đặt mật khẩu gốc và sau đó cài đặt và định cấu hình Grub2, chính xác như được giải thích ở đây .

Cuối cùng, tôi thoát khỏi môi trường chroot, ngắt kết nối các phân vùng và khởi động lại. Bạn biết phần còn lại ... Nó chỉ hiển thị thông báo rằng nó không tìm thấy bất kỳ thiết bị khởi động nào.

Nhân tiện, tôi đã cố gắng cài đặt nó trên máy tính này .


1
Là đầu ra của dd if=/dev/sda bs=1 skip=510 count=2 2>&- | hexdump(hoặc xxd thay vì hexdump) bằng 55aa? Nếu không MBR là xấu.
Runium

Đầu ra là như sau: 0000000 aa55 0000002 Nếu MBR tệ, bạn nói như thế nào, tôi có thể làm gì để làm cho nó tốt trở lại?
brgr

Không. Có vẻ ổn. (0000000 và 0000002 được bù) aa55là chữ ký MBR chính xác ( 55aatrên hệ thống endian nhỏ).
Runium

@Sukminder, tôi có thể đang thiếu thứ gì đó, nhưng OP cho biết anh ấy đã sử dụng GPT chứ không phải MBR.
JMCF125

1
@ JMCF125: GPT cũng sử dụng MBR. Thay vì một bảng phân vùng đầy đủ, nó chứa một phân vùng có kích thước tối đa. Dữ liệu GPT thường bắt đầu ở offset 512 (Sau MBR). tải lên.wikidan.org/wikipedia/commons/0/07/ MBR giữ giai đoạn một của quá trình tải khởi động. Địa chỉ khối logic 0 -> MBR kế thừa.
Runium

Câu trả lời:


4

Tôi đã có cùng một vấn đề và bằng cách tìm kiếm tôi thấy rằng uuid của root / phân vùng bị sai trong grub.cfg, bạn có thể thử điều này:

  1. Khởi động từ phương tiện truyền thông archlinux trực tiếp
  2. mount /dev/sdxx /mnt (sdxx là phân vùng gốc của bạn)
  3. arch-chroot /mnt
  4. grub-mkconfig -o /boot/grub/grub.cfg
  5. grub-install

hoàn thành.


Tôi đã làm tất cả điều này đã ở lần thử đầu tiên. Tuy nhiên, tôi đã cố gắng làm lại khi bạn giải thích và gặp lỗi grub-install: nó cho biết sẽ không có phân vùng khởi động Bios trên /dev/sda, trong khi thực sự có một.
brgr

2

ĐỒNG Ý. Trở thành một chút dài để bình luận. Điều này không liên quan trực tiếp, mà chỉ để giải thích aa55bình luận.

Khi Hệ thống đầu vào / đầu ra cơ bản (BIOS) khởi động, nó sẽ tự kiểm tra bật nguồn (POST), kiểm tra phần cứng, v.v. Sau đó, nó sẽ tìm các thiết bị có khả năng khởi động và hoạt động theo thứ tự được đưa ra bởi CMOS (Cấu hình của bạn trong BIOS - mà lần lượt được đưa ra bởi một chất bán dẫn oxit kim loại bổ sung ). Khi tìm thấy một đĩa có 0xaa55độ lệch 510, nó sẽ tải phần đó của đĩa, (sector 1), vào bộ nhớ và để lại quyền điều khiển cho nó trên địa chỉ 0x00000 của mã đó. 512 byte đó là Bản ghi khởi động chính (MBR).

Mã đó, trong trường hợp này là " GRUB - boot" , kiểm tra các byte khác nhau của 512 này ngoài việc hỏi BIOS để biết thông tin khác nhau. Trong quá trình này, nó định vị đĩa nào có phần còn lại của GRUB và tải phần đó của đĩa vào bộ nhớ - sau đó phần mã đó sẽ được kiểm soát. Đó là một nhân gắn kết vv và để lại quyền kiểm soát đó.

Sử dụng GPT, hình ảnh GRUB tải từ bên trong MBR nằm trong bios_grub phân vùng - mà bạn có và đủ lớn, v.v., vì vậy không thể thấy điều đó có thể sai như thế nào.


Trên "Không tìm thấy thiết bị khởi động." thông báo từ BIOS - người ta có thể gặp trường hợp MBR của đĩa khởi động bị hỏng, nếu MBR kết thúc 0xaa55và MBR bị hỏng, người ta thường gặp lỗi khác - hoặc hệ thống bị treo.


Nhưng dù sao đi nữa. Điều này thật kỳ lạ. Tôi nhận thấy bạn không có phân vùng được đánh dấu là "khởi động" . Sử dụng GPT là chính xác, - nhưng, mặc dù nó bị cấm, bạn có thể thử gắn cờ một ví dụ sda5như khởi động. Trong gparted: (đã học được rằng (g) chia tay cũng thay đổi GPT mà ai không muốn) fdisk:

# Toggle bootable:
a [DISK NUMBER]
# Check (could be an asterisk marking boot partition):
p
# Save changes:
w

Có thể là BIOS của bạn đang hoạt động nhiều hơn thì nên và kiểm tra bảng phân vùng trong MBR.


EDIT - Cập nhật để bình luận:

AFAIK không quan trọng bạn chọn cái nào vì nó không thực sự được sử dụng. Điểm là, đối với những người từng nói không có "thiết bị khởi động được tìm thấy" , họ sẽ hài lòng. Đây sda1không phải là một phân vùng khởi động theo nghĩa truyền thống, mà là không gian cho các tệp khởi động GRUB.

Trong bố cục phân vùng truyền thống (không phải GPT), bạn thường có một cái gì đó như:

0x000 [Master Boot Record] <- Partition table say Partition 2 is active
                                                       |
0x200 [ GRUB module 1    ] <- core.img from GRUB       |
                                                       |
0x400 [ Partition 1 Swap ]                             |
      |                  |                             |
      |                  |                             |
      |__________________|                             |
                                                       |
0x... [ Partition 2 ext4 ]                             |
      | * Active         | <- AKA boot ----------------+
      |                  |
      |__________________|

0x... [ Partition 3 ext4 ]
      |                  |
      |                  |
      |__________________|

Điều đó có nghĩa là 3 phân vùng. Mọi thứ trước khi bù 0x400 trên ổ cứng i byte thô - như không phải là một phần của bất kỳ phân vùng, v.v.

Ở đây phân vùng khởi độngphân vùng 2 là phân vùng hệ thống với linux.

Các tệp mô-đun GRUB 1 nằm ngay sau MBR và trước phân vùng đầu tiên. Nó có thể cư trú ở bất cứ đâu, nhưng thường trên cùng một đĩa và ở độ lệch 512 của đĩa MBR.

Ngoài ra trên hệ thống GPT - GPT sử dụng chính phần đó của đĩa, do đó người ta phải di chuyển các tệp GRUB đó sang vị trí khác. Đó là những gì bios_grubdành cho - để lưu trữ core.imgcho GRUB 2.


Các "bộ khởi động cờ" chỉ đơn thuần là một shot trong bóng tối, - và sẽ ngạc nhiên nếu nó hoạt động. Nhưng người ta đã bắt đầu ở đâu đó.


EDIT2:

Nếu bạn làm điều này:

  1. Sao lưu MBR hiện tại:

      dd if=/dev/sda of=/path/mbr-backup bs=512 count=1
    
  2. Tạo hình ảnh từ Code TESTbên dưới, được lưu vào tập tin test.sbằng cách:

    as -o test.o test.s
    objcopy -O binary test.o test.img
    
  3. Sao chép test.imgtệp vào MBR:

    dd if=test.img of=/dev/sda bs=512 count=1
    
  4. Khởi động

KIỂM TRA mã:

    .file "test.s"
    .text
    .code16
.globl start, _start
start:
_start:
    jmp go
    nop
go:
    movb $0x48, %al
    call prnt_chr
    movb $0x65, %al
    call prnt_chr
    movb $0x6c, %al
    call prnt_chr
    movb $0x6c, %al
    call prnt_chr
    movb $0x6f, %al
    call prnt_chr
    movb $0x21, %al
    call prnt_chr
    ret
prnt_chr:
    movb $0x0e, %ah
    int  $0x10
    ret
    . = _start + 0x1fe 
    .word   0xaa55

Để khôi phục MBR, hãy làm:

dd if=/path/mbr-backup of=/dev/sda bs=512 count=1

Điều này chỉ cần in "Xin chào!" vào màn hình nếu MBR đã được tải, sau đó dừng lại. Đã kiểm tra nó bằng cách chạy dưới qemu-system-x86_64, qemu-system-i386, VirtualBox, Intel PC 32 và 64 bit cố định.



Trước hết cảm ơn sự giúp đỡ của bạn. Bạn có thể vui lòng giải thích cho tôi tại sao tôi nên đặt sda5làm phân vùng khởi động. Không phải là sda1một lựa chọn tốt hơn để đặt làm phân vùng khởi động, vì nó ở đây chỉ dành cho điều đó?
brgr

Ok, tôi đã thử điều này ngay bây giờ, nhưng thật đáng buồn với kết quả tương tự ...
brgr

Những gì nó nên được liệt kê?
brgr

Ok, tôi cũng đã thử lời khuyên thứ hai của bạn, nhưng vẫn không có kết quả :(
brgr

Có nó được liệt kê.
brgr

0

Tôi có thể sai và chưa làm điều đúng, nhưng lúc đầu tôi cũng gặp vấn đề tương tự như bạn. Sau một thời gian, tôi đã tìm thấy ở đâyGRUB has to have a 512MB EFI partition, with a vfat filesystem. Đây là trong trường hợp bạn cài đặt hệ thống của mình dưới dạng EFI:

Đối với EFI, bạn đang tìm kiếm một phân vùng nhỏ (512 MiB trở xuống) với hệ thống tệp vfat và cờ khởi động được bật.

Điều này có nghĩa là bạn phải lường trước thực tế này khi tạo phân vùng của mình. Trong khi làm như vậy (ví dụ với cfdisk), bạn sẽ phải đặt / dev / sdX1 của mình thành EFI, sau đó định dạng nó thành hệ thống tệp FAT32 (với lệnh mkfs.vfat -F32 /dev/sdX1trong quá trình cài đặt). Chỉ sau đó grub sẽ được công nhận.

Tôi giả sử Syslinux có thể hoạt động với phân vùng ext2 của bạn, nếu bạn cảm thấy muốn thử nó.

Nếu bạn không cài đặt Arch dưới dạng EFI, bạn có thể kiểm tra wiki bất cứ điều gì. Tôi không thể giúp gì thêm trong trường hợp này.

Tôi biết bài này đã cũ, nhưng đây là trong trường hợp ai đó đến đây và hy vọng tìm ra giải pháp.


1
Trả lời bài viết cũ là tốt và thậm chí khuyến khích. Tuy nhiên, vui lòng chỉnh sửa câu trả lời của bạn và làm nổi bật phần thực sự trả lời . Giải pháp bạn tìm thấy là gì? Phát biểu gì? Cung cấp một liên kết đến một trang khác có thể chứa câu trả lời không phải là một câu trả lời. Thay vào đó, xin vui lòng trích dẫn phần có liên quan trực tiếp trong câu trả lời của bạn để tất cả thông tin được chứa ở đây.
terdon

Câu trả lời là ở đó, chỉ trích dẫn từ liên kết tôi cung cấp, mặc dù không được nhấn mạnh. Cảm ơn đã chỉ ra rằng. Xin vui lòng cho tôi biết nếu bạn cảm thấy như một cái gì đó khác là cần thiết.
Razakhel

Báo giá thực sự được thêm vào bây giờ. Và sửa lại 512MB (at least), đó là cách khác ...
Razakhel 19/2/2016
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.