GRUB на USB-диску - додавання ОС


9

Деякі відомості:

  • Походить із значної частини Windows (хоча я знайомий з Ubuntu тощо) та використовує машину Windows 7 для виконання цього завдання
  • Успішно встановили GRUB на MBR USB-накопичувача (8 Гб FAT32-накопичувач):
  • Створили основну структуру на диску: / boot / grub, / boot / img, / boot / kernel

Питання:

У мене є основні питання для початківців, але ті, на які у мене виникли проблеми з пошуку відповідей через Google / StackExchange тощо.

  • Я розумію, що папка / boot / img / [SystemName] зберігатиме зображення для певної системи, яка може використовувати різні (або однакові) версії ядер Linux, що зберігаються в каталозі / boot / kernel (принаймні, так я я хотів би це налаштувати)
  • Однак у більшості цих систем просто є ядро ​​в своїх каталогах під назвою "linux" (не вказуючи версію). Я можу шукати, яке ядро ​​вони використовують, але де найкраще розміщувати ядра для копіювання в / boot / ядро?
  • Після отримання ядер я думаю, що решта - це скопіювати пристрій у / boot / img / та створити належний запис у menu.lst, правильно? Я можу це робити в системі на системній основі, як тільки я можу отримати ядра для посилання.

Загальна мета:

Я намагаюся створити 8 Гб флеш-накопичувач, який дозволить мені завантажувати декілька ОС із меню завантаження GRUB. Щоб додати або відняти ОС, я хотів би лише скопіювати відповідні файли в / boot / img / [SystemName] і в папку / boot / kernel, якщо це потрібно, а потім відредагувати файл menu.lst. Отже, цей перший крок полягає у пошуку ядер, якими ділиться багато цих ОС, оскільки я сподіваюся зменшити дублювання.


А що ви хочете мати після додавання ядра? Хочете працювати з ОС, з якої ви можете завантажуватися?
phunehehe

@phunehehe, дякую! Я оновив публікацію, щоб включити загальну мету.
SeanKilleen

Здається, ви намагаєтеся скинути LiveCD-зображення для різних дистрибутивів на USB-накопичувач, а потім зможете їх завантажувати. Це правильно?
Водін

@Wodin: По суті, так. LiveCD (але з можливістю запису, оскільки він буде на носіях для запису), з одним уніфікованим завантажувачем для всіх дистрибутивів / інструментів, які я захочу.
SeanKilleen

Відповіді:


4

Те, що ви намагаєтеся досягти, - це технологія розтягування завантаження :) Однак я думаю, що це можливо, хоча я недостатньо обізнаний, щоб дати повне проходження.

По-перше, як говорилося раніше, дистрибуція має дуже різні вимоги. По-друге, добре з іншого боку, ви також можете знайти дистрибутиви, які потребують мінімальних вимог.

Я рекомендую використовувати GRUB4DOS як завантажувач. Дивіться це посилання, як користуватися ним через USB (оскільки він має команду find --set root - команда, що важливо, якщо у вас мобільний пристрій на зразок USB).

Тоді ви повинні вирішити, скільки розділів ви будете використовувати. Стандартна "Повна установка" завжди знаходиться в одному розділі. Отже, якщо у вас є USB-накопичувач на 8 ГБ і ви маєте 4 Гб розділ (що дозволяє мінімально встановити), ви обмежуєтесь двома різними "Повними встановленнями" основних дистрибутивів, як Debian або Fedora.

Однак є деякі невеликі та спеціалізовані дистрибутиви Linux. Наприклад, "Щеня Linux" дуже маленький і має спеціальний режим "Економна установка". Він має багато ароматів (наприклад, існує MacPup із спробами впровадити Apple, такий як Desktop, або Fatdog64, який є 64-розрядним Linux).

У цьому режимі "Ненадійної установки" він просто використовує рівно 1 каталог і може бути встановлений паралельно існуючим Linux або Windows на жорсткому диску (або USB). Я впевнений, що є й інші дистрибутиви, які підтримують подібні режими.

Оскільки Puppy Linux невеликий (<150 Мб) і якщо ви резервуєте невеликий файл збереження для кожної установки (512 МБ), ви можете легко встановити на USB-накопичувач 10 різних операційних систем. Є ще менші Linux (Slitaz, Tinycore), якими ви могли б користуватися.

Наприклад, я додаю файл menu.lst (GRUB4DOS) з моєї поточної установки на ПК. Перші 8 записів - це всі різні установки Puppy Linux на hd0,2 (тобто 3-й розділ на 1-му жорсткому диску), тоді є мінімальний Встановлення Debian у невеликий додатковий розділ, а також оригінальний Windows-XP.

timeout=10
default=0  

  title Linux Buero (on /dev/sda3)
  root (hd0,2)
  kernel /puppy431-de/vmlinuz psubdir=puppy431-de pkeys=de ro vga=normal
  initrd /puppy431-de/initrd.gz

  title Live CD build (on /dev/sda3)
  root (hd0,2)
  kernel /puppylivecdbuild/vmlinuz psubdir=puppylivecdbuild ro vga=normal
  initrd /puppylivecdbuild/initrd.gz

  title sage developement(on /dev/sda3)
  root (hd0,2)
  kernel /Sage46dev/vmlinuz psubdir=Sage46dev pfix=nocopy ro vga=normal
  initrd /Sage46dev/initrd.gz

  title sage developement test and fun
  root (hd0,2)
  kernel /Sage-test/vmlinuz psubdir=Sage-test pfix=nocopy,noram ro vga=normal
  initrd /Sage-test/initrd.gz

  title Lupq 511
  find --set-root --ignore-floppies /lupq511/initrd.gz
  kernel /lupq511/vmlinuz psubdir="lupq511" pfix=nocopy pkeys=de ro vga=normal
  initrd /lupq511/initrd.gz 

  title Lupu 520 - New kid on the block
  find --set-root --ignore-floppies /lupu-520/initrd.gz
  kernel /lupu-520/vmlinuz psubdir="lupu-520" pfix=nocopy pkeys=de ro vga=normal
  initrd /lupu-520/initrd.gz 

  title wary beta (on /dev/sda3)
  root (hd0,2)
  kernel /wary/vmlinuz psubdir=wary ro vga=normal
  initrd /wary/initrd.gz

  title spup (on /dev/sda3)
  root (hd0,2)
  kernel /spup/vmlinuz psubdir=spup ro vga=normal
  initrd /spup/initrd.gz

  title Debian (on /dev/sda2)
  find --set-root --ignore-floppies /initrd.img
  kernel /vmlinuz root=/dev/sda2 ro
  initrd /initrd.img

  title Windows NT/2K/XP\nStart Windows if installed on HDD
  fallback 7
  find --set-root --ignore-floppies /ntldr
  chainloader /ntldr

boot

Меню.lst на вашому USB може виглядати подібним чином, команда GRUB4DOS find --set-root --ignore-floppies /lupq511/initrd.gz (шукає цей файл на всіх накопичувачах) може бути дуже корисною, якщо ви використовуєте USB, тому вам не доведеться використовувати фіксовані записи для вашого диска.

З вищенаведеною інформацією є деякі коментарі до ваших оригінальних питань:

З: * Я розумію, що папка / boot / img / [SystemName] зберігатиме зображення для певної системи, яка може використовувати різні (або однакові) версії ядер Linux, що зберігаються в каталозі / boot / kernel (принаймні, ось як я хотів би це налаштувати)

Відповідь: Я не впевнений, чи буде це спрацьовувати, оскільки більшість основних дистрибутивів мають ексклюзивне право на свій розділ та встановлення конкретної структури каталогів для своїх файлів. На мою думку, краще дотримуватись налаштувань за замовчуванням і забезпечувати те, що очікує дистрибутив, тобто деяким потрібен ексклюзивний розділ, дехто буде задоволений просто каталогом на спільному розділі. Я не можу сказати, що неможливо встановити декілька ОС на 1 розділ не за замовчуванням, але це клопотання про проблеми, і, на мою думку, це не практично для новачків Linux. Можливе вирішення я згадую внизу своєї публікації ("Вубі-подібний" встановлюється).

Питання: * Однак у більшості цих систем просто є ядро ​​у своїх каталогах під назвою "linux" (не вказується версія). Я можу шукати, яке ядро ​​вони використовують, але яке найкраще місце для того, щоб самі ядра скопіювати в / boot / ядро?

Відповідь: Я думаю, що ядра повинні надходити саме там, де їх зазвичай є дистрибутиви. Немає необхідності зберігати їх в окремій папці / boot / kernel, і я також не рекомендував би намагатися ділитися ними між дистрибутивами. Місце для ядра мінімальне (наприклад, 2-3 МБ). Версій і під-версій дійсно багато, а іноді є навіть конкретні патчі, застосовані до ядер дистрибутивів. Підключення до іншого / неперевіреного ядра - це непотрібний експеримент.

З: * Після отримання ядер я думаю, що решта - це скопіювати пристрій у / boot / img / та створити належний запис у menu.lst, правильно? Я можу це робити в системі на системній основі, як тільки я можу отримати ядра для посилання.

Відповідь: Як було сказано раніше, краще створити окремі розділи для тих дистрибутивів, які їм потрібні, і змішайте не надто жадібні дистрибутиви у власних папках. Поставтеся до ядра, initrd та решти дистрибутива як до одиниці.

Остання думка. Якщо ви не хочете використовувати різні розділи, ви можете спробувати щось подібне до встановлення "WUBI" для дистрибутивів, вимагаючи повного встановлення на власний розділ. Це означає, що ви створюєте великі файли з власною файловою системою ext2 / ext3 на USB, потім монтуєте їх як "диски" та встановлюєте в неї ОС. (Я називаю це WUBI, тому що це найвідоміший додаток).

Далі має бути запис Grub4dos menu.lst для завантаження "Wubi install".

# Add the ntfs module - just needed for Installation on a Windows Partition
insmod ntfs
# Set root (normally would be sda1, or hd0,1 Change as necessary
set root=(hd0,1)
loopback loop0 /ubuntu/disks/root.disk
set root=(loop0)
linux /boot/vmlinuz root=/dev/sda1 loop=/ubuntu/disks/root.disk ro
initrd /boot/initrd/initrd.img
boot

Від сюди .

Розумієте, є 2 команди "встановити корінь", друга після "root.disk", яка містить Linux, монтується як loop0.

Я сподіваюся, що я міг би дати деякі ідеї, хоча це не є повним проходом.


Вибачте, я отримав друге посилання на грубський запис для Вубі неправильно (адже це моє перше повідомлення, моє 2-е посилання було "захищено від спаму"). Правильна посилання: blogold.chinaunix.net/u3/113851/showart_2311251.html
Emil WidmannEmil

1

Ось два путівники:

Я думаю, що обидва використовують окремі розділи для кожного ядра.

Записи в " /boot/grub/menu.lst " виглядають так:

title Unity-2010 -- With Persistence
kernel (hd0,0)/isolinux/vmlinuz vga=788 livecd=livecd fromusb
root=Label=Unity-2010 changes_dev=LABEL=Unity-2010 acpi=on fstab=rw,noauto
initrd (hd0,0)/isolinux/initrd.gz

title Unity-2010 -- No Persistence
kernel (hd0,0)/isolinux/vmlinuz vga=788 livecd=livecd fromusb
root=Label=Unity-2010  acpi=on fstab=rw,noauto
initrd (hd0,0)/isolinux/initrd.gz

0

Це дійсно залежить від того, які дистрибутиви ви туди ставите. Деякі з них роблять неприємні речі в initramfs, тому стає важко. Деякі живі дистрибутиви шукають ярлик, деякі шукають uuid. Ви не можете цього надати.

Рішення не з легких, вам слід створити нові спеціалізовані рамкові диски для своїх живих дистрибутивів.

Я сподіваюся, що я не зрозумів це неправильно: D


0

Вам, безумовно, потрібен якийсь простір користувачів, щоб пройти з кожним із цих ядер. (Програми, конфігурація, роботи.) Традиційно ви б використовували принаймні один розділ для кожної окремої ОС, а сам розділ GRUB монтувався б як / boot (таким чином, ви фактично не матимете завантаження як підкаталог цього розділ; це буде кореневий каталог із grub / як підкаталогом.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.