2015-09-20 2 views
0

Bonsoir à tous! Je travaille sur ce sujet depuis un certain temps, mais je ne peux pas le comprendre. J'essaye simplement de faire installer le bootcode d'un bootloader sur un support attaché, mais je n'arrive pas à le comprendre !!! J'ai essayé grub legacy, lilo et grub2 ... Le système hôte a son lecteur répertorié comme/dev/sda * et le média attaché cible est listé comme/dev/sdb * et est monté sur/mnt/target.Faire des médias attachés bootable

Avec héritage sans tête, je tentais de travailler avec un autre support (/ dev/sdc *,/mnt/source) qu'il avait déjà installé et essayé hacks sales comme:

dd if=/mnt/source/boot/grub/stage1 of=/dev/sdb bs=446 count=1 
dd if=/mnt/source/boot/grub/stage2 of=/dev/sdb bs=512 seek=1 

Ce sera effectivement démarrage dans une interface sans tête où vous pouvez entrer des choses comme:

root (hd0,0) 
setup (hd0) 

Je reçois aucun message d'erreur, mais Grub démarrer à ordures sur l'écran, puis arrêter.

Avec lilo, j'avais vraiment le paquet installé et essayé d'installer (après avoir créé un lilo.conf):

default=Test1 
timeout=10 
compact 
prompt 
lba32 
backup=/mnt/target/boot/lilo/MBR.hda.990428 
map=/mnt/target/boot/lilo/map 
install=/mnt/target/boot/lilo/boot.b 
image=/mnt/target/boot/vmlinuz 
    label=Test1 
    append="quiet ... settime" 
    initrd=/mnt/target/boot/ramdisks/working.gz 

Et puis à partir de l'invite exécutez la commande suivante:

$ lilo -C /mnt/target/boot/lilo/lilo.conf -b /dev/sdb 
Warning: /dev/sdb is not on the first disk 
Fatal: Sorry, don't know how to handle device 0x0701 

Avec grub2, j'ai essayé quelque chose comme:

grub-mkconfig -o /mnt/target/boot/grub/grub.cfg 
Generating grub.cfg ... 
Found linux image: /boot/vmlinuz-3.11.0-12-generic 
Found initrd image: /boot/initrd.img-3.11.0-12-generic 
Found memtest86+ image: /boot/memtest86+.bin 
    No volume groups found 
done 

Je ne pouvais même pas obtenir ce qui précède pour générer un grub.cfg correctement ou au bon endroit donc j'ai abandonné sur celui-ci ... Les entrées énumérées ci-dessus sont pour le système hôte, pas le système cible.

Je peux fournir toute information supplémentaire dont vous avez besoin pour aider à résoudre ce problème.

-UPDATE-

Après avoir travaillé avec les médias un peu plus longtemps, j'ai décidé de lancer un « fdisk » et a été présenté avec les informations suivantes:

Partition 1 has different physical/logical beginnings (non-Linux?): 
phys(0,32,33) logical(0,37,14) 
Partition 1 has different physical/logical endings: 
phys(62,53,55) logical(336,27,19) 

Je devrais aussi note que lorsque je tente de monter la partition je reçois toujours un message qui indique:

EXT4-fs (sdb1): couldn't mount as ext3 due to feature incompatibilities 

Je ne sais pas si cela est juste spécifique occupée boîte, ou si cela est lié à la sortie fdisk. Quoi qu'il en soit, je ne sais pas si l'information de fdisk indique qu'il pourrait y avoir un problème avec la géométrie du disque qui pourrait causer le dysfonctionnement de tous ces chargeurs de démarrage.

Répondre

0

Le code du secteur d'amorçage du premier bloc pour grub legacy est dans "stage1", pour grub (2) dans "boot.img". Le code de scène Fist contient l'adresse de l'étape suivante à charger sur le même disque.

Sur un autre disque, l'adresse de l'étape suivante à charger pourrait être (et peut-être) différente. Je pense que l'utilisation de chroot et grub-install serait une meilleure façon de procéder. Voir Grub2/Installing.

En ce qui concerne la structure de disque/partition:

dd if=/mnt/source/boot/grub/stage2 of=/dev/sdb bs=512 seek=1 

table de partition a peut-être écrasé dans le MBR de salésien.

+0

merci pour la réponse, mais il semble que votre commande dd correspond à celle déjà utilisée. Et il n'écrase pas la table de partition car elle saute les 512 premiers octets (via le commutateur seek = 1). D'autres pensées? – user1646428

+0

"Ma" commande dd est une copie de la vôtre. Vous avez raison, demandez le compte commence à partir de 0 pas 1. – snayob

+0

Bonjour snayob et merci pour la réponse. La recherche ne commence pas à 0, mais commence en fait à 1. Si je cherchais à 0, alors le calcul serait 0 * quoi que ce soit = ​​0 ne sautant en fait rien. D'autres pensées? – user1646428