Ubuntu на карте с интерфейсом USB - загружается в обоих режимах BIOS и UEFI

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


Мне сказали, что, если бы я установил Ubuntu в режиме BIOS, я не смог бы загрузиться от компьютера в режиме UEFI, и наоборот.

Так как я хотел бы смочь загрузиться на любом компьютере, это - большая проблема.

Что я могу сделать, чтобы смочь загрузиться на компьютерах в режимах BIOS или UEFI в моем случае?

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

Существует ли простое, "чистое" и довольно универсальное решение этой проблемы?

Я ценил бы некоторый explainations о причинах, почему определенное решение хорошо, или необходим определенный шаг.


Моя текущая установка:

  • Карта с интерфейсом USB: Крайнее Соответствие SanDisk (32 Идут),
  • ОС: Xubuntu 16.04 i386
  • установка: полная установка (от Живого USB, созданного с Rufus)
  • драйверы: ни одно собственное
  • файловые системы:
    • таблица разделов: GPT
      • 2: ESP, /boot/efi, 128 Mio, FAT32, [начальная загрузка, особенно]
      • 3: ABP, 128 Mio, HFS +
      • 4: BBP, 2 Mio, [bios_grub]
      • 5: подкачка, 512 Mio
      • 6: корень, /, 24 Gio, ext4, defaults,errors=remount-ro,lazytime,commit=60
      • 1: данные, /media/data, ~3.6 Gio, FAT32, defaults,lazytime,check=strict
    • ПОРШЕНЬ:
      • /tmp, tmpfs, defaults,nosuid,nodev,noexec,mode=1777
  • подкачка:
    • vm.swappiness=5
    • раздел подкачки: 512 Mio, для чрезвычайной ситуации
    • zRAM
    • файлы подкачки:
      • /var/swap/hib.swp: тот же размер как RAM, для спящего режима, сгенерированного сценарием при запуске
      • /var/swap/opt.swp: в случае необходимости, сгенерированный сценарием
  • сверхнастройка: ~5.6%
    • встроенный: ~1.2 Gio (по-видимому),
    • добавленный: 512 Mio
  • планировщик: deadline
5
задан 13 April 2017 в 15:24

2 ответа

NB: Здесь я представляю ручной способ действия. Это немного сложнее (не невозможная мысль), но вы можете точно контролировать то, что хотите / нужно. Если вы ничего не понимаете, возможно, вам будет лучше использовать такое программное обеспечение, как MultiSystem.

Есть два способа создать такой ключ USB. Вы можете использовать таблицу разделов mdos / MBR или таблицу разделов GPT. У обоих есть свои преимущества и недостатки, сначала я постараюсь описать версию mdos, а, возможно, перейду к версии GPT позже, когда у меня будет больше времени.

Таблица разделов mdos / MBR

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

Шаг 1. Найдите свой USB-порт. устройство

Используйте команду

lsblk

, чтобы найти имя вашего USB-устройства. Например, вы можете запустить lsblk , подключить ключ и запустить еще раз lsblk , чтобы увидеть, что изменилось. Появившееся устройство является вашим ключом, и будет отмечено, что оно имеет / dev / sdX .

Шаг 2: Создайте разделы

Вы можете использовать любую понравившуюся программу: gparted ], fdisk , cfdisk (инструмент командной строки для fdisk ) ... Затем выполните следующие операции

  • Сначала запустите программу ( sudo gparted или sudo fdisk / dev / sdX в зависимости от выбранной вами программы)
  • Затем сбросьте настройки устройства, чтобы получить таблицу разделов msdos gparted это в «Устройство / Создать новую таблицу разделов» с типом fdisk o .
  • Затем создайте три раздела. Первый в FAT32, он будет раздел данных (это также может быть NTFS, ext или любая другая файловая система), второй - это раздел EFI (на основе FAT) и должен быть загрузочным и иметь размер около 150 МБ, последний - это раздел с iso, и должно быть bootab le и в FAT32 (если вы используете ext2, он загрузится, но вы не сможете использовать постоянство). Вот что вы хотели бы получить в конце процесса (обратите внимание на флаги (драпировка на картинке), они важны):

gparted result

Если вы хотите создать их с помощью fdisk ,у вас должно получиться что-то вроде этого:

$ sudo fdisk -l /dev/sdc
Disque /dev/sdc : 14,3 GiB, 15376000000 octets, 30031250 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x2d844503

Périphérique Amorçage    Début      Fin Secteurs Taille Id Type
/dev/sdc1                 2048 14682111 14680064     7G  b W95 FAT32
/dev/sdc2    *        14682112 14989311   307200   150M ef EFI (FAT-12/16/32)
/dev/sdc3    *        14989312 30031249 15041938   7,2G  b W95 FAT32

Для этого выполните следующие действия:

sudo fdisk /dev/sdX
o

n
p
1
<Enter>
+7G     # Or any size you want, just be sure to let arount 2G at the end of the device
t
b

n
p
2
<Enter>
+150M
t
ef

n
p
3
<Enter>
<Enter>
t
b

w

sudo mkfs.fat -F32 /dev/sdX1
sudo mkfs.vfat /dev/sdX2
sudo mkfs.fat -F32 /dev/sdX3

Шаг 3: Смонтируйте разделы

Теперь смонтируйте их для записи на них

mkdir /tmp/usb{2,3}
sudo mount /dev/sdX2 /tmp/usb2/
sudo mount /dev/sdX3 /tmp/usb3/

Шаг 4: Установите grub на два раздела ( EFI и не-EFI)

Затем вам нужно установить grub на два раздела. Убедитесь, что у вас установлен grub, а затем запустите:

sudo grub-install -v --no-floppy --boot-directory=/tmp/usb3 --target=i386-pc /dev/sdX
sudo grub-install -v --no-floppy --boot-directory=/tmp/usb2 --efi-directory=/tmp/usb2 --removable --target=x86_64-efi /dev/sdX

Шаг 5: Скопируйте файл iso и настройте grub

Затем скопируйте ваш файл iso в следующую папку:

sudo cp <your iso file> /tmp/usb3/linux-iso

и поместите конфигурацию grub в две конфигурации grub /tmp/usb2/grub/grub.cfg и /tmp/usb3/grub/grub.cfg (NB: это может быть grub2 / grub.cfg в зависимости от вашей версии grub)

insmod loopback
insmod iso9660

menuentry 'XUbuntu 16.04 "Xenial Xerus" - amd64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-amd64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
} 

NB: вы должны отредактировать этот файл, чтобы он соответствовал хорошему iso-файлу, здесь мы предполагали поместить файл в /tmp/usb3/linux-iso/xubuntu-16.04.1-desktop-amd64.iso .

Перезагрузитесь и попробуйте как в режиме UEFI, так и в режиме без UEFI: он должен работать, но у вас еще не должно быть постоянства!

Шаг 6: добавьте единственное постоянство

Добавить постоянство очень просто. Идея состоит в том, чтобы создать на третьем разделе (фактически, любой раздел FAT32 будет принят) пустой файл casper-rw , который будет содержать некоторую файловую систему ext2. Затем он будет расположен над файлом iso, так что если система будет изменена, файл casper-rw будет записывать эти изменения. Если вы хотите записать только дом, выполните те же действия, но с именем файла home-rw вместо casper-rw (это может быть полезно, если вы не возражаете только данные документа, и, если вы предпочитаете избегать проблем с полным постоянством, объясненные ниже). Наконец, обратите внимание, что вместо файла вы можете просто создать раздел в ext2 с меткой casper-rw или home-rw , и это даст точно такой же результат, за исключением того, что вы сможете иметь более 4 ГБ модификаций (максимальный размер в системе FAT32).

Чтобы создать файл, просто запустите:

sudo dd if=/dev/zero of=/mnt/usb3/casper-rw bs=1M count=512

(здесь это 512 МБ, но вы можете изменить размер данных до 4 ГБ )

и добавьте persistent в строку linux ... в файлах / mnt / usb {2,3} /grub/grub.cfg (измените два файла). Это должно выглядеть так:

insmod loopback
insmod iso9660

menuentry 'XUbuntu persistent 16.04 "Xenial Xerus" - amd64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-amd64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper persistent file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
}

Теперь перезагрузитесь: у вас должна быть настойчивость! Вы даже можете смешивать постоянные и непостоянные файлы следующим образом:

insmod loopback
insmod iso9660

menuentry 'XUbuntu 16.04 "Xenial Xerus" - amd64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-amd64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
}
menuentry 'XUbuntu persistent 16.04 "Xenial Xerus" - amd64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-amd64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper persistent file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
}

Множественное постоянство

На данный момент все ОС в ключе имеют один и тот же файл постоянства. И если это casper-rw , который является общим, он может сломать все (данные в одной ОС не имеют ничего общего с данными в другой ОС). Чтобы иметь один постоянный файл для каждой системы, очень просто поместить файл в заданную папку, например persist / xubuntu :

mkdir /mnt/usb3/persist/xubuntu/
sudo dd if=/dev/zero of=/mnt/usb3/persist/xubuntu/casper-rw bs=1M count=512

и добавить persistent-persistent-path = / persist / xubuntu в файлах grub.cfg :

insmod loopback
insmod iso9660

menuentry 'XUbuntu persistent 16.04 "Xenial Xerus" - amd64' {
          set isofile="/linux-iso/xubuntu-16.04.1-desktop-amd64.iso"
          search --no-floppy --set -f $isofile
          loopback loop $isofile
          linux  (loop)/casper/vmlinuz.efi locale=fr_FR bootkbd=fr console-setup/layoutcode=fr iso-scan/filename=$isofile boot=casper persistent persistent-path=/persist/xubuntu file=/cdrom/preseed/ubuntu.seed noprompt ro quiet splash noeject --
          initrd (loop)/casper/initrd.lz
}

Вы также можете заметить, что я не нашел способа создать один раздел casper-rw для каждой ОС, поэтому я не вижу, как иметь множественное постоянство И постоянство более 4 Гб для всех ОС. Если у кого-то есть идея, я был бы рад ее услышать. Может быть, монтирование раздела может временно решить эту проблему?

Недостаток постоянства

Когда вы используете постоянство, вы должны знать, что обновление может быть опасным. Это действительно может сломать вашу систему, если изменения коснутся ядра, поэтому старайтесь не делать их слишком много. Более того, иногда это не подходит, когда вы меняете компьютер, некоторые люди объясняют, что они потеряли интернет при смене интернет-карты. Если вы хотите обновить свою систему, вам следует подумать об установке ее непосредственно на USB-ключ (например, если бы USB-ключ был диском), но этот метод может потерпеть неудачу, если вы попробуете свой ключ на компьютере, для которого требуется проприетарное программное обеспечение, которое не входит в состав установленной ОС. Если у кого-то есть решение, позволяющее обойти эти недостатки, я был бы рад услышать об этом.

Источники

Чтобы настроить grub для соответствия другим системам или если вы хотите использовать GPT вместо MBR, вас может заинтересовать следующие ссылки:

Наслаждайтесь и не стесняйтесь спрашивать, если у вас есть вопросы.

8
ответ дан 1 December 2019 в 09:21

Полная установка на USB - BIOS / UEFI

Mkusb представляет собой отличную основу для USB-накопителя с полной установкой, способного загружаться как из BIOS, так и из UEFI:

  • Используйте mkusb для создания Live-системы на установочном USB-устройстве (2 ГБ или больше).

  • Используйте mkusb , чтобы создать постоянную систему на целевом USB-накопителе 128 ГБ с настройками по умолчанию с постоянством ~ 25 ГБ, ( оставшийся раздел NTFS используется как раздел данных, доступный для Windows).

enter image description here

  • Как только mkusb завершит работу, откройте GParted и удалите sdx4, раздел ISO9660 и разверните sdx5 в восстановленное пространство, где sdx - это имя устройства целевого диска.

  • При желании создайте дополнительный раздел ext4 sdx6 для / home.

enter image description here

  • Отключите или извлеките жесткий диск, прежде чем продолжить (необязательно, но рекомендуется, настоятельно рекомендуется в режиме UEFI).

  • Загрузочный установочный диск, выберите Попробовать.

  • Вставить Целевой диск

  • Начать установку Ubuntu ...

  • Выберите «Что-то еще».

  • Выберите sdx5 (на целевом диске) и нажмите «Изменить».

enter image description here

  • Выберите Использовать как: ext4, Формат и точка монтирования: /.

Не трогайте другие разделы (кроме добавления раздела / home в sdx6).

  • Выберите sdx5 как Устройство для установки загрузчика .

  • Завершить установку.

  • Вырежьте grub.cfg из sdx5 / boot / grub и вставьте в sdx3 / boot / grub, перезаписав существующий файл grub.cfg.

  • Загрузите целевой диск и запустите sudo update-grub, чтобы добавить все диски в меню загрузки.

  • Не устанавливайте какие-либо собственные драйверы (например, Nvidia) при установке до 18.04.

1
ответ дан 1 December 2019 в 09:21

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

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