Setelah Arch Linux menginstalnya hanya menunjukkan teks "Tidak ada perangkat bootable ditemukan"


8

Saya sudah mencoba menginstal Arch Linux. Setelah instalasi, ini menunjukkan layar BIOS dan setelah itu baru saja muncul pesan yang mengatakan "Tidak ada perangkat yang dapat di-boot ditemukan".

Saya telah mencoba ulang seluruh skenario sekarang beberapa kali, masih saja menampilkan pesan yang sama ...

Saat menginstal, saya telah mengikuti Panduan Pemula Tidak Resmi dari wiki ArchLinux.

Inilah yang saya lakukan:

Pertama-tama, saya menghapus hard drive (yang sebelumnya dihapus adalah Windows Vista diinstal) dan meletakkan GPT di atasnya dengan menggunakan gdisk. Lalu saya mengatur beberapa partisi, yang sekarang terlihat sebagai berikut (output dari 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     

Kemudian saya memasang partisi root (sda2) ke / mnt, setelah itu juga partisi boot dan home (sda3 dan sda5) ke / mnt / boot dan / mnt / home dan pada akhirnya memformat dan mengaktifkan partisi swap (sda4) .

Sekarang saya mulai menginstal sistem basis. Setelah memilih mirror, saya memasang base dan base-devel.

Pada akhir instalasi saya membuat fstab.

Kemudian saya akhirnya chroot ke / mnt, mengatur beberapa Lokal, mengatur kata sandi root dan kemudian menginstal dan mengkonfigurasi Grub2, persis seperti yang dijelaskan di sini .

Pada akhirnya saya keluar dari lingkungan chroot, melepas partisi dan mem-boot ulang. Anda tahu sisanya ... Itu hanya menunjukkan pesan bahwa ia tidak dapat menemukan perangkat yang dapat di-boot.

Omong-omong, saya mencoba menginstalnya di komputer ini .


1
Apakah output dari dd if=/dev/sda bs=1 skip=510 count=2 2>&- | hexdump(atau xxd bukan hexdump) sama dengan 55aa? Jika tidak MBR buruk.
Runium

Outputnya adalah sebagai berikut: 0000000 aa55 0000002 Jika MBR buruk, bagaimana Anda mengatakan, apakah ada sesuatu yang bisa saya lakukan untuk membuatnya baik lagi?
brgr

Tidak. Itu terlihat oke. (0000000 dan 0000002 diimbangi) aa55adalah tanda tangan MBR yang benar ( 55aapada sistem endian kecil).
Runium

@Sukminder, saya mungkin kehilangan sesuatu, tetapi OP mengatakan dia menggunakan GPT, bukan MBR.
JMCF125

1
@ JMCF125: GPT juga menggunakan MBR. Alih-alih tabel partisi penuh itu menampung satu partisi dengan ukuran maksimum. Data GPT biasanya mulai dari offset 512 (Setelah MBR). upload.wikimedia.org/wikipedia/commons/0/07/... MBR memegang tahap pertama pemuatan boot. Alamat Blok Logis 0 -> Legacy MBR.
Runium

Jawaban:


4

Saya mempunyai masalah yang sama dan dengan mencari saya menemukan bahwa uuid root / partisi salah di grub.cfg Anda dapat mencoba ini:

  1. Boot dari media archlinux langsung
  2. mount /dev/sdxx /mnt (sdxx adalah partisi root Anda)
  3. arch-chroot /mnt
  4. grub-mkconfig -o /boot/grub/grub.cfg
  5. grub-install

selesai.


Saya sudah melakukan semua ini pada percobaan pertama. Namun, saya mencoba untuk melakukannya lagi seperti yang Anda jelaskan dan mendapat kesalahan grub-install: katanya tidak akan ada partisi boot Bios /dev/sda, sementara sebenarnya ada satu.
brgr

2

BAIK. Menjadi agak lama untuk berkomentar. Ini tidak terkait langsung, tetapi hanya untuk menjelaskan aa55komentar.

Ketika Sistem Input / Output Dasar (BIOS) memulai, ia melakukan Power-On Self Test (POST), memeriksa perangkat keras, dll. Kemudian mencari perangkat yang dapat di-boot dan aktif berdasarkan pesanan yang diberikan oleh CMOS (Konfigurasi Anda di BIOS - yang pada gilirannya diberikan oleh Semikonduktor Oksida Logam Pelengkap ). Ketika ia menemukan disk yang memiliki 0xaa55offset 510, ia memuat bagian disk tersebut, (sektor 1), ke dalam memori dan meninggalkan kontrol padanya pada alamat 0x00000 dari kode itu. 512 byte itu adalah Master Boot Record (MBR).

Kode itu, dalam hal ini " GRUB - boot" , periksa berbagai byte dari 512 ini selain meminta BIOS untuk berbagai informasi. Dalam proses ini ia menemukan disk mana yang memiliki sisa GRUB dan memuat bagian disk tersebut ke dalam memori - maka bagian kode tersebut akan dikontrol. Yang satu me-mount kernel dll dan meninggalkan kontrol untuk itu.

Menggunakan GPT, gambar yang dimuat GRUB dari dalam MBR terletak di bios_grub partisi, - yang Anda miliki, dan cukup besar, dll., Jadi tidak dapat melihat bagaimana itu bisa salah.


Pada "Tidak ada perangkat yang dapat di-boot ditemukan." pesan dari BIOS - seseorang dapat memiliki kasus bahwa MBR boot disk rusak, jika MBR berakhir 0xaa55dan MBR rusak, biasanya ada kesalahan lain - atau sistem hang.


Bagaimanapun. Ini aneh. Saya perhatikan Anda tidak memiliki partisi yang ditandai sebagai "boot" . Menggunakan GPT yang benar, - tetapi, meskipun dilarang, Anda dapat mencoba menandai satu misalnya sda5sebagai boot. Di gparted: (mengetahui bahwa (g) berpisah juga mengubah GPT yang tidak diinginkan) fdisk:

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

Bisa jadi BIOS Anda melakukan lebih dari yang seharusnya dan memeriksa tabel partisi dalam MBR.


EDIT - Perbarui untuk berkomentar:

AFAIK tidak masalah yang Anda tetapkan karena tidak benar-benar digunakan. Intinya, bagi yang pernah mengatakan tidak ada "perangkat bootable ditemukan" , mereka harus puas. Ini sda1bukan partisi boot dalam arti tradisional, tetapi ruang untuk file boot GRUB.

Dalam tata letak partisi tradisional (bukan GPT) Anda biasanya memiliki sesuatu seperti:

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 ]
      |                  |
      |                  |
      |__________________|

Itu berarti 3 partisi. Semuanya sebelum mengimbangi 0x400 pada HDD saya byte mentah - karena bukan bagian dari partisi dll

Di sini partisi boot adalah Partisi 2 yang merupakan partisi sistem dengan linux.

File modul 1 GRUB berada tepat setelah MBR dan sebelum partisi pertama. Itu bisa berada di mana saja, tetapi biasanya pada disk yang sama dan diimbangi 512 MB disk.

Juga pada sistem GPT - GPT menggunakan bagian disk itu sendiri, sehingga seseorang harus memindahkan file GRUB tersebut ke lokasi lain. Untuk itulah bios_grub- untuk menyimpan core.imguntuk GRUB 2.


The "set flag boot" hanyalah tembakan dalam gelap, - dan akan terkejut jika bekerja. Tetapi seseorang telah mulai di suatu tempat.


EDIT2:

Bagaimana jika Anda melakukan ini:

  1. Cadangkan MBR saat ini:

      dd if=/dev/sda of=/path/mbr-backup bs=512 count=1
    
  2. Buat gambar dari Code TESTbawah, disimpan ke file test.sdengan:

    as -o test.o test.s
    objcopy -O binary test.o test.img
    
  3. Salin test.imgfile ke MBR:

    dd if=test.img of=/dev/sda bs=512 count=1
    
  4. Boot

UJI kode:

    .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

Untuk mengembalikan MBR lakukan:

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

Ini seharusnya cukup mencetak "Halo!" ke layar jika MBR dimuat, lalu berhenti. Mengujinya dengan menjalankan di bawah qemu-system-x86_64, qemu-system-i386, VirtualBox, stasioner Intel PC 32 dan 64 bit.



Pertama-tama terima kasih atas bantuan Anda. Bisakah Anda jelaskan kepada saya mengapa saya harus menetapkan sda5sebagai partisi boot. Bukankah sda1opsi yang lebih baik untuk ditetapkan sebagai partisi boot, karena hanya ada di sini?
brgr

Oke, saya sudah mencoba ini sekarang, tetapi sayangnya dengan hasil yang sama ...
brgr

Apa yang seharusnya terdaftar?
brgr

Ok, saya sekarang juga sudah mencoba saran kedua Anda, masih tanpa hasil :(
brgr

Ya itu terdaftar.
brgr

0

Saya mungkin salah dan belum melakukan hal yang benar, tetapi saya memiliki masalah yang sama dengan Anda pada awalnya. Setelah beberapa saat, saya telah menemukan di sini bahwa GRUB has to have a 512MB EFI partition, with a vfat filesystem. Jika Anda menginstal sistem Anda sebagai EFI:

Untuk EFI, Anda mencari partisi kecil (512 MiB atau kurang) dengan sistem file vfat dan flag booting diaktifkan.

Ini berarti Anda harus mengantisipasi fakta ini saat membuat partisi Anda. Saat melakukannya (dengan cfdisk misalnya), Anda harus mengatur / dev / sdX1 Anda sebagai EFI, kemudian memformatnya ke sistem file FAT32 (dengan perintah mkfs.vfat -F32 /dev/sdX1selama proses instalasi). Hanya dengan begitu grub akan dikenali.

Saya berasumsi Syslinux dapat bekerja dengan partisi ext2 Anda, jika Anda ingin mencobanya.

Jika Anda tidak menginstal Arch sebagai EFI, Anda mungkin dapat memeriksa wiki apa pun. Saya tidak dapat membantu lebih jauh dalam kasus ini.

Saya tahu posting ini sudah tua, tetapi ini kalau-kalau ada orang datang ke sini dan berharap untuk menemukan solusi.


1
Menjawab posting lama tidak masalah dan bahkan dianjurkan. Namun, harap edit jawaban Anda dan sorot bagian yang benar-benar menjawab . Apa solusi yang Anda temukan? Pernyataan apa? Memberikan tautan ke halaman lain yang mungkin berisi jawaban bukanlah jawaban. Sebagai gantinya, silakan mengutip bagian yang relevan secara langsung dalam jawaban Anda sehingga semua informasi terkandung di sini.
terdon

Jawabannya ada di sana, baru saja dikutip dari tautan yang saya berikan, tidak disorot. Terima kasih telah menunjukkannya. Tolong beritahu saya jika Anda merasa perlu sesuatu yang lain.
Razakhel

Kutipan nyata ditambahkan sekarang. Dan dikoreksi 512MB (at least), itu sebaliknya ...
Razakhel
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.