Найти в Дзене
Дюк Юсупов

Установка Manjaro Linux на USB-HDD

Оглавление

Идея данной статьи появилась по прочтению комментариев читателей моего цикла "Linux обычного пользователя", посвященного Linux Mint, как дистрибутиву Linux максимально ориентированного на простоту использования. Во-первых, мне не один раз сообщили, что кроме Linux Mint есть, как минимум, ещё один дистрибутив, заточенный под обычных пользователей, симпатичный, удобный, с последними версиями ПО (и с картами и девицами). А, во-вторых, был запрос от одного пользователя рассмотреть тему установки Linux на внешний SSD-диск, чтобы можно было потом подключать его к любому ПК. Тема любопытная, да и упомянутый Manjaro Linux хотелось заценить, поэтому приступим.

Установка Manjaro Linux

Сначала рассмотрим установку Manjaro на отдельный диск, подключенный по USB к ПК. У меня не оказалось под руками свободного SSD, поэтому я ограничился обычным 250 Гб жёстким диском ноутбучного формата (2,5" HDD), который был засунут в коробочку с кабелем USB и поддержкой 3-го поколения этого стандарта. Т.е. скорости при подключении к порту USB3.0 она обеспечивала вполне на уровне самого девайса и не являлась узким местом, если только не подключать к порту USB2.0.

Устанавливать операционную систему (ОС) я буду на свой тестовый "мини-ПК", собранный "из остатков", на котором сейчас уже установлен Linux Mint. Так мне будет проще сравнивать обе системы, и ситуация будет более приближенная к "боевой", ведь установка ОС на USB-HDD на ПК без других дисков и установленных ОС смотрится не так интересно. К сожалению, портов USB3.0 в этой системе нет, а плату расширения я так и не успел заказать, поэтому ограничимся 30 Мб/сек.

Подготовка к установке проходит стандартно:

  • Качаем iso-образ Manjaro Linux. Существует много редакций - я брал привычный мне Gnome, но если кому-то нравится плазма KDE или скромность XFCE - то пожалуйста.
  • Записываем образ на DVD-диск или на USB-флешку: в Windows с помощью Rufus или с помощью любого подходящего ПО в Linux (например, в Linux Mint есть предустановленная утилита, которая так и называется: "Запись образа на USB-накопитель").
  • Ну и запускаем наш ПК с этого DVD или полученной загрузочной флешки и получаем систему Manjaro, которая сразу же предлагает себя установить.

После нажатия кнопки "Запустить" начинается установка. Если нет интернета, то вы получите следующий экран:

-3

Не знаю точно, чем это грозит, но лучше подключиться к интернету, тем более что live-образ позволяет подключаться и к Wi-Fi. Поэтому подключаемся к интернету и выбираем часовой пояс:

А вот на следующем экране с настройками клавиатуры стоит остановиться:

-5

Я бы не советовал выбирать русскую раскладку, поскольку в этом случае поменять язык ввода с русского на английский у вас не получиться никаким образом. Можете это проверить в области для тестирования клавиатуры. Причём, если вы в live-режиме корректно настроите раскладки и они у вас будут переключаться в режиме установки, то уже в установленной системе вы получите то, что выставлено в экране выбора клавиатуры. И если вы выбрали русский язык, а пароль далее ввели на английском, то при запуске системы вы даже не сможете войти. Мне пришлось опять грузиться с live-образа и править файл /etc/X11/xorg.conf.d/00-keyboard.conf: в строке Option "XkbLayout", вместо "ru" вписать "us". Поэтому выбирайте лучше English (US), а русскую раскладку лучше добавить после первого запуска.

Далее нам надо будет выбрать устройство, на которое будем устанавливать Manjaro. Тут главное не перепутать :-) При выборе вариантов установки можно, конечно, выбрать и первый (заменить раздел) и второй (стереть диск), если он у нас пустой - разницы мы особой не заметим, разве что в "Стереть диск" сразу предлагают выбрать - делать раздел подкачки (swap) или нет. Но я предпочитаю разбивать диск самостоятельно, поскольку мне больше нравиться вариант с выделенным разделом /home (с пользовательскими данными) - так проще в дальнейшем осуществлять всякие переустановки и восстановления. Поэтому выбираем третий вариант: "Ручная разметка":

Далее создаём новую таблицу разделов. Дистрибутив будет советовать создать таблицу разделов типа GPT (причём Manjaro позволяет использовать её даже для систем с BIOS, без поддержки EFI), но я не вижу в этом особого смысла - я не собираюсь создавать разделы больше 2 Тб, а остальные плюсы GPT обычному пользователю вообще вряд ли пригодятся. Поэтому я буду создавать таблицу разделов с помощью MBR:

Если предполагается использовать тома больше чем 2.2 Тб, лучше брать GPT. Но и разбивка тогда должна быть чуть другая.
Если предполагается использовать тома больше чем 2.2 Тб, лучше брать GPT. Но и разбивка тогда должна быть чуть другая.

Потом добавляю загрузочный раздел /boot размером 300 Мб (можно ограничиться и 100, но пусть будет на всякий случай), корневой раздел под ОС (50 Гб хватит с запасом), 8,5 Гб раздел подкачки (для моих 4 Гб оперативной памяти этого места хватит и для подкачки и для данных гибернации) и остаток места отдам /home.

Получился такой стандартный наборчик. Поскольку нам надо сделать нашу систему перемещаемой на разные ПК, надо не забыть разместить загрузчик в главную загрузочную запись на нашем устройстве (в данном случае на /dev/sdc):

Дальше пробегаем этапы указания имени и пароля (внимательнее, товарищи! если выбрали английский - пароль пишем латиницей, выбрали русский - кириллицей), и выбора офисного пакета:

Потом убеждаемся, что всё выбрано верно:

-11

Если всё нормально, запускаем установку, если нет - возвращаемся обратно и делаем как надо. Ну и наслаждаемся процессом установки и сообщением о том, что всё готово и можно перезагрузить ПК:

После перезагрузки получаем рабочий стол:

Опять зелёные обои! Ладно, переклеим...
Опять зелёные обои! Ладно, переклеим...

Про свои впечатления от Manjaro Linux я, пожалуй, расскажу в другой статье, а сейчас перейдём к главной цели - попытке использовать установленную ОС на нескольких ПК, поскольку она у нас находится на внешнем жёстком диске и вполне транспортабельна без необходимости разбирать и собирать компьютер.

Запускаем Manjaro установленный на USB-HDD на других компьютерах

Вопрос с запуском установленной ОС на разных компьютерах, несмотря на свою кажущуюся простоту (ну есть же live-образы, которые загружаются практически на любом "железе"), отнюдь не такой тривиальный. Установленная ОС всё-таки неким образом настроена на определённый набор оборудования и может просто не подцепить чего-то специфического "на лету". Даже Linux, у которого в ядро, как правило, встроены все основные драйвера. Но, например, видеокарты используют свои, отдельные от уровня ядра, драйвера и невозможно так просто установить на один ПК даже разные версии драйвера для одного производителя (не говоря уже о разных). Опять же на разных ПК может присутствовать разные наборы системной логики, использоваться разные процессоры (от Intel или от AMD), может быть разный размер и тип оперативной памяти...

У меня был подобный опыт с Windows, когда просто так взять и переставить "винчестер" в другой ПК и загрузиться, было возможно только при определённых условиях совпадения параметров процессора и логики материнской платы. Иногда можно было "подсунуть" драйвер, которого не хватает (например, Windows был установлен для использования процессора с одним потоком исполнения и второй поток не просто не работал), а иногда даже загрузиться было невозможно - была либо цикличная перезагрузка, либо "синий экран" и непонятно было, что не так.

Я бы не стал утверждать, что и любой установленный Linux можно спокойно перетаскивать между разными ПК без каких-либо проблем: в любом случае потребуется произвести какие-то предварительные настройки. А уж если ставить задачей не просто перенести Linux и использовать его на другом ПК, а использовать одну и ту же установку на разных ПК, постоянно перемещая её между компьютерами - то это уже задача посложнее. Посмотрим, как с ней справится Manjaro и что для этого нам потребуется.

Тестовым стендом у меня, во-первых, будет ПК на основе AMD Ryzen 2600, собранный в конце 2019 года. Это достаточно новый и мощный компьютер. А, во-вторых, ноутбук HP G62, который у меня уже лет 10. Несмотря на все апгрейды "железа" (смена процессора с Core i3 на Core i5, увеличение оперативной памяти до 6 Гб и переход на SSD), это всё равно давно уже устаревшее устройство, годное только в качестве "печатной машинки". В итоге, у меня получается достаточно неплохая выборка - новый комп на AMD и древний ноут на Intel.

При первой попытке запустить на ПК с USB-HDD установленный на него Manjaro, загрузчик (GRUB) открылся, но при дальнейшей попытке запустить ОС я получил ошибку:

Упс...
Упс...

На ноутбуке тоже самое - запустил чисто для проформы. Поскольку ошибка происходит именно в момент старта с загрузочного раздела самого Linux'а, стало понятно, что проблема не в GRUB (он как раз таки загружается и пытается выполнить старт системы), а в том, что какое-то устройство, которое добавляет поддержку USB-HDD для данного ПК, на стадии загрузки initramfs (initial ram file system) не определяется, и наши разделы, несмотря на их уникальные имена, не определяются в принципе - их просто нет для initramfs, как и самого внешнего диска.

Проверяем гипотезу: перезагружаемся, выбираем Advanced options и строку с fallback initramfs, которая даст нам то, что будет запущена максимально полная сборка initramfs со всеми модулями. Ну и вуаля! Диск нашёлся, разделы подцепились и ОС загрузилась.

Что же делать? В принципе, можно использовать и такой вариант: то есть стартовать с опцией fallback. Единственное, что неудобно каждый раз вручную выбирать нужный пункт, поэтому можно настроить GRUB, чтобы он для записи запуска Manjaro по умолчанию выбирал уже имеющийся файл fallback image. Т.е. вместо, например, /boot/initramfs-5.6-x86_64.img вызывать /boot/initramfs-5.6-x86_64-fallback.img. Для этого достаточно откорректировать один файл настройки: /boot/grub/grub.cfg:

/boot/grub/grub.cfg
/boot/grub/grub.cfg

Если у кого-то стойкая идиосинкразия к терминалу и изменению конфигурационных файлов руками, то это можно сделать с помощью GUI - есть программа GRUB Customizer:

Есть и второй вариант, более сложный, но идеологически более правильный. Можно собрать образ initramfs специально для наших нужд. Для создания файла initramfs используется программа mkinitcpio. Настройки для неё находятся в файле /etc/mkinitcpio.conf, а файлы для сборки (.preset) в папке /etc/mkinitcpio.d. Чтобы получить что нам нужно, выполняем следующие действия:

Вносим изменения в файл настроек /etc/mkinitcpio.conf. В этом файле нас интересует только переменная HOOKS, которая и отвечает за модули и скрипты добавляемые в initramfs. В нашем случае эта переменная оказалась следующей: HOOKS="base udev autodetect modconf block keyboard keymap resume filesystems" и вся проблема в значении autodetect, которое и вырезало все ненужные, с точки зрения ОС, модули. Поэтому превращаем эту переменную в следующий вид: HOOKS="base udev keyboard keymap block resume filesystems". Подробности можно посмотреть тут.

HOOKS без autodetect
HOOKS без autodetect

Ну и обновляем образ initramfs с помощью команды: sudo mkinitcpio -p linux56 (где linux56, это текущий пресет в папке /etc/mkinitcpio.d).

Собираем новый образ initramfs (без autodetect)
Собираем новый образ initramfs (без autodetect)

После этого даже настройку GRUB проводить не нужно, поскольку старый initramfs перезаписался новым образом (без autodetect, по сути тот же fallback).

Получилось красиво, но по сравнению со вторым способом мы особо ничего не выиграли: initramfs-fallback занимает 30 Мб, а наш 29 Мб, так что сэкономить не получилось (а ведь изначально initrams.img весил всего 9 Мб).

В общем, теперь наша ОС Manjaro Linux грузится на всём, что поддерживает загрузку с USB. Ну или, по крайней мере, на обоих моих тестовых стендах:

Сеть цепляется и проводная и Wi-Fi, аудио тоже, и видео работает: по-умолчанию установлен открытый драйвер и он работает на всех устройствах. В Manjaro поменять видеодрайвер можно в "Менеджер настроек Manjaro" и вот так это выглядит для ПК, ноутбука и мини-ПК:

В мини-ПК тоже установлена видеокарта от Nvidia, но она старая, поэтому поддерживается только драйвер video-nvidia-340xx.

Steam в Manjaro уже предустановлен, и поэтому на ПК я просто подмонтировал тот диск, на который у меня устанавливаются все игры в Steam под Windows, и проверил работоспособность и скорость работы Team Fortress 2. Что и следовало ожидать - играть под свободным драйвером практически невозможно - не то что потери кадров, местами просто тормоза. После установки проприетарного драйвера video-nvidia-440xx ситуация нормализовалась и восприятие ничем не отличалось от игры под Windows.

Зато с драйвером video-nvidia-440xx не загружался мини-ПК и, чтобы одновременно использовать два компьютера, надо было устанавливать драйвер video-nvidia-340xx. Но в этом случае невозможно было загрузить Manjaro на ноутбуке, поскольку там используется встроенная графика Intel (плюс отдельный графический адаптер ATi Radeon). В общем, итог понятен - установить проприетерный драйвер возможно, но только в том случае, если все устройства, на которых предполагается запускать ОС с USB-HDD, обладают схожими по производителю и архитектуре графическими картами.

Других устройств с проприетарными драйверами я лично не использовал, поэтому про них добавить ничего не смогу. Но думаю, что если установить драйвера принтера, то они не помешают использовать ОС на другом ПК. Да и проприетерные драйвера аудиокарт или сетевых карт тоже вряд ли приведут к невозможности загрузки ОС на том ПК, где этих устройств нет, но поскольку лично проверить не могу, поэтому это только моё оценочное суждение.

P.S. Если понравилось - ставьте палец вверх, ну а не понравилось - ставьте палец вниз и пишите в комментарии, что именно. Если возникнут вопросы - тоже пишите в комментарии, обязательно постараюсь ответить. Ну и подписывайтесь, если эта тема вам интересна. Чем больше вы проявляете активность - тем больше людей сможете увидеть эту статью!