2

Я пытался сделать это в течение довольно долгого времени, и я чувствую, что исчерпал свои возможности. Я хочу сделать флешку разделенной так:

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2930687   1.4 GiB     0700  Microsoft basic data
   2         2930688        31709183   13.7 GiB    8300  Linux filesystem

Первый раздел - это fat32 (читается через windows), а второй раздел имеет встроенную установку linux (не важно, что такое distro/fs). Кикер в том, что я пытаюсь загрузить этот флэш-накопитель на сервер HP, который, очевидно, не будет загружаться только с любого флэш-накопителя. Я думаю, что это должно быть на основе DOS. Я пытался использовать grub для загрузки с раздела linux, и он отлично работает на разных машинах, но на машине HP он жалуется так:

Attempting to Boot from USB DriveKey (C:)
GRUB loading.
Welcome to GRUB!

error: out of disk
Entering rescue mode...
grub rescue>

К сожалению, на этом компьютере в BIOS нет опций thumbdrive/harddrive/boot. Поскольку кажется, что grub - это «нет», я думал, что попробую использовать syslinux, но syslinux не поддерживает загрузку с разных разделов. Я обнаружил, что использование syslinux и memdisk для загрузки ISO-образа на разделе fat32 прекрасно работает на HP (как LIVE iso), НО мне нужно иметь возможность настраивать некоторые вещи в установке linux - например, монтировать раздел fat32 и выполнять скрипт при загрузке завершен.

1 ответ1

0

Это старая нить, но я чувствую твою боль. У меня было множество проблем при попытке сделать это с GRUB, и у меня были похожие ситуации, когда вы работали с разными машинами по-разному, в зависимости от того, как хранилище перечисляется и передается в grub.

Проблема у вас, вероятно, (если она такая же, как и со мной!) в том, что этап 2 установлен на втором разделе linux вместе с ядром в /boot, и когда этап 1 загружается, он не может найти этап 2.

В конце концов мне удалось превратить GRUB в представление, сорвавшись в chroot, и это было ненавистно, в основном из-за перечисления дисковых устройств из BIOS (много ручного редактирования grub.cfg). Гораздо более простым решением является использование extlinux. Вот процесс:

  1. Раздел флешки с MBR, первый раздел ~ 1ГБ и второй, остальные ...
  2. Убедитесь, что флаг загрузки установлен на первом разделе
  3. Форматировать разделы с помощью FAT32 и чего-то еще (я использую BTRFS)
  4. Установите extlinux на загрузочный сектор, dd if=/usr/share/extlinux/mbr.bin of=/dev/sdb bs=440 count=1 conv=sync (iirc debian использует /usr/lib/syslinus/mbr/mbr.bin)
  5. Смонтируйте раздел FAT32 (например, в /media /disk) и выполните extlinux --install /media/disk
  6. Скопируйте из библиотек extlinux, cp /usr/share/extlinux/{libcom32.c32,libutil.c32,menu.c32} /media/disk
  7. Скопируйте подходящее ядро / initramfs в /media /disk
  8. Извлеките предпочитаемые вами Linux-rootfs в другой раздел (или subvol, если используете BTRFS) и отредактируйте /etc/fstab чтобы смонтировать раздел FAT32 в / boot
  9. Создайте /media/disk/extlinux.conf , мой выглядит так:extlinux.conf

Тогда попробуйте загрузиться - вы должны быть далеко! Некоторые заметки из моей борьбы:

  • BTRFS требует использования PARTUUID в загрузчике, вы не можете использовать базовый UUID раздела; понятия не имею почему
  • Поскольку мы используем MBR, этот процесс нельзя использовать с UEFI; требуется UEFI CSM
  • Мне никогда не нужно было использовать altmbr.bin но YMMV
  • Я использовал ext4 для первого раздела, но он должен нормально работать с FAT32

Наличие всего загрузчика, плюс ядра и initramfs на первом разделе делает это легким делом, и я до сих пор не видел его сбой по любой причине. Я построил встраиваемые системы x86 вокруг этого, и это кажется полностью пуленепробиваемым.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .