тестеру OS не удается определить систему Linux, таким образом, я должен записать пользовательскую grub2 запись меню как обходное решение, как?

Я хочу добавить пользовательское меню к grub2 как это (как /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.....
}

и то, в чем я нуждаюсь, является ".... некоторыми данными здесь....."

Некоторые трудности:

  1. Когда начальная загрузка порядка диска изменяется от BIOS, например, иногда диск с разделом /dev/sda и иногда это /dev/sdg. таким образом, я использую UUID для раздела. ОБНОВЛЕНИЕ: прошлый раз, был /dev/sdc !

  2. Система Linux использует отдельный раздел начальной загрузки, т.е. раздел 1 /boot раздел, раздел 2 /root раздел и расширенный раздел 4 /home раздел

Здесь вывод blkid от того, когда Linux думал диск, был/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" 

Вот содержание Системы Linux (который имел наследие личинки, пока восстановление начальной загрузки не переопределило 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

информация начальной загрузки по http://paste.ubuntu.com/1099113/ и по http://paste.ubuntu.com/1100049/ для каждого из случаев различных порядков загрузки.

Я знаю, что это может работать, потому что это работало прежде...


ОБНОВЛЕНИЕ:

Я выполнил тестер OS от 10,04 (1.38/ясный), и он работал, он нашел все системы Linux в отличие от 12,04 тестеров OS (1.51). Таким образом, я выполнил восстановление начальной загрузки (http://paste.ubuntu.com/1101977/) снова, и оно произвело запись Linux grub2 меню Дуги. Это смотрело как это (от /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
}

Идентичный Cumulus007 предложенный ответ.

К сожалению, этот "новый" grub.cfg еще не загрузил бы Дугу Linux так никакой ответ...


ПОСЛЕДНЕЕ ОБНОВЛЕНИЕ: кажется, что 10.04's grub3 (1.98) не может использовать UUID для начальной загрузки, и так как BIOS моих аппаратных средств перепутывает порядок жесткого диска от начальной загрузки до начальной загрузки, на самом деле достигание начальной загрузки является загаженным выстрелом... <¬ (

1
задан 21 July 2012 в 03:02

3 ответа

Ну, это сработало для меня, вероятно, не вариант для других.

У меня установлено три системы Linux: Ubuntu 10.04 LTS, Xubuntu 12.04 и Arch Linux (с постоянным выпуском).

12.04 не удалось, потому что его os-prober не может найти Arch Linux

10.04 не удалось, потому что он не может использовать UUID и мой аппаратный BIOS смешивает порядок жестких дисков.

Поэтому я обратился к Arch Linux, установил grub2 и настроил его. Это os-prober находит все установленные системы и может использовать UUID.

Установка по https://wiki.archlinux.org/index.php/Grub

0
ответ дан 21 July 2012 в 03:02

Строка 184 из /etc/grub.d/30_os-prober гласит:

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

Это может сбить с толку парсер сценариев. Отредактируйте его так:

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

, чтобы он выглядел лучше. Это единственный дефект, который я обнаружил в os-prober grub2 в 12.04. Попробуйте и посмотрите, сможет ли он найти ОС.

0
ответ дан 21 July 2012 в 03:02

Дайте мне знать, если это работает:

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
}
0
ответ дан 21 July 2012 в 03:02

Другие вопросы по тегам:

Похожие вопросы: