Живая флешка с Linux быстро, удобно и без геморроя [Учебник: как создать]
Добрый вечер уважаемая аудитория! =)
Меня зовут Ден Иванов, я достаточно известный в г. Ростове-на-Дону линуксоид, а ещё я люблю тестировать разные дистрибутивы, когда у меня есть настроение - например посмотреть топ на distrowatch и скачать что-то новое. В общем, я дистрохоппер.
В 2014 году я, тестируя очередные дистрибутивы Linux, подумывал - как было бы здорово, облегчить процесс записи дистрибутивов на флешки - для тестирования. Примерно в то же время я впервые приобрел и протестировал потрясающую скоростную флешку (которая, по сути, SSD) SanDisk Cruzer Extreme Pro. Могу попутно вам её порекомендовать, бывает в версиях на 32 и 64 гб (возможно и больше) и есть в достатке по адекватной цене на eBay.
И в какой-то момент мне попался вначале Super Grub 2 Disk, тестируя который я понял - у Grub2 есть функционал загрузки из ISO-образа с носителя (без распаковки), а значит, этот функционал можно использовать и без Super Grub 2 Disk (спец дистрибутив для починки загрузчиков). И в результате своих поисков мне попался очень интересный репозиторий на github:
https://github.com/infinity0/uberimg
В нём и есть, фактически, взятый от Super Grub Disk код по поиску и инициализации ISO файлов с флешки. Среди дополнительных плюсов тот факт, что вам не надо форматировать флешку, удалять с неё файлы, переразмечать её и так далее - просто скинули ISO и готово.
Что же нужно для того чтобы сделать такую удобную, живую флешку, с которой можно загружаться прямо из ISO-файлов (нужно просто скинуть ISO дистрибутива в соответствующую папку)?
- Сама флешка, разумеется. Я рекомендую SanDisk Cruzer Extreme Pro - скорость чтения и записи приближаются к внушительным 250 мб-сек (USB 3.0). В принципе, хватит флешки на 2 гб или более. Но конечно основная суть данных манипуляций - иметь несколько дистрибутивов под рукой, поэтому я рекомендую флешки на 16-32 гб, у меня получалось помещать на флешку в 32 гб до 21 корректно загружающихся дистрибутива (!).
- Установите git, если у вас его нет (примеры здесь и далее для ubuntu/debian):
sudo apt install git
- Клонируйте репозиторий себе в домашнюю папку:
git clone https://github.com/infinity0/uberimg
- Зайдите в папку со скачанными файлами:
cd uberimg
- Можем установить умный grub2 на флешку! Для этого выполните команду, не забыв поменять путь к вашему пользователю и флешке (в конце). На вопросы терминала - уверены что хотите установить uberimg - нажмите y, затем вас спросят пароль, его нужно ввести и нажать enter, как обычно :) Данный шаг может занять пару минут. В течении этого времени будет висеть надпись Installing for i386-pc platform.
./imgctl install /media/user/yourflash
- Если в выдаче терминала через пару минут не обнаружилось ошибок и запись закончена успешно, вы увидите надпись Installation finished. No error reported.. Осталось зайти на флешку и создать папку для хранения ISO-образов под именем img (чтобы она не мешала остальным файлам, да и вообще). Можете сделать это через графику или командой:
cd /media/user/yourflash && mkdir img
- Флешка готова принимать ISO-образы! Просто копируйте их ISO-файлами на флешку в папку img, загружайте ваш ПК с флешки и нажимайте Enter. Так же, убедиться что всё прошло успешно, вы можете, проверив наличие папки grub в корне флешки (а также нескольких файлов и папок внутри неё). Например, вот так одной командой можно зайти и в новую папку img (с учетом, что у вас установлен wget и вы не выходили из папки флешки) и скачать туда Ubuntu Desktop 16.10 (осторожно, 1 гб трафика, да и скачивать ISO сразу на флешку не всегда такая уж и хорошая идея):
cd img && wget http://mirror.yandex.ru/ubuntu-releases/16.10/ubuntu-16.10-desktop-amd64.iso
Теперь о грустном :) На данный момент из фейлов, следующее:
Не все дистрибутивы умеют загружаться таким образом. Лидер загрузки в этой сфере - Ubuntu и debian-подобные дистрибутивы, но некоторые другие тоже загружаются. Основная фишка в том, что дистрибутив должен содержать в своём образе loopback.cfg файл, который поможет GRUB понять, "где что находится". Поэтому, если вы разработчик или мейнтейнер дистрибутива - очень призываю вас озаботиться этим вопросом и добавить файл loopback.cfg: вот здесь для вас информация как это сделать (это займет всего +2 кб в вашем дистрибутиве), подарив пользователям grub2 такую чудесную возможность упрощенной загрузки. Так же, адаптацию для загрузки других дистрибутивов вы можете сделать через файл isodetect.cfg, который имеется в github-репозитории, что вы скачали себе на ПК.
Какие именно дистрибутивы точно работают?
На любые вопросы готов с радостью ответить в комментариях!
Надеюсь этот мини-howto урок вам был полезен и вы проголосуете за данную статью. Если это так, обещаю писать ещё на подобные темы =) Например, о своём проекте по созданию дистрибутива Linux для быстрого и удобного проведения презентаций или другом мини-проекте по продаже качественных и недорогих флешек с уже предзаписанным бОльшим количеством дистрибутивов в комплекте с обучающим руководством по первому старту и освоению мира свободного программного обеспечения.
Спасибо,
С уважением
Линуксоид Ден Иванов aka sxiii