Мультизагрузочный USB с дополнительным первым разделом

Я хотел бы создать 64-битный мультизагрузочный USB-накопитель.

Я хочу, чтобы первый раздел был 32-гигабайтным разделом fat32, чтобы я мог использовать его для доступа к файлам из окон. (Windows отображает только первый раздел на съемном диске).

Затем я хочу поместить пару (или больше, если возможно) дистрибутивов linux на более поздние разделы.

Я предполагаю, что мне понадобится небольшой загрузочный раздел (в идеале syslinux) … но он не может быть первым разделом.

Как мне лучше всего начать эту настройку?

Все утилиты, которые я просматривал (linux и windows) для создания мультизагрузочных USB-устройств, не дают параметров для добавления дополнительного раздела в начале таблицы разделов.

4 Solutions collect form web for “Мультизагрузочный USB с дополнительным первым разделом”

Я считаю, что инструмент, который вы ищете, – YUMI . У меня почти такая же настройка, на которую вы ссылаетесь на 64-Гбайт USB-накопителе. Вы не указали, хотите ли вы, чтобы это были дистрибутивы Live или полные установки, но вот моя личная настройка:

64G USB-накопитель, отформатированный в любом формате YUMI (я забыл, но считаю, что это Fat32), но это не имеет особого значения, поскольку он просто работает «из коробки»). Изнутри YUMI вы можете выбрать несколько ISO-стандартов Linux, которые позволят вам загрузить Live Boot из того, что вы выбрали при запуске.

Одно дело отметить, однако, что если ваш USB-накопитель в настоящее время не в том формате, который предпочитает YUMI, ему необходимо будет переформатировать диск соответственно, поэтому убедитесь, что в нем не хранятся важные файлы, прежде чем повторно форматировать его для установки вашего первого дистрибутива Linux.

YUMI автоматически сохраняет каждый из этих дистрибутивов в каталоге в корне этого USB-накопителя с именем multiboot , который содержит все, что связано с YUMI, и материал, необходимый для запуска ваших дистрибутивов Linux. Вы можете использовать остальную часть этого USB-накопителя, чтобы хранить все, что захотите.

Лично у меня есть файлы win, osx и nix, содержащие важные инструменты и переносные приложения, и эти каталоги находятся на этом же USB-диске прямо рядом с многозадачным каталогом. Если я обычно загружаюсь в ОС, а затем вставляю этот USB-накопитель, все мои файлы доступны для использования.

Однако, если я нахожусь на машине под Windows, у меня есть возможность загружаться непосредственно с этого USB-накопителя в загрузчик YUMI (который, я считаю, является настроенной формой GRUB), и он позволяет мне выбирать из всех живых которые он установил в многозадачном каталоге. Я думаю, что он даже дает возможность загружать Windows в обычном режиме, или это может быть просто вариант выхода, который просто перезагружается, а затем я могу нормально загружать Windows с внутреннего диска.

Если вы хотите постоянно сохранять файлы во всех перезагрузках и запускать Linux как полную установку, я считаю, что YUMI имеет возможность создать отдельный статический раздел на диске, но он утверждает, что он ограничен только Ubuntu. Он также может работать с Debian, но я никогда не пробовал этот метод. Опять же, я мог бы получить эту специфическую особенность, полностью запутанную с функцией, включенной в UNetbootin , которая в последний раз я не поддерживал все варианты многозадачности, поддерживаемые YUMI. По моему личному мнению, YUMI лучше, чем UNetbootin.

Однако должно быть известно, что при использовании YUMI я столкнулся с недостатком:

В какой-то момент у меня были прямые версии Backtrack, Knoppix, Crunchbang и Linux Mint, установленные через YUMI. Несколько месяцев спустя я хотел загрузить этот USB в YUMI и удалить Backtrack и заменить его на Kali Linux, но YUMI сообщил мне, что они обновили свой загрузчик, и в результате, если бы я хотел установить дополнительные дистрибутивы, я бы переформатировать диск и начать с нуля с помощью своего нового загрузчика, который был несовместим со старыми дистрибутивами, которые я ранее установил, которые использовали свой старый загрузчик.

Это не было бы огромным делом, но было бы досадой, чтобы tar содержимое моих обычных файлов и переместить их с USB, а затем переустановить все другие Live ISO, которые я хотел бы сохранить через YUMI. Однако, скорее всего, это был бы разбойник, если бы вы хотели иметь отдельный раздел для хранения файлов при перезагрузках (что, как я уже сказал, я просто могу ввести в заблуждение функцию Unetbootin, в отличие от YUMI).

Все из сказанного, исходя из вашего конкретного вопроса, я считаю, что YUMI должен адекватно использовать цель того, что вы хотите достичь. Это отличный инструмент, который мне хорошо послужил в прошлом.

Для этого требуется компьютер с использованием BIOS для загрузки или поддержки какой-либо формы «старого» режима загрузки ( модуль поддержки совместимости ) – по крайней мере, я думаю, что это так: у меня нет опыта работы с системами EFI.


Чтобы создать загрузочный USB-накопитель с syslinux, вы:

  • создавать разделы
  • инициализировать файловые системы на разделах
  • установить syslinux на раздел
  • Отметить раздел syslinux active
  • установить код syslinux ' mbr

После этих шагов вы сможете загрузиться с USB-накопителя и, после загрузки с палки, будут приветствоваться приглашением загрузки syslinux; там вы можете выдавать команды для загрузки дополнительного кода и продолжения процесса загрузки.

Чтобы не набирать длинную командную строку при каждой загрузке, можно создать файл syslinux.cfg, чтобы удерживать командную строку, возможно, несколько.

Обычно также устанавливаются модули syslinux , копируя соответствующие файлы * .c32 в каталог syslinux раздела; примерами для этих модулей являются: menu.c32 , chain.c32 .

Пример изображения

Поскольку у меня нет свободной ручки USB, вокруг меня я создал образ 2 ГБ для примера, выпустив:

 dd if=/dev/zero of=example.img bs=1k count=2M 

который я затем подключил к устройству loop, выполнив:

 losetup --find --show example.img 

Эта команда требует, чтобы параметр max_part модуля цикла был установлен на число, по крайней мере такое же большое, как количество разделов в файле изображения:

 rmmod loop modprobe loop max_part=10 

Если модуль цикла был встроен в ядро, вы можете указать max_part в качестве загрузочного параметра для ядра:

 loop.max_part=10 

Альтернативно вы можете использовать kpartx для установки устройств цикла:

 kpartx -av example.img 

Узлы устройств для разделов можно найти ниже / dev / mapper / . Если вы используете kpartx и хотите следовать примеру, вы должны соответствующим образом установить переменную dev_part .

переменные

Для примеров я задал следующие переменные:

 # device node dev=$(losetup --find --show example.img) # set to eg /dev/mapper/loop0 when using kpartx dev_part=${dev} # loop devices use the letter 'p' to denote partitions (eg /dev/loop0p1) # drives normally do not (eg /dev/sda1) part_divider=p # path to syslinux modules and mbr libpath=/usr/lib/syslinux # Path to mount point; used when eg files need editing mount_point=/mnt # The number of the partition that you use to share files with windows files_part_nr=1 # The number of the boot partition boot_part_nr=2 # The number of the partition that holds a linux distribution CD's content dist_part_nr=3 

В качестве примера я выбрал Tiny Core Linux :

 # Download Tiny Core's iso and set variable "isofile" to its destination # filename isofile=$(curl -# -OJ -w '%{filename_effective}\n' "http://tinycorelinux.net/6.x/x86/release/TinyCore-current.iso") 

Команда curl выполняет следующие действия:

  • -# Показывать ход с помощью панели на терминале
  • -O Записать файл на имя, полученное из URL
  • -J Вывести имя из заголовка «Content-Disposition» вместо URL-адреса
  • -w Введите имя файла на стандартный вывод (который будет сохранен в переменной isofile)

Создание разделов

MBR

 # Create an empty msdos style partition table parted -s "${dev}" mktable msdos # Create two primary partitions (ie sdb1, sdb2) # one holding your files and one for syslinux parted -s "${dev}" mkpart primary fat32 0MB 800MB parted -s "${dev}" mkpart primary ext2 800MB 900MB 

GPT

 # Create an empty gpt partition table parted -s "${dev}" mktable gpt # Create two primary partitions (ie sdb1, sdb2) # one holding your files and one for syslinux parted -s "${dev}" mkpart files fat32 0MB 800MB parted -s "${dev}" mkpart boot ext2 800MB 900MB 

Инициализация файловых систем

 # DATA mkfs.vfat "${dev_part}${part_divider}${files_part_nr}" # BOOT mkfs.ext2 "${dev_part}${part_divider}${boot_part_nr}" 

Установите syslinux (extlinux) на раздел

Установите загрузочный раздел и запустите extlinux :

 mount "${dev_part}${part_divider}${boot_part_nr}" "${mount_point}" mkdir "${mount_point}/syslinux" extlinux -i "${mount_point}/syslinux" umount "${mount_point}" 

Вы можете выбрать любой другой каталог в разделе для хранения файлов syslinux: поместить файлы в корневой каталог: extlinux -i "${mount_point}" ; поместите файлы в каталог под названием / boot : extlinux -i "${mount_point}/boot" .

С помощью syslinux команда будет выглядеть следующим образом (у вас не должно быть загрузочного раздела):

 syslinux -i -d /syslinux "${dev_part}${part_divider}${boot_part_nr}" 

Отметка раздела syslinux

По умолчанию syslinux MBR загрузочный код ищет раздел, помеченный активным, чтобы передать управление, чтобы загрузить загрузочную запись тома .

MBR

 # Mark boot partition as active (MBR) parted "${dev}" set "${boot_part_nr}" boot on 

GPT

 # Mark boot partition as active (GPT) parted "${dev}" set "${boot_part_nr}" legacy_boot on 

Если вы используете gdisk для разделения вашего диска, вам нужно активировать «дополнительные функции», нажав x , чтобы иметь возможность «устанавливать атрибуты» ( a ).

Установите код MBR syslinux

 dd conv=notrunc bs=440 count=1 if="${libpath}/mbr/mbr.bin" of="${dev}" 

Для разделенного диска GPT вы используете gptmbr.bin вместо mbr.bin .

Существует также альтернативный загрузчик altmbr.bin , который не ищет раздел, помеченный как активный, но вместо этого использует указанный раздел; используйте его в соответствии со следующим:

 print '\x2' | cat ${libpath}/mbr/altmbr.bin - | dd conv=notrunc bs=440 count=1 iflag=fullblock of=${dev} 

ботинок

Добавьте этот пункт, который вы можете запустить с устройства, и его приветствует приглашение загрузки syslinux.

 qemu-system-i386 -drive file="${dev}",format=raw 

Поскольку syslinux может загружать только файлы из одного раздела, вы еще не сможете продолжить процесс загрузки в ОС.

Загрузите дистрибутив Linux через Chainloading

Создать раздел

Создать другой раздел; либо запустить (для раздела типа MBR):

 parted "${dev}" mkpart primary ext2 900MB 100% 

или использовать (для GPT):

 parted "${dev}" mkpart distribution ext2 900MB 95% 

Затем инициализируйте файловую систему:

 mkfs.ext2 "${dev_part}${part_divider}${dist_part_nr}" 

Последовательная загрузка

Модуль syslinux ' chain.c32 позволяет вам загружать загрузочную запись тома другого раздела, которая может использоваться для ограничения ограничений syslinux только для загрузки файлов раздела, откуда он был загружен; таким образом, можно также повторно использовать файлы конфигурации syslinux / isolinux, включенные в образ ISO.

Чтобы иметь возможность использовать модуль chain.c32, вам необходимо скопировать его и его зависимости ( libcom32.c32 и libutil.c32 ) в каталог syslinux в загрузочном разделе:

 mount "${dev_part}${part_divider}${boot_part_nr}" ${mount_point} cp "${libpath}/modules/bios/libcom32.c32" ${mount_point}syslinux/ cp "${libpath}/modules/bios/chain.c32" ${mount_point}/syslinux cp "${libpath}/modules/bios/libutil.c32" ${mount_point}/syslinux umount ${mount_point} 

Затем вы распакуете ISO-образ и переименуете isolinux.cfg в имя, ожидаемое syslinux: syslinux.cfg

 mount "${dev_part}${part_divider}${dist_part_nr}" "${mount_point}" 7z x -o"${mount_point}" "${isofile}" mv "${mount_point}/boot/isolinux/isolinux.cfg" "${mount_point}/boot/isolinux/syslinux.cfg" 

Я нахожусь в чистом, чтобы также переименовать папку isolinux / в syslinux / , хотя это не является строго необходимым; Я также удаляю некоторые ненужные файлы:

 mv "${mount_point}/boot/isolinux" "${mount_point}/boot/syslinux" rm "${mount_point}/boot/syslinux/isolinux.bin" rm -r "${mount_point}/[BOOT]" 

Кажется, что iso от TinyCore пропускает libutil.c32 (необходимо для menu.c32 ):

 cp ${libpath}/modules/bios/libutil.c32 "${mount_point}/boot/syslinux" 

Установите загрузчик на раздел и отключите:

 extlinux -i ${mount_point}/boot/syslinux umount ${mount_point} 

ботинок

Когда вы загружаете изображение

 qemu-system-i386 -drive file=${dev},format=raw 

и введите в командной строке syslinux следующее:

 chain.c32 hd0 3 

вам следует приветствовать меню Syslinux Tiny Core Linux .

конфигурация

Установите загрузочный раздел и создайте файл syslinux.cfg :

 mount ${dev_part}${part_divider}${boot_part_nr} ${mount_point} cat >${mount_point}/syslinux/syslinux.cfg <<EOF LABEL tc MENU LABEL Boot TinyCore COM32 chain.c32 APPEND hd0 3 umount ${mount_point} 

На диске, разбитом на разделы с использованием формата GPT, вы можете использовать GUID раздела или его метку, передавая либо guid= либо label= в chain.c32 :

 APPEND label=<LABEL> 

или

 APPEND guid=<GUID> 

Вы можете использовать blkid чтобы найти метку и guid .


Grub2

GPT

Для GPT grub2 требуется дополнительный раздел для хранения некоторого кода загрузки. При parted вы создаете один со следующими командами:

 parted ${dev} grub_boot 95% 100% parted ${dev} set bios_grub on 

В gdisk вы выбрали ef02 как тип раздела.

Согласно информационному документу grub, он должен иметь минимальный размер 31KiB.

Установить grub

 mount ${dev_part}${part_divider}${boot_part_nr} ${mount_point} # use --modules="part_gpt" for a gpt partition drive grub-install -d ${mount_point} --modules="part_msdos ext2" umount ${mount_point} 

Я не знаю, строго ли --modules – по крайней мере, с помощью устройства loop grub не удалось получить доступ к файлам без него.

Последовательная загрузка

В приглашении загрузки grub введите:

 insmod chain set root=(hd0,3) chainloader +1 boot 

И вы снова увидите меню syslinux Tiny Core Linux .

конфигурация

Для примера Tiny Core Linux добавьте следующее в /grub/grub.cfg в загрузочный раздел:

 menuentry "Tiny Core Linux" { insmod chain set root=(hd0,3) chainloader +1 } 

Чтобы быть независимым от порядка, в котором приводятся перечисленные вами диски, вы можете установить корень с помощью UUID; замените set root с помощью:

 search --set root --fs-uuid <UUID> 

Используйте blkid для получения UUID.

Загрузите ISO

Живые компакт-диски некоторых дистрибутивов могут монтировать свою файловую систему из ISO-образа; вместе с функцией loop grub вы можете сделать следующее (например, я использую Archlinux ) Live CD):

 isofile=archlinux-2015.11.01-dual.iso mount ${dev_part}${part_divider}${dist_part_nr} ${mount_point} cp ${isofile} ${mount_point} umount ${mount_point} 

Затем используйте следующее в grub.cfg :

 menuentry "Archlinux LiveCD" { insmod loopback set isofile="archlinux-2015.11.01-dual.iso" search --set isodrive --file /$isofile probe --fs-uuid --set uuid $isodrive loopback loop ($isodrive)/$isofile set root=loop echo "Loading kernel vmlinuz" linux /arch/boot/i686/vmlinuz img_loop=$isofile img_dev=/dev/disk/by-uuid/$uuid echo "Loading initial ramdisk archiso.img" initrd /arch/boot/i686/archiso.img } 

Я нашел необходимые параметры загрузки для Archlinux ISO в дереве archiso git .

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

Вот что я сделал бы:

  1. Разделите диск по своему усмотрению, причем первый раздел будет 32 ГБ FAT32
  2. Установите Linux-дистрибутивы, которые вам нравятся, один за другим, используя syslinux
  3. После установки каждого дистрибутива выполните резервное копирование файлов конфигурации syslinux где-нибудь

После того, как вы закончите, вы должны иметь свой последний дистрибутив с возможностью загрузки и правильные файлы конфигурации для загрузки дистрибутивов, установленных перед ним. Затем вам нужно будет создать меню syslinux в его файле конфигурации и создать резервные копии цепочек для загрузки каждого установленного дистрибутива.

На последних достаточно аппаратных (2007 и выше) USB-накопителях нет ничего особенного (просто еще один жесткий диск). Поэтому вы можете использовать установочный компакт-диск Windows, чтобы отформатировать его как обычный «маленький жесткий диск (MBR)». Вы можете установить окна на первом 32-Гбайт основном разделе (вы можете использовать NTFS, так как жир не так хорош в этом размере), а затем добавить расширенный раздел, разрезать его на куски 12 ГБ и установить Linux как обычно. Вы можете использовать разделяемый / home раздел и монтировать для всех дистрибутивов и перерабатывать один и тот же UID / GUID, чтобы сделать ваш домашний каталог портативным. Просто убедитесь, что у вас есть все SSD-оптимизации для обоих окон и Linux, и не полностью заполняйте флэш-накопитель.

  • Как установить Debian на flashdrive
  • Проблема с полномочиями Automount USB Storage Permissions; FreeBSD 10.3
  • Предотвращение вращения внешнего USB-накопителя во время приостановки в ОЗУ
  • USB-накопитель доступен только для чтения в GNOME / nautilus?
  • Скорость записи медленного USB 3
  • загрузочный live usb не загружается, KNOPPIX
  • BIOS не распознает мой загрузочный USB
  • Можно ли удалить USB-носитель Clonezilla во время его работы?
  • Как автоматически принудительно использовать umount на накопителе USB, который уже удален?
  • Автоматизация USB-приводов на Debian 8 не работает
  • подготовка диска USB для загрузки
  • Linux и Unix - лучшая ОС в мире.