os-prober não consegue identificar um sistema linux, então eu preciso escrever uma entrada de menu grub2 customizada como uma solução alternativa, como?

1

Eu quero adicionar um menu personalizado ao grub2 assim (como /etc/grub.d/40_custom ):

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

menuentry "Arch Linux" {
....some data here.....
}

e o que eu preciso é o ".... alguns dados aqui ....."

Algumas dificuldades:

  1. Quando a inicialização da unidade é alterada do BIOS , por exemplo, às vezes, disco com a partição é /dev/sda e às vezes é /dev/sdg . então eu uso os UUIDs para a partição. ATUALIZAÇÃO: a última vez foi /dev/sdc !

  2. O sistema Linux usa uma partição de inicialização separada, ou seja, a partição 1 é a partição /boot , a partição 2 é a partição /root e a partição estendida 4 é a partição /home

Aqui saída blkid de quando o Linux pensou que o disco era / dev / sdg ...

/dev/sdg1: LABEL="arch_boot" UUID="34a39f15-f1a8-46a3-88e7-00c370c3c6a2" TYPE="ext2" 
/dev/sdg2: LABEL="arch_root" UUID="c670b0cf-a644-48d6-903d-dc3e49395a04" TYPE="ext2" 
/dev/sdg3: UUID="b36c4dc0-f5d7-488e-80fb-4c2e14313de5" TYPE="swap" 
/dev/sdg5: LABEL="arch_home" UUID="327900a5-e8f7-4dc4-be52-2f0dd97e3164" TYPE="ext4" 
/dev/sdg6: LABEL="arch_adjunct" UUID="f65f0ae6-9af2-4767-b223-a199ce96c71a" TYPE="reiserfs" 

Aqui está o conteúdo do Sistema Linux (que tinha o legado do grub até que o reparo de inicialização cancelasse o MBR):

⋯@64bitWS:/media$ ls arch_boot
grub  initramfs-linux-fallback.img  initramfs-linux.img  lost+found  vmlinuz-linux
⋯@64bitWS:/media$ ls arch_boot/grub
e2fs_stage1_5  iso9660_stage1_5  minix_stage1_5     stage2           vstafs_stage1_5
fat_stage1_5   jfs_stage1_5      reiserfs_stage1_5  stage2_eltorito  xfs_stage1_5
ffs_stage1_5   menu.lst          stage1             ufs2_stage1_5
⋯@64bitWS:/media$ ls arch_root
aur  boot  etc   lib    lost+found  mnt  proc  run   srv  tmp  var
bin  dev   home  lib64  media       opt  root  sbin  sys  usr

boot-info no link e em link para cada um dos casos de diferentes ordens de inicialização.

Eu sei que pode funcionar porque já funcionou antes ...

ATUALIZAÇÃO:

Corri o os-prober a partir de 10.04 (1.38 / lucid) e funcionou, ele encontrou todos os sistemas linux ao contrário de 12.04 os-prober (1.51). Então eu corri o boot-repair ( link ) novamente e ele produziu a entrada do menu do Arch Linux grub2. Ele ficou assim (de /boot/grub/grub.conf ):

menuentry 'Arch Linux' {
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd6,msdos1)'
    search --no-floppy --fs-uuid --set=root 34a39f15-f1a8-46a3-88e7-00c370c3c6a2
    linux   /boot/vmlinuz-linux root=UUID=670b0cf-a644-48d6-903d-dc3e49395a04
    initrd  /boot/initramfs-linux.img
}

Idêntico à resposta proposta por Cumulus007.

Infelizmente este "novo" grub.cfg não inicializaria o Arch Linux, então ainda não há respostas ...

Last UPDATE: Parece que o grub3 do 10.04 (1.98) não pode usar UUIDs para iniciar, e como o BIOS do meu hardware mistura a ordem do disco rígido do boot ao boot, realmente conseguir um boot é um jogo de craps ... < ¬ (

    
por keepitsimpleengineer 19.07.2012 / 23:35

3 respostas

0

Bem, isso funcionou para mim, provavelmente não é uma opção para os outros.

Eu tenho três sistemas Linux instalados, o Ubuntu 10.04 LTS, o Xubuntu 12.04 e o Arch Linux (versão de lançamento).

12.04 falhou porque o os-prober não consegue encontrar o Arch Linux

O 10.04 falhou porque não pode usar os UUIDs e o BIOS do meu hardware mistura a ordem dos discos rígidos.

Então eu mudei para o Arch Linux, instalei o grub2 e o configurei. O os-prober encontra todos os sistemas instalados e pode usar UUIDs.

Instalação por link

    
por keepitsimpleengineer 20.07.2012 / 20:44
0

Deixe-me saber se isso funciona:

menuentry 'Arch Linux' {
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd6,msdos1)'
    search --no-floppy --fs-uuid --set=root 34a39f15-f1a8-46a3-88e7-00c370c3c6a2
    linux   /boot/vmlinuz-linux root=UUID=670b0cf-a644-48d6-903d-dc3e49395a04
    initrd  /boot/initramfs-linux.img
}
    
por Cumulus007 20.07.2012 / 00:26
0

A linha 184 do /etc/grub.d/30_os-prober diz:

prepare_boot_cache="$(prepare_grub_to_access_device ${LBOOT} | sed -e "s/^/\t/")"

Isso pode tornar o analisador de script confuso. Edite-o para:

prepare_boot_cache="$(prepare_grub_to_access_device ${LBOOT} | sed -e 's/^/\t/')"

deve fazer com que pareça melhor. Este é o único defeito que encontrei no os-prober do grub2 em 12.04. Experimente e veja se consegue encontrar o SO.

    
por wijit 06.01.2014 / 16:18