Почти год тому назад я осуществил последнюю попытку сборки Gentoo на своем рабочем компьютере. Да, действительно, инструкция мне тогда попалась ужасно корявая, написанная таким образом, что в раздел /boot не влезает даже дистрибутив Grub. На сегодняшний день инструкция, к счастью, больше не находится в поиске, так что за новое поколение гентушников теперь можно не переживать. Я же решил все сделать без какой-либо инструкции, пользуясь при этом исключительно советами из официального Wiki.
Как вы можете видеть на скриншоте выше, у меня это вполне успешно получилось. Стоит отметить, что с момента прошлой попытки у меня практически полностью изменился компьютер. Теперь вместо двух ядер процессора в моем распоряжении есть четыре. Примерно также, вдвое, увеличилось и количество оперативной памяти, неизменной осталась только видеокарта, которая, впрочем, меня вполне устраивает. В этот раз, учитывая улучшение аппаратной базы, я решил пойти немного более хитрым путем и установить Gentoo на виртуальную машину, после чего перенести ее методом Stage 4 на рабочую машину. Плюсов у такого способа много: во-первых, для просмотра инструкции не нужно иметь второго компьютера или же держать под рукой планшет (за мобильный телефон не говорю: там мне некомфортно даже краткие ошибки искать); во-вторых, виртуальную машину не нужно отключать, достаточно просто «заморозить» ее и запустить тогда, когда это будет удобно — очень круто, так как прежде мне приходилось оставлять компьютер включенным на ночь; в третьих, VirtualBox позволяет пробросить на виртуальную машину практически все устройства, благодаря чему установить драйвера к ним и проверить их на работоспособность можно прямо из виртуальной среды. Сборка системы заняла у меня трое суток по времени виртуальной машины и около недели реального времени, из которого компьютер был включен по 7-10 часов в сутки. Несмотря на то, что виртуальной машине я выделил 4Гб оперативной памяти и 3 ядра процессора, сборка пакетов и компиляция ядра происходила намного медленнее, чем на физической машине. Это тоже стоит учитывать при просчете времени установки, так как на физической машине трое суток с такой скоростью сборки пакетов не понадобилось бы.
Должен сказать, что система портов в Gentoo — это просто нечто! Такой гибкой системы я не встречал, честно говоря, никогда прежде. Для примера назову плеер VLC. У плеера есть рекомендованные параметры USE, но их можно модифицировать. К примеру, если вам не нужна поддержка mkv, просто добавьте в локальные параметры USE флаг «-matroska». Не хотите иметь графического интерфейса, а хотите управлять плеером исключительно из консоли? «-qt4»! Флаги бывают как локальные, так и глобальные. К примеру, можно добавить «png» в make.conf и получить поддержку png во всех установленных пакетах, где это доступно. Можно добавить этот флаг к какому-то конкретному пакету и тогда с поддержкой png будет пересобран только он, а все остальные так и останутся без png. Очень крутая вещь, которая в полной мере оправдывает свое время обработки. Нет, конечно же, нельзя сказать о том, что любой пакет будет собираться полдня. Существуют пакеты, которые устанавливаются молниеносно, поскольку не требуют процесса сборки как такового (наборы иконок, например, или темы для экрана начальной загрузки; библиотеки), но есть и пакеты, которые будут занимать 60% времени (так у меня большую часть времени первичной установки забрали пакеты mesa и colord). Некоторые пакеты компилируются ужасно долго, поэтому их наиболее оптимально устанавливать в бинарном виде. LibreOffice, к примеру, совершенно нелогично собирать каждый раз из исходного кода, вместо этого можно установить «libreoffice-bin» и начать пользоваться уже через пять-семь минут. То же самое и с веб-браузерами, из которых, пожалуй, наиболее примечательным является Google Chrome, который в Gentoo «из коробки» поддерживает все необходимые для комфортной работы плагины, которые для Chromium еще нужно установить дополнительно. Google Chrome не поставляется в виде исходного кода, поэтому установка происходит очень быстро. Очень много проблем, кстати, связано с его установкой. Устанавливается, к примеру, конкретная версия, после чего она больше не обновляется до тех пор, пока не будет устранена блокирующая обновление запись в package.mask. Новые версии Google Chrome выходят достаточно часто, благодаря чему скрипт ebuild для этого браузера имеет ограниченный срок жизни, по прошествии которого emerge google-chrome возвратит только ошибку 404 при попытке получения deb-пакета из официального репозитория Google. Эта проблема решается emerge —sync’ом, который имеет смысл запускать сразу перед попыткой установки/обновления браузера.
Очень скоро моему взору открылась основная проблема сборки системы на виртуальной машине. Предвидя проблемы с видеокартой, я сразу собирал драйвера как для vboxvideo, так и nouveau. После установки Stage 4 мне эта уловка не помогла: nouveau в упор не хотел ничего делать с моей видеокартой, вместо этого сообщая о том, что для вывода картинки нет дисплея. Установка фирменного драйвера nvidia вогнала меня еще дальше в лес: драйвер успешно подхватился, но картина не изменилась — дисплея для отображения нет. Только потом я додумался посмотреть, что же такое выбрасывает драйвер при запуске systemd. Оказалось, что последняя версия драйвера nvidia больше не поддерживает мою видеокарту, а для ее поддержки мне нужен архивный драйвер, который можно установить, добавив нужную версию в package.mask. После этого меня снова встретил при запуске системы Gnome 3, а не мигающее консольное приглашение к авторизации.
О systemd у меня отдельная история. Почитал я комментарии бывалых и сделал вывод — systemd — какашка, только OpenRC. OpenRC — штука тоже неплохая, через нее нормально работает драйвер видео, без проблем запускается Gnome через startx, однако отказываются работать gdm и Google Chrome (последнее решается добавлением параметра, разрешающего запуск за пределами «песочницы», но это не совсем безопасно). При запуске через OpenRC gdm покажет только пустое окно авторизации без фона и списка пользователей, а все открываемые меню так и прилипнут к отсутствующему фону (помните окна, которые оставляли след при перетаскивании в Windows 98?), с systemd же все работает без проблем, чему я очень рад. Шаманства с EDID монитора меньше, чем в Mageia — просто добавляешь EDID в xorg.conf и устанавливаешь разрешение экрана через настройки — после перезагрузки и окно приветствия работает как надо, и разрешение не вылетает. Никаких извращений с monitors.xml.
Настоящее приключение произошло у меня с принтерами. Так уж случилось, что у меня их два, один из которых как принтер используется крайне редко из-за дороговизны краски и в 99% случаев работает исключительно как сканер, второй же — вообще не МФУ. С HP (МФУ) легче: установил hplip, добавил в USE «scanner» и параметр для sane, и радуйся жизни. С Epson’ом же совсем другое дело: для него в портах нет драйвера, а производитель предлагает только deb и rpm, которые при установке в Gentoo обеспечивают только распознание, но не печать. Впрочем, путем комбинирования rpm-драйвера и исходным кодом мне все-таки удалось заставить принтер нормально печатать, чему я был просто-таки безгранично рад, так как бумажной волокиты через меня проходят неимоверные объемы и остановка принтера на один день означает то, что на следующий он будет работать в режиме типографии.
Да уж, пришлось немного повозиться и со звуком, но это уже не проблема Gentoo, а проблема моей дефектной hda-intel, в которой Jack Detection работает в каком-то неимоверном режиме, при котором наушники на передней панели системного блока работают только в случае, если что-то воткнуто в основное гнездо аудио на задней панели. Самое интересное, что таких проблем нет с микрофоном, для которого также предусмотрено два гнезда. В Mageia были доступны все аудиовыходы независимо от того, подключены к ним устройства или нет; Gentoo же выводит только те входы и выходы, в которых что-то есть. Я и auto-mute отключил, и распознание подключения в pulse/default.pa, и поддержку Jack Detection в принципе при помощи ядра. Ничего не дало результатов. Ничего, кроме штекера от старых наушников, который я отрезал и вставил в основное гнездо, которые нынче ни для чего не использую. Удивительно, но все сработало! Есть только один нюанс: если запустить компьютер без подключенных к передней панели наушников, а потом подключить их уже когда система запустится, нужно будет снова выбирать аудиовыход в настройках. Такие дела.
В целом — я неимоверно доволен. Доволен тем, что исполнил свою давнюю мечту, которая преследовала меня со второго года работы на Linux. Доволен тем, что за год существенно прокачал свои навыки, и если год тому назад меня остановила неправильная инструкция по разметке диска, то сегодня меня уже не остановили ни проблемы с драйверами, ни отсутствие драйвера к необходимому для работы устройству, ни сложности со звуком, ни длительность процесса. Теперь я еще больше уверен в том, что сложного в Linux нет, есть только то, к чему ты пока еще не готов и не имеешь необходимых навыков. Навыки эти, кстати, не помешаю даже в том случае, если Gentoo ты устанавливаешь в первый и последний раз в жизни — многие приемы идентичны для разных дистрибутивов, поэтому они наверняка когда-нибудь пригодятся. Метод Stage 4, например, годится для резервного копирования любого другого дистрибутива.