Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I've been trying to install Arch Linux. After the installation, it shows the BIOS screen and after that there just comes a message that says "No bootable device found".

I have retried the whole scenario now some times, still it just shows the same message...

At installing, I have followed the Unofficial Beginner's Guide from the ArchLinux wiki.

Here is what I did:

First of all, I wiped the hard drive (on which before the wipe was Windows Vista installed) and put GPT on it by using gdisk. Then I set up some partitions, which now look as the following (output of 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     

Then I mounted the root partition (sda2) to /mnt, after that also the boot and the home partition (sda3 and sda5) to /mnt/boot and /mnt/home and at the end formatted and activated the swap partition (sda4).

Now I began installing the base system. After selecting the mirrors, I installed base and base-devel.

At the end of the install I generated an fstab.

Then I finally chrooted into /mnt, set up some Locales, set a root password and then installed and configured Grub2, exactly as it is explained here.

At the end I exited from the chroot environment, unmounted the partitions and rebooted. You know the rest... It just showed the message that it coudn't find any bootable devices.

By the way, I tried to install it on this computer.

Hopefully someone finds out what I did wrong, thanks in advance!

share|improve this question
1  
Is the output of dd if=/dev/sda bs=1 skip=510 count=2 2>&- | hexdump (or xxd instead of hexdump) equal to 55aa? If not the MBR is bad. –  Sukminder Apr 1 '13 at 16:36
    
The output was the following: 0000000 aa55 0000002 If the MBR is bad, how you say, is there something I can do to make it good again? –  brgr Apr 1 '13 at 18:00
    
No. That looks OK. (0000000 and 0000002 are offset) aa55 is correct MBR signature (55aa on little endian system). –  Sukminder Apr 1 '13 at 18:06
    
@Sukminder, I may be missing something, but the OP said he used GPT, not MBR. –  JMCF125 Feb 25 at 20:31
1  
@JMCF125: GPT also uses MBR. Instead of a full partition table it holds one partition of maximum size. The GPT data usually start at offset 512 (After MBR). upload.wikimedia.org/wikipedia/commons/0/07/… MBR holds stage one of boot loading. Logical Block Address 0 -> Legacy MBR. –  Sukminder Feb 26 at 10:07
show 1 more comment

2 Answers 2

OK. Became a bit long for comment. This is not directly related, but only to explain the aa55 comment.

When the Basic Input/Output System (BIOS) starts it does a Power-On Self Test (POST), check hardware etc. Then it looks for devices that are both bootable and active by order given by CMOS (Your configuration in BIOS – which in turn is given by a Complementary Metal Oxide Semiconductor). When it finds a disk that has 0xaa55 at offset 510 it loads that section of the disk, (sector 1), into memory and leave control to it on address 0x00000 of that code. Those 512 bytes are the Master Boot Record (MBR).

That code, in this case "GRUB - boot", check various bytes of these 512 in addition to ask BIOS for various information. In this process it locates which disk has rest of GRUB and load that section of the disk into memory – then that part of code gets control. That one mounts kernel etc. and leaves control to that.

Using GPT the image GRUB loads from within MBR is located in the bios_grub partition, - which you have, and is big enough, etc., so can't see how that could be wrong.


On "No bootable device found." message from BIOS – one can have the case that MBR of boot disk is corrupted, if MBR ends in 0xaa55 and the MBR is corrupt one usually get an other error - or the system simply hangs.


Anyhow. This is weird. I notice you have no partition marked as "boot". Using GPT that is correct, - but, though it is forbidden, you could try to flag one e.g. sda5 as boot. In gparted: (learned that (g)parted also alter GPT which whan do not want)fdisk :

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

It could be that your BIOS is doing more then it should and checking the partition table in MBR.


EDIT – Update to comment:

AFAIK it doesn't matter which one you set as it is not actually used. Point being, for whom ever say no "bootable device found", they shall be satisfied. The sda1 is not a boot partition in the traditional sense, but space for GRUB boot files.

In a traditional partition layout (not GPT) you have typically something like:

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

That would mean 3 partitions. Everything before offset 0x400 on the HDD i raw bytes – as in not part of any partition etc.

Here boot partition is Partition 2 which is system partition with linux.

The GRUB module 1 files reside just after MBR and before first partition. It can reside anywhere, but usually on same disk and at offset 512 of MBR disk.

Also on a GPT system – GPT uses that section of the disk for itself, thus one have to move those GRUB files to another location. That is what the bios_grub is for - to store core.img for GRUB 2.


The "set boot flag" is merely a shot in the dark, - and would be surprised if it works. But one has start somewhere.


EDIT2:

What if you do this:

  1. Backup current MBR:

      dd if=/dev/sda of=/path/mbr-backup bs=512 count=1
    
  2. Create image from Code TEST below, saved to file test.s by:

    as -o test.o test.s
    objcopy -O binary test.o test.img
    
  3. Copy the test.img file to MBR:

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

Code TEST:

    .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

To restore MBR do:

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

This should simply print "Hello!" to the screen if the MBR was loaded, then stop. Tested it by running under qemu-system-x86_64, qemu-system-i386, VirtualBox, stationary Intel PC 32 and 64 bit.


share|improve this answer
    
First of all thank you for your help. Could you please explain to me why I should set sda5 as boot partition. Isn't sda1 a better option to set as boot partition, as it is here just for that? –  brgr Apr 1 '13 at 19:22
    
Ok, I've tried this now, but sadly with the same result... –  brgr Apr 1 '13 at 20:09
    
What should it have listed? –  brgr Apr 2 '13 at 8:44
    
Ok, I have now also tried your second advice, still with no result :( –  brgr Apr 2 '13 at 9:50
    
Yes it is listed. –  brgr Apr 2 '13 at 17:47
show 4 more comments

I had same problem and by searching I found that uuid of root / partition is wrong in grub.cfg you can try this:

  1. Boot from live archlinux media
  2. mount /dev/sdxx /mnt (sdxx is your root partition)
  3. arch-chroot /mnt
  4. grub-mkconfig -o /boot/grub/grub.cfg
  5. grub-install

finish.

share|improve this answer
    
I have done all this already at the first try. However, I tried to do it again as you explained and got an error on grub-install: it said there would be no Bios boot partition on /dev/sda, while there actually is one. –  brgr Apr 2 '13 at 8:59
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.