gosha20777

Ubuntu здорового человека

November 07, 2021 | 7 Minute Read

Недавно я задался вопросом: возможно ли собрать маленький дистрибутив Ubuntu в котором не будет ничего лишнего. В этой статье я попробую поделиться собственным опытом. Любителей минимальзма прошу под кат.

Предыстория

На создание дистрибутива Ubuntu from scratch меня натолкнул релиз недавней Ubuntu 21.10. Я сразу же обновился на новую версию после ее выхода и мне она не понравилась по следующим причинам:

  • Snap, snap и еще раз snap! Многие системные приложения поставляются в формате snap пакетов, а я не являюсь фанатом такого формата поставки ПО.
    • Во первых, такое ПО медленнее запускается. Не очень приятно запустить Firefox и ждать 10 секунд пока запустится браузер.
    • Во вторых snap пакеты не подтягивают стили основной системы. Это значит что если вы примените к интерфейсу свою тему оформления то она применится ко всем частям системы кроме snap приложений. Это бъет по моему перфекционизму.
    • В третьих, snap пакеты занимают больше места по сравнению с deb пакетами.
  • Плохо настроенный GNOME. В этом релизе Ubuntu наконец-то перешла на GNOME 4.0 но ее стандартные расширения и надстройки (док панель и пр) выглядят инородно и честно говоря мне нравится ванильный GNOME с минимальным набором расширений.
  • Множество дополнительного софта. Хотелось получить более легкую и не перегруженную систему.

Проницательный читатель наверное спросит меня: хорошо, ты фанат gnome - выбери Fedora там есть все что тебе нужно. Я пользовался Fedora одно время и в целом мне очень понравился этот дистрибутив. Но я столкнулся с рядом трудностей:

  • Во первых - RPM. В своей жизни я часто собираю Deb пакеты и делать это на Debian based дистрибутивах удобнее.
  • Во вторых у Fedora (как оказалось) нет поддержки nvidia-docker, а это очень важно для меня. (с помощью танцев с бубном я все таки смог его завезти но работал он со скрипом)
  • В третьих в ней отказался работать open-connect-vpn. Наверное дело в системном сертификате и вероятно проблема решилась бы если я скопировал этот сертификат из ubuntu, но мне стало лень разбираться.
  • В четвертых для Fedora не оказалось поддержки компилятора для Coral Edge TPU
Fedora

Но Fedora мне очень понравилась внешне, я проникся философией Pure Gnome и по этому решил превратить Ubuntu в Gnome OS :-)

Установка

Так как я задался целью сделать минимальный дистрибутив - за основу была взята Ubuntu Server 21.10 притом минимальная версия. Установка серверной версии Ubuntu почти не отличается от установки обычной версии и в ней нет ничего сложного, по этому в данной статье я позволю себе опустить этот процесс.

Выбираем минималистичный вариант

Отмечу только, что в качестве файловой системы я выбрал BTRFS, так как она имеет структуру двоичного дерева, что позволяет быстро делать бекапы и snapshot-ы. Разметку диска выбрал стандартным способом:

  • 1Gb - UFI (FAT)
  • все остальное - / (BTRFS)
  • swap отсутствует (я счастливый обладатель 64Gb ОЗУ)
SSH сервер нам не нужен
как и всякие сервисы

Первичная настройка

После установки нас радостно встречает черненькая консоль со входом в систему. Что-же вводим свои данные и попадаем в терминал.

Страшная консоль.

Начинаем вводить страшные команды. Для начала неплохо было бы обновиться:

sudo apt update
sudo apt upgrade

Всего 4 репозитория! Как здорово:)

После обновления система выводит нам сообщение, где предлагает перезапустить сервисы, будто мы сервер. Но мы не сервер - игнорируем это сообщение:

И выпиливаем эту назойливую штуку:

sudo apt purge needrestart

Ubuntu такая ubuntu, что даже в серверную версию запихала свой snap (какой кошмар!). Поэтому выпиливаем и его:

sudo apt autoremove --purge snapd
sudo rm -rf /var/cache/snapd/
sudo apt-mark hold snapd

Тут последняя команда нужна чтобы ubuntu не установила snap при очередном обновлении.

Что-жe, устанавливаем графическое окружение:

sudo apt install \
    gdm3 \
    gnome-session \
    gnome-terminal \
    firefox \
    font-manager \ 
    nautilus \
    file-roller \
    gedit

Тут вы вольны выбрать что-то свое и настроить отдельные компоненты как вам угодно, в этом вся прелесть Linux! В этом же списке я предлагаю использовать графические компоненты GNOME и установить минимальный перечень жизненно необходимых программ таких как браузер файловый менеджер, архиватор и текстовый редактор. Остальное ПО мы поставим отдельно ухе из GUI сессии.

Перезагружаемся и нас встречает нативный GNOME 40.

Чего-то не хватает...

Выглядит довольно аскетично… Давайте настроим его! Открываем терминал:

sudo add-apt-repository ppa:papirus/papirus
sudo apt update
sudo apt install \
    gnome-tweaks \
    chrome-gnome-shell \
    papirus-icon-theme \
    dmz-colour-theme \
    gnome-themes-extra \ 
    fonts-cantarell \
    gnome-shell-extension-appindicator

Открываем приложение Extensions и включаем appindicator. Это расширение показывает значки skype, telegram, slack вверху в трее и позволяет удобно ими манипулировать. Это единственное расширение которое я использую.

И наконец, настраиваем внешний вид. Открываем tweaks:

В ачестве темы я предпочитаю темную adwita, темный курсор и popirus в качестве значнов.
В качестве шрифта я выбираю стандартный для GNOME cantarell и делаю его чуть крупнее
Кнопки окон и их поведение.

Читатель может заметить что я не использую такие кнопки как “развернуть \ свернуть окно”. В этом плане я поддерживаю разработчиков GNOME и считаю что они не нужны. Чтобы развернуть окно, достаточно щелкнуть по его заголовку 2 раза, или потянуть вверх. Что же касается сворачивания окна - то это тоже не нужно делать ибо вместо этого можно перейти на другой рабочий стол. Многим эта концепция может показаться странной, но если вы попробуете ей следовать то поймете, что она действительно работает и всякие док панели оказывается ненужны.

На этом настройка завершена. Мы получаем чистый не загроможденный дистрибутив Linux. Система занимает около 5 Гб места на диске и потребляет 500-600 Мб ОЗУ!

Красота!

Остается поставить на него необходимые программы и драйвера nvidia (если они нужны).

Ниже также приведу список программ которыми я пользуюсь

  • GUI
    • Evolution - почтовый клиент, календарь, органайзер, todo list в одном лице. Умеет синхронизироваться с разными аккаунтами и учетными записями.
    • Slack, Telegram, zoom - в представлении не нуждаются
    • Fosscord - OpenSource аналог discord-а. Я использую от этого проекта только клиент: он потребляет меньше ресурсов, не отличается по функционалу и интерфейсу и имеет лучшею поддержку Linux.
    • Timeshift - система бекапов
    • Visual Studio Code - текстовый редактор в котором я пишу код на Python, верстаю статьи в LaTeX и просматриваю различные файлы.
    • Rider - IDE для C#
    • KeePassXC - менеджер паролей
    • tilix - эмулятор терминала
    • steam - ну… а как же без ведьмачка :=)
    • netwirk-manager-openconnect-gnome - расширение для GNOME добавляющий поддержку openconnect (open source аналог Cisco VPN. 2 года использую полет нормальный)
    • libre office calc и writer - для просмотра Word+Excel
    • VLC - медиа проигрыватель
    • Spotify - музыка
    • Virtual Box - для виртуализации
  • CLI
    • zsh + oh-my-zsh - оболочка командной строки
    • htop - монитор процессов
    • exa - как ls только лучше
    • rg - как grep только лучше
    • bat - как cat только лучше
    • fdfind - как find только лучше
    • micro - консольный текстовый редактор (на vim так и не переехал)
    • ranger - файловый менеджер

Как видите я придерживаюсь довольно небольшого набора программ ибо я минималист. Я даже не установил магазин приложений, ибо предпочитаю устанавливать все из консоли. Магазин в случае чего можно установить. Для этого нужно ввезти в теминале sudo apt install gnome-software.

Не перестаю удивляться, на сколько Linux гибкая и удобная система. Надеюсь, что эта статья была вам полезной и вы сможете собрать свой собственный дистрибутив, которым будет приятно пользоваться!

Милота!