Udisks2 service линукс что это

Обновлено: 05.07.2024

Если у меня есть зашифрованный внешний диск (или внутренний диск, который не находится в fstab), я вижу запись для него в Nautilus - с записью типа «X GB Encrypted Volume». Я могу нажать на этот том, и мне будет предложено ввести пароль для расшифровки и подключения устройства.

Но как мне это сделать из командной строки?

Эта вики-страница и другие документы, которые я могу найти, относятся только к GUI-методам дешифрования устройства; но это не будет сделано в контексте безголовых серверов или SSH-логинов. Есть ли простой способ заставить устройства монтироваться в автоматические места так /media же, как это было бы с графическим интерфейсом?

(Я не спрашиваю о зашифрованных домашних каталогах - я в курсе ecryptfs-mount-private . Этот вопрос касается дополнительных зашифрованных томов.)

+1 за различие между шифрованием файловых систем в целом и зашифрованными домашними каталогами

Шаги в ответе @Georg Schölly не работали в то время, хотя они могли бы сработать и сейчас, через несколько выпусков Ubuntu после. Тогда, после sudo mount /dev/mapper/my_encrypted_volume /media/my_device шага, я получил ошибку:

mount: неизвестный тип файловой системы 'LVM2_member'

Разблокировка и монтирование диска с помощью udiskctl

Вместо этого я использовал udisksctl интерфейс командной строки, который взаимодействует со udisksd службой.

Вот что сработало ( /dev/sdb5 раздел на моем жестком диске помечен как crypt-luks ):

Оттуда я мог получить доступ к данным :)

Блокировка диска с помощью udiskctl

Тогда вы сможете заблокировать зашифрованный раздел

Примечания

Имена устройств отображения : ubuntu--vg-root имена могут меняться в разных выпусках Ubuntu (например, я видел, как он вызывался system-root и ubuntu-root тоже). Простой способ узнать имя - запустить следующую команду после разблокировки раздела LUKS :

ls -la /dev/mapper

Затем, посмотрев на вывод ls команды, вам обычно нужно имя, которое символически связано с /dev/dm-1

Имена устройств отображения, альтернатива : альтернативой предыдущей команде является запуск:

Там вы сможете увидеть отображение имени устройства в виде дерева. Эта -e 7 опция используется для исключения петлевых устройств (ID 7), созданных установленными привязками, из вывода. Просто чтобы меньше было беспорядка.

Я думаю, что это лучший ответ, потому что я подозреваю, что это более или менее то, что nautilus делает с помощью libudisks2. Кроме того, я проверил это, чтобы работать как непривилегированный пользователь. Я, к сожалению, получить ошибку Object /org/freedesktop/UDisks2/block_devices/dm_2d3 is not a mountable filesystem. любой совет? Забегая вперед на 5 лет, мне снова пришлось спасать зашифрованный раздел. Я использовал USB-флешку с Ubuntu 18.04 и следовал тем же шагам, которые я описал тогда. Как и прежде, они работали хорошо, и мне не нужно sudo было их выполнять. @ Селах, я расширил ответ, чтобы лучше объяснить, какой путь устройства использовать для монтирования. To mwfearnley: возможно, стоит взглянуть на разрешения пользователя, под которым вы вошли.

Ваш том, вероятно, зашифрован с помощью LUKS, вот как его смонтировать:

Чтобы расшифровать том:

Теперь вы можете установить его как обычно:

Чтобы снова заблокировать контейнер, его нужно сначала размонтировать:

Чтобы автоматически поместить его в /media локацию, используйте инструмент udisks

Так что я не могу сделать это как непривилегированный пользователь, хотя я мог бы через графический интерфейс? Это на самом деле зависит от настроек вашей системы. Я считаю, что большинство команд должно работать, пока ваша система предоставляет пользователю доступ к устройствам. Ubuntu 15.04 поставляет udisks2 пакет вместо udisks , а первый переименовывает инструмент udisksctl . к сожалению, у меня не работает Ubuntu 16.04. mount: неизвестный тип файловой системы 'LVM2_member'

Если вы получили эту ошибку:

затем активируйте все LVM, которые вы видите

затем снова запустите монтирование:

Последняя строка не обязательно правильная, так как вы все равно можете получить ту же ошибку. Скорее, смонтировать один из дисков, перечисленных с lvscan вместо /dev/mapper/my_encrypted_volume Это не сработало для меня. Та же ошибка монтирования: неизвестный тип файловой системы 'LVM2_member'. Возможно, потому что я загружаюсь с флешки? @SeanScott большое спасибо . Я использовал установщик для шифрования своего диска, сейчас я пытаюсь восстановить данные и должен заново изучить эти вещи . d'oh

Одной из проблем, с которой я столкнулся, были дублированные группы томов : и моя система восстановления, и диск, который нужно восстановить, были системами Ubuntu с LVM. Вот почему у меня было две ubuntu-vg группы томов ( vgdisplay отображались обе, каждая со своим UUID, но я не мог добраться до их логических томов).

Мое решение основано на ответе Георга:

  • Загрузитесь с live-linux (чтобы вы не столкнулись с повторяющимся именем группы томов)
  • sudo cryptsetup luksOpen /dev/sdaX my_encrypted_volume
  • введите пароль при появлении запроса

sudo vgscan Теперь следует подобрать содержащиеся тома / группы.

используйте sudo vgrename ubuntu-vg ubuntu-vg2 для переименования группы томов.

Если вам нужно загрузиться с этого диска, вы можете сделать эти шаги снова, но переименуйте вашу группу томов обратно в ubuntu-vg. Другая возможность - изменить конфигурацию загрузки на новое имя vg.

Теперь, когда имя дубликата В. решено, я могу загрузиться обратно в мою обычную систему, переделывать cryptsetup. , vgscan а затем смонтировать в /dev/mapper/ubuntu--vg2-root любом месте вы хотите.

Похоже, вы также sudo vgdispay можете найти UUID и использовать его вместо дублирующего имени, чтобы переименовать только один том. То есть захват UUID и последующее выполнение sudo vgrename <uuid> old работали на меня. Я не могу проверить предложение Майка прямо сейчас, но если оно работает, это лучше, чем переименование группы томов!

Вот пример sdb1, вы должны ввести имя вашего устройства, ни одна из этих команд не потребует прав root

разблокировать зашифрованный диск

после вставки правильной парольной фразы она выдаст что-то вроде этого: Unlocked / dev / sdb1 как / dev / dm-3

затем подключите его к / media /

он должен вывести что-то вроде этого: Монтируется / dev / dm-3 в / media / yourUserName / sdb

diskctl mount -b / dev / dm-4 Объект / org / freedesktop / UDisks2 / block_devices / dm_2d4 не является монтируемой файловой системой. Извините, вы решили эту проблему? (с не монтируемым FS . как я получаю то же самое)

Все ответы выше предполагали, что пользователь уже знает, какой раздел является зашифрованным. Исходя из того, кому не очень нравится командная строка, я ожидал какого-то удобного для пользователя ответа . Итак, мои 2cents здесь.

  1. Откройте приложение «Диски» в Ubuntu.
  2. Найдите ваш смонтированный жесткий диск в левой панели.
  3. Нажмите на раздел с именем «LUKS»: таким образом, вы можете увидеть его точку монтирования в тексте «Device» ниже (в моем случае:) /dev/sdb4 .

Затем я попытался смонтировать его, как указано выше:

Но получил эту ошибку:

Ага! Так и есть /dev/dm-3 .

Однако при попытке смонтировать его не получается:

Если вы запустите, ls -la /dev/mapper/ вы должны увидеть luks-xxxxxx-xxxxx-xxxx или какой-то такой файл. Это отображение, которое было создано, когда Ubuntu запросил пароль шифрования с диалоговым окном, но не смог его открыть (все, что он сделал, - это позвонил luksOpen и сопоставил его с этим файлом / dev / mapper / luks-xxx). В настоящее время:

служба D-Bus для доступа и управления устройствами хранения

Служба udisks предоставляет интерфейс к блочным устройствам системы, реализованный через D-Bus. Она обрабатывает запросы на монтирование, размонтирование, форматирование или извлечение накопителей, таких как жёсткие диски или USB-флеш.

Кроме того, пакет предоставляет утилиту udisksctl, которая может использоваться для выполнения указанных операций из командной строки (если это разрешено PolicyKit).

Для создания или изменения таких файловых систем как XFS, RAID или зашифрованных LUKS требуются соответствующие утилиты mkfs.* и инструменты администрирования, такие как dosfstools для VFAT, xfsprogs для XFS или cryptsetup для LUKS.

Другие пакеты, относящиеся к udisks2

  • зависимости
  • рекомендации
  • предложения
  • enhances
  • dep: dbus simple interprocess messaging system (system message bus)
  • dep: libacl1 (>= 2.2.23) библиотека для работы со списками доступа
  • dep: libatasmart4 (>= 0.13) библиотека для чтения и грамматического разбора ATA S.M.A.R.T.
  • dep: libblockdev-fs2 file system plugin for libblockdev
  • dep: libblockdev-loop2 Loop device plugin for libblockdev
  • dep: libblockdev-part2 Partitioning plugin for libblockdev
  • dep: libblockdev-swap2 Swap plugin for libblockdev
  • dep: libblockdev-utils2 (>= 2.24) Utility functions for libblockdev
  • dep: libblockdev2 (>= 2.25) Library for manipulating block devices
  • dep: libc6 (>= 2.14) [amd64] библиотека GNU C: динамически подключаемые библиотеки
    также виртуальный пакет, предоставляемый libc6-udeb dep: libc6 (>= 2.16) [x32] dep: libc6 (>= 2.17) [arm64] dep: libc6 (>= 2.22) [ppc64, ppc64el] dep: libc6 (>= 2.27) [riscv64] dep: libc6 (>= 2.32) [sh4] dep: libc6 (>= 2.7) [armel, armhf, hppa, i386, m68k, mips64el, mipsel, s390x, sparc64]
  • dep: libc6.1 (>= 2.32) [ia64] библиотека GNU C: динамически подключаемые библиотеки
    также виртуальный пакет, предоставляемый libc6.1-udeb dep: libc6.1 (>= 2.7) [alpha]
  • dep: libglib2.0-0 (>= 2.50) библиотека С-функций
  • dep: libgudev-1.0-0 (>= 165) библиотека-обёртка для libudev на основе GObject
  • dep: libmount1 (>= 2.30) библиотека для монтирования устройств
  • dep: libpolkit-agent-1-0 (>= 0.102) API агента аутентификации PolicyKit
  • dep: libpolkit-gobject-1-0 (>= 0.102) инфраструктура авторизации PolicyKit
  • dep: libsystemd0 (>= 209) библиотека утилит systemd
  • dep: libudisks2-0 (>= 2.9.0) библиотека на основе GObject для доступа к udisks2
  • dep: libuuid1 (>= 2.16) библиотека поддержки универсальных уникальных идентификаторов
  • dep: parted изменение дисковых разделов
  • dep: udev служба управления устройствами в /dev/
  • rec: dosfstools utilities for making and checking MS-DOS FAT filesystems
  • rec: e2fsprogs утилиты для файловых систем ext2/ext3/ext4
  • rec: eject ejects CDs and operates CD-Changers under Linux
  • rec: exfatprogs tools to create, check and label exFAT filesystems
  • rec: libblockdev-crypto2 Crypto plugin for libblockdev
  • rec: libpam-systemd менеджер системы и служб — модуль PAM
  • rec: ntfs-3g драйвер NTFS с поддержкой чтения и записи для FUSE
  • rec: policykit-1 инфраструктура управления полномочиями
  • sug: btrfs-progs Checksumming Copy on Write Filesystem utilities
  • sug: f2fs-tools Tools for Flash-Friendly File System
  • sug: libblockdev-mdraid2 MD RAID plugin for libblockdev
  • sug: mdadm Tool to administer Linux MD arrays (software RAID)
  • sug: nilfs-tools файловая система с журнальной структурой и непрерывными снимками
  • sug: reiserfsprogs набор утилит для работы с файловой системой ReiserFS
  • sug: udftools tools for UDF filesystems and DVD/CD-R(W) drives
  • sug: udisks2-bcache bcache support for udisks2
  • sug: udisks2-btrfs BTRFS support for udisks2
  • sug: udisks2-lvm2 LVM2 support for udisks2
  • sug: udisks2-zram zram support for udisks2
  • sug: xfsprogs Utilities for managing the XFS filesystem

Загрузка udisks2

Загрузить для всех доступных архитектур
Архитектура Размер пакета В установленном виде Файлы
alpha (неофициальный перенос) 399,5 Кб2 677,0 Кб [список файлов]
amd64 400,9 Кб2 544,0 Кб [список файлов]
arm64 384,5 Кб2 536,0 Кб [список файлов]
armel 373,4 Кб2 453,0 Кб [список файлов]
armhf 379,4 Кб2 357,0 Кб [список файлов]
hppa (неофициальный перенос) 397,4 Кб2 589,0 Кб [список файлов]
i386 419,7 Кб2 621,0 Кб [список файлов]
ia64 (неофициальный перенос) 427,9 Кб3 020,0 Кб [список файлов]
m68k (неофициальный перенос) 392,0 Кб2 529,0 Кб [список файлов]
mips64el 369,9 Кб2 584,0 Кб [список файлов]
mipsel 375,3 Кб2 582,0 Кб [список файлов]
ppc64 (неофициальный перенос) 408,8 Кб2 900,0 Кб [список файлов]
ppc64el 407,7 Кб2 772,0 Кб [список файлов]
riscv64 (неофициальный перенос) 376,5 Кб2 417,0 Кб [список файлов]
s390x 383,2 Кб2 568,0 Кб [список файлов]
sh4 (неофициальный перенос) 414,6 Кб2 470,0 Кб [список файлов]
sparc64 (неофициальный перенос) 368,7 Кб2 533,0 Кб [список файлов]
x32 (неофициальный перенос) 401,6 Кб2 505,0 Кб [список файлов]

Эта страница также доступна на следующих языках (Как установить язык по умолчанию):

Авторские права © 1997 - 2021 SPI Inc.; См. условия лицензии. Debian это торговый знак компании SPI Inc. Об этом сайте.

sovremennoe montirovanie diskov v Linux s udisks2

В Linux-системах, контролируемых Udev (либо Systemd), udisks остался в качестве инструмента совместимости, поэтому стандартные команды монтирования ( mount ) работают. Однако автомонтирование дисков, ровно как и системные службы Linux, «переписаны» под udisks2, а управление этой оснасткой осуществляется через консоль udisksctl.

Таким образом, для того, чтобы получить справку по основным командам управления дисками через udisks2, следует открыть терминал и ввести команду:

Из справочной информации видно, что получить команды для параметров монтирования дисков в Linux можно, введя нижеприведенную команду.

sudo mount --help

Собственно, для того, чтобы смонтировать нужный диск, нужно выполнить:

sudo udisksctl mount -b /dev/sdXY

Отмонтировать раздел можно, выполнив в терминале:

sudo udisksctl unmount -b /dev/sdXY

Обратите внимание, что в команде присутствует буква «n», что может показаться несколько непривычным для пользователей с опытом, которые с классической версией udisks привыкли писать «umount».

Вышеперечисленные команды udisksctl запоминаются в системе, в отличие от таковых при работе с, например, bluetoothctl, что является несомненным плюсом.

Подводя итог, можно сказать, что новый udisks2 несомненно лучше предыдущего в плане юзабилити, однако многим «бывалым» пользователям Linux понадобится время для привыкания к современному подходу управления дисками.

Как включить в Linux дополнительные разделы Windows

Итак, подключая диск при помощи команды mount или программными средствами (например, через Thunar), вы видите следующее:

kak razreshit problemu v srede Linux Metadata kept in Windows cache, refused to mount

Использование прав суперпользователя не дает никакого эффекта — диски не подключаются.

kak vkluchit v Linux dopolnitelnie razdeli Windows (chast 2)

Тотальная миграция всех Linux-дистрибутивов на systemd ведет к снижению влияния других служб Linux на ее функционирование, в частности некогда обязательная служба rc.local может быть отключена по умолчанию (и, скорее всего, будет, так как ее активно выводят из использования). В таких случаях описанные мною ранее действия нужно дополнить несколькими махинациями, которые вернут службе rc.local статус системной и активированной.

Активировать rc.local

Это делается следующим образом:

  • Создаем в терминале файл «/etc /systemd/system/rc-local.service» ( sudo leafpad /etc /systemd/system/rc-local.service ) с указанным ниже содержимым.*

[Unit]
Description=/etc /rc.local Compatibility
ConditionPathExists=/etc /rc.local

[Service]
Type=forking
ExecStart=/etc /rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

    Даем только что созданной службе «rc-local.service» исполнительные права.

sudo chmod a+X /etc /systemd/system/rc-local.service

sudo systemctl enable rc-local.service

После вышеописанных действий rc.local должен работать, и после перезагрузки вы должны получить смонтированные разделы (если в этом файле, конечно, у вас прописаны команды для монтирования, потому как настройка автозапуска через rc.local производится для многих вещей, например, для подъема сети). Проверить работу новой службы Linux можно и до перезагрузки, выполнив в терминале:

sudo systemctl start rc-local.service

Очистить дисковый кэш
Монтировать раздел
  • Далее нужно создать папку в /media, куда будем монтировать этот раздел. В терминале:
  • Для того, чтобы нужные диски монтировались при старте системы, следует подключить стартовый скрипт /etc /rc.local к systemd в новых дистрибутивах (в дистрибутивах, которые все еще используют init.d или rc.d, это делать не нужно) и внести в него вышеперечисленные команды. Открываем /etc /rc.local любимым текстовым редактором (например, gedit) и вписываем в него:

(естественно, со своими значениями раздела и UID, GID). Так можно подключить при запуске любое количество дисков: для каждого нужно вначале прописать ntfsfix, а затем mount.

* в статье после /etc везде добавлен ненужный пробел

Ubuntu и жесткие диски

Ubuntu и жесткие диски

Ubuntu – операционная система, разработанная на основе Debian, является одним из самых успешных дистрибутивов Linux. Эта ОС подходит для ПК, ноутбуков и серверов. Благодаря своей простоте и удобству при использовании Ubuntu часто рекомендуют новичкам. Ведь интуитивный и понятный интерфейс позволит пользователю с легкостью управлять всеми процессами устройства.

Правда, совсем недавно появились некоторые сведения о недостатке в популярном дистрибутиве Linux. Оказалось, что операционная система Ubuntu способствует выходу из строя жестких дисков. Проблема заключается в парковке головки жесткого диска в целях экономии энергопотребления. При настройках по умолчанию этот процесс происходит 3 раза за минуту. Поэтому, учитывая показатель современного накопителя, который в среднем составляет 60 000 циклов старт/стоп, можно сделать вывод, что время работы жесткого диска в итоге сократится до 138 дней. Хотя данный недостаток легко устраняется отключением соответствующей функции в настройках энергосбережения.

Если на компьютере используется другая операционная система, например, Windows, то, Ubuntu можно установить в качестве второй системы, выбрав соответствующий пункт при установке (желательно при этом выбирать другой жесткий диск для установки Ubuntu). Впоследствии, после загрузки BIOS, будет отображено меню загрузчика с выбором операционной системы для запуска.

В отличии от Windows, Ubuntu при нативной установке с Live CD/DVD позволяет выбрать в качестве раздела устройства, подключенные к порту USB, так что можно установить данную операционную систему почти на любые носители, будь то внешние жесткие диски, флешки и тому подобное.

Как получить права доступа к файлам и папкам в Linux

sudo chmod xyz путь_к_файлу

В качестве примера изменения прав доступа приведу такую команду:

sudo chmod a+w мой_файл

sudo chmod 740 мой_файл

sudo chmod -R 774 /моя/папка/

sudo chown -R chelovek:users /моя/папка/

Пользуйтесь chmod и chown для смены прав доступа и не забывайте про рут!

Chroot-окружение с помощью Sabayon Live CD

Первым делом нужно смонтировать корневой раздел установленной системы. Если имеется несколько системных разделов (к примеру, отдельный для /boot), то нужно смонтировать их все. В дополнение следует примонтировать файловые системы /dev и /proc, так как они тоже будут использоваться chroot-окружением.

sudo mkdir -p /mnt/sabayon

sudo mount /dev/sdb1 /mnt/sabayon

sudo mount -t proc none /mnt/sabayon/proc

sudo mount -o bind /dev /mnt/sabayon/dev

sudo mount -o bind /run /mnt/sabayon/run

В вышеперечисленных командах предполагается, что корневой раздел установленной системы расположен на sdb1 (у вас это может быть другой раздел) и на нем же находится /boot. Если /boot находится на другом разделе первую команду можно дополнить так:

sudo mkdir -p /mnt/sabayon/boot

и после 2-й команды выполнить

sudo mount /dev/sdb2 /mnt/sabayon/boot

И вот мы уже можем войти в нашу установленную на жесткий диск систему с Live CD, используя chroot-окружение:

sudo chroot /mnt/sabayon /bin/bash

export PS1="(chroot) $PS1"

В итоге, строка в терминале теперь должна начинаться с

GRUB2 читает при запуске файл «/etc/mtab», поэтому для его восстановления /etc/mtab должен быть обновлен:

grep -v rootfs /proc/mounts > /etc/mtab

в случае без отдельного /boot, либо

cp /proc/mounts /etc/mtab

для случая с отдельным /boot

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

По окончании всех операций, которые требуется осуществить, можно выйти из chroot-окружения командой

Также рекомендуется отмонтировать все примонтированные ранее разделы

sudo umount /mnt/sabayon/dev /mnt/sabayon/proc /mnt/sabayon

sudo umount /mnt/sabayon/boot

в ситуации с отдельным /boot.

Работа с архивами в Linux

tar xvjf xarchiver-0.5.3.tar.bz2

sudo make install

Может случиться, что вышеуказанная ошибка остается и после тонкой настройки Xarchiver. Тогда нужно запустить Thunar с административными привилегиями

и перейти в папку «/usr/local/libexec/thunar-archive-plugin/». Скопируйте файл «xarchiver.tap» и вставьте в папку «/usr/libexec/thunar-archive-plugin/». Теперь, после перезагрузки, все должно работать.

Также при глобальном обновлении ассоциаций командой

sudo leafpad /usr/local/share/applications/xarchiver.desktop

Просто удалите из файла текст, содержащий «multipart/x-zip» до точки с запятой (находится в нижней части, либо воспользуйтесь поиском) и повторите обновление ассоциаций.

Настройка Dropbox в Linux c использованием плагина Thunar Dropbox

Итак, настройка Dropbox в Linux c использованием плагина Thunar Dropbox начинается с запуска Менеджера приложений. Если у вас Sabayon Xfce, как у меня, то запускаем Rigo и в строке поиска вводим «thunar dropbox». Выбираем появившийся в списке плагин Thunar Dropbox и жмем «Установить». Сам Dropbox будет загружен и проинсталлирован автоматически.

После завершения установки нужно запустить Dropbox из терминала командой

Появится окно приветствия, в котором нужно подставить свои логин и пароль. Нажимаем «Далее» и переходим к расширенной настройке Dropbox: выбору папки на диске, где будут храниться облачные файлы; установке облачных папок, которые будут синхронизированы с ПК. В завершении, просмотрев небольшой обзор возможностей программы, можно будет перейти в папку Dropbox на компьютере, где уже должны появиться некоторые файлы и папки из облака.

Теперь нужно перезагрузиться. Когда система запустится, переходим опять же в папку Dropbox и жмем ПКМ на любой папке или каком-нибудь файле. В контекстном меню должны быть доступны следующие пункты:

Также при клике ПКМ на папках и файлах всей файловой системы (не из папки Dropbox) в контекстном меню появится команда «Переместить в папку Dropbox». Таким образом с помощью плагина Thunar Dropbox мы получаем полный контроль над основным функционалом облачного сервиса и удобную синхронизацию данных в Linux.

Если в контекстных меню указанные выше пункты отсутствуют, тогда следует убедиться в том, что Dropbox работает и запускается при старте системы. В «Меню -> Настройки -> Сеансы и запуск» на вкладке «Автозапуск» должен быть активирован соответствующий пункт. В случае отсутствия значка запуска, его необходимо добавить вручную, указав в поле «Команда» код « dropbox » (без кавычек). При следующей загрузке системы Dropbox должен быть обнаружен в системном трее. Если команд в «меню правой кнопки» не появилось даже при запущенной программе, тогда просто повторно установите (поверх) плагин Thunar Dropbox по аналогии с вышеописанным.

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

Но порой система инициализации выполняет много лишних задач во время загрузки, иногда некоторые сервисы ожидают загрузки других и завершаются только по таймауту через некоторое время. В таких случаях система может загружаться до нескольких минут. В этой статье мы рассмотрим как ускорить загрузку Linux, что нужно для этого настроить, что удалить. А также немного поговорим о процессе загрузки. Мы сосредоточимся на системе инициализации systemd.

Как проходит загрузка Linux

Во всех подробностях процесс загрузки Linux описан в отдельной статье, здесь же мы рассмотрим только то, что будет касаться ускорения.

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

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

После того как ядро передало управление системе инициализации, начинается монтирование дисков. Это тоже отнимает время, лучше не использовать виртуальные разделы дисков, например, raid или lvm, да и вообще, чем меньше разделов - тем лучше. Идеальный вариант - только корневой раздел, тогда скорость загрузки linux будет максимальной. Но это очень невыгодный в плане удобства вариант, поэтому найдите золотую серединку. Перед тем как примонтировать каждый диск, система инициализации пытается проверить файловую систему на ошибки, это тоже замедляет загрузку.

Загрузка сервисов отнимает больше всего времени и больше всего работы придется проделать здесь, определить какие сервисы не нужны и отключить их также скрыть те сервисы, которые отключить нельзя. Чтобы понять что именно отключать нам нужно знать сколько времени занимает загрузка каждого сервиса. Давайте рассмотрим анализ скорости загрузки systemd.

Анализ загрузки Systemd

Анализ скорости загрузки системы важен не только в самом процессе оптимизации, но и для того, чтобы оценить насколько эта оптимизация удалась. Перед и после оптимизации нужно замерять время загрузки, чтобы понять чего мы смогли добиться.

Давайте посмотрим насколько быстро грузится наша система сейчас:

systemd

Да, здесь 17 секунд, не так уж плохо, но будет еще лучше после завершения ускорения загрузки. На загрузку ядра уходит 5.405, а на все остальные сервисы 11.611. Чтобы понять какие именно сервисы замедляют систему нам нужна более подробная информация, мы можем ее получить с помощью параметра blame:

systemd1

У нас есть список сервисов, которые загружаются дольше всего, но этот список ни о чем нам не говорит, потому что в Systemd параллельная загрузка сервисов. Если бы во время загрузки была какая-нибудь проблема, мы бы ее увидели, но проблем здесь нет. Нам нужен более детализованный график с указанием не только времени загрузки сервиса, но и с отображением параллельных загрузок и мы можем его получить командой:

systemd-analyze plot > graph.svf

Утилита сгенерирует svf файл с графиком, откройте его в браузере:

systemd2

Вот теперь у нас есть вся информация, чтобы оптимизировать систему. Здесь отображается не только время загрузки каждого сервиса, но также время когда он начал загружаться и когда завершил. Дальше начнем ускорение загрузки Linux.

Ускорение загрузки Linux

Начнем мы с оптимизации ядра 5 секунд, это не так много, но можно же еще улучшить. Мы не будем пересобирать ядро, хотя и это дало бы больший эффект, мы просто настроим его работу с помощью параметров загрузки.

Настраивать Grub будем правильно. Параметры загрузки ядра находятся в файле /etc/default/grub, а именно в строчке GRUB_CMDLINE_LINUX_DEFAULT. Откройте этот файл:

Теперь приводим интересующую нас строчку к такому состоянию:

GRUB_CMDLINE_LINUX_DEFAULT="quiet rootfstype=ext4 libahci.ignore_sss=1 raid=noautodetect selinux=0 plymouth.enable=0 lpj=12053560"

Разберем подробнее за что отвечает каждый параметр:

  • quiet - вывод, это долго, поэтому говорим ядру что на экран нужно выводить минимум информации
  • rootfstype=ext4 - указываем в какую файловую систему отформатирован корень. У меня ext4.
  • libahci.ignore_sss=1 - Ignore staggered spinup flag, ускоряет загрузку жестких дисков
  • raid=noautodetect - raid я не использую, думаю вы тоже поэтому отключаем.
  • selinux=0 - система полномочий selinux на домашней машине тоже ни к чему, без нее будет быстрее.
  • plymouth.enable=0 - заставка plymouth тоже занимает много времени, поэтому убираем заставку
  • lpj=12053560 - позволяет задать константу loops_per_jiffy, что позволит ядру не вычислять ее каждый раз и сэкономит до 250 миллисекунд. Это значение индивидуально для каждого компьютера.

Чтобы узнать значение последнего параметра выполните:

dmesg | grep 'lpj='

systemd3

Нас будет интересовать значение lpj=, укажите его в своем конфигурационном файле.

Также для указания корневого раздела желательно не использовать всякие там UUID, быстрее будет если написать прямо. Для того чтобы конфигуратор grub не использовал grub добавьте в тот же файл строчку:

Сохраните файл и обновим конфигурацию grub:

Проверяем, действительно ли установлены нужные опции:

systemd5

Да, все правильно, перезагружаем компьютер, и смотрим что вышло:

systemd4

Почти на одну секунду быстрее, и то хорошо. Возможно, у вас эффект будет намного лучше. Теперь идем разбираться с сервисами.

Настройка системы

Во-первых SELinux отключен не полностью. Для полного отключения добавляем строку в файл /etc/selinux/config:

sudo vi /etc/selinux/config

Во-вторых, проверка файловых систем тоже может занять некоторое время. Оставляем проверку на ошибки только для корня. Для этого откройте файл /etc/fstab и приведите строчку для корня к такому виду:

/dev/sda3 / ext4 defaults 1 1

Последний параметр отвечает за проверку, 1 - проверять, 0 - не проверять. Установите для всех других разделов 0. К тому же boot раздел лучше монтировать по требованию. Для этого изменяем его запись:

/dev/sda1 /boot ext4 noauto,comment=systemd.automount 1 0

Затем давайте перенесем папку /tmp в оперативную память, чтобы уменьшить количество операций на жестком диске:

tmpfs /tmp tmpfs defaults 0 0

Ускорение загрузки Linux отключением сервисов

Вот мы и добрались к сервисам. Оптимизация сервисов заключается в том, чтобы отключить лишнее, а также использовать только возможности, встроенные в systemd, так будет быстрее. Сначала перенесем всю функциональность на systemd.

Первым отключим rsyslog. В systemd используется свой механизм записи логов journald, поэтому вести еще один не нужно. Для отключения выполните:

sudo systemctl disable rsyslog
$ sudo systemctl mask rsyslog

Опция mask позволяет спрятать юнит, система будет думать что его не существует и не сможет загрузить. Восстановить такой юнит можно командой systemctl unmask.

В systemd реализована своя служба настройки сети - networkd, поэтому необязательно использовать NetworkManager. Работа со встроенной службой будет намного быстрее. Здесь нужно заметить, что если вы используете wifi и не хотите настраивать его вручную, через консоль, то отключать NetworkManager не стоит.

Отключаем NetworkManager и включаем networkd:

sudo systemctl disable NetworkManager
sudo systemctl enable systemd-networkd

Службу networking тоже можно отключить, если не используете:

sudo systemctl disable networking

Включаем resolved, который отвечает за настройку DNS серверов:

sudo systemctl enable systemd-resolved
sudo systemctl start systemd-resolved

Даем символическую ссылку на файл /etc/resolv.conf

sudo rm /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

Осталось настроить динамическое получение ip адреса при загрузке:

[Match]
Name=enp*
[Network]
DHCP=yes

enp0* значит, что сеть нужно подымать только для устройств, имена которых начинаются на enp0. Готово, сеть настроена.

В systemd есть свое решение для выполнения задач по расписанию, поэтому cron можно не использовать:

sudo systemctl disable cron

С заменой разобрались, перейдем к удалению лишнего. Отключаем фаервол, на домашней машине, за маршрутизатором он не нужен:

sudo systemctl disable ufw
$ sudo systemctl mask ufw

Отключаем apport (служба отчетов об ошибках):

sudo systemctl disable apport

Я не использую ppp и мобильные соединения, поэтому и эти сервисы можно отключить.

sudo systemctl disable pppd-dns
sudo systemctl mask pppd-dns

sudo systemctl disable ModemManager
sudo systemctl mask ModemManager

Если вы не используете Avahi, его тоже можно отключить:

sudo systemctl disable avahi-daemon

Систему AppArmor тоже можно отключить:

sudo systemctl disable apparmor

Также если у вас загружаются такие программы, как postfix (почтовый сервер), apache (веб-сервер), mysql (сервер баз данных) лучше их тоже убрать из автозагрузки и запускать потом вручную.

Перезагружаемся и проверяем скорость загрузки:

systemd7

У меня скорость загрузки linux выросла на пять секунд. Но это нормально, учитывая, что используется VirtualBox, на реальной машине можно получить и больше. А самая лучшая оптимизация - купить SSD, там можно достичь даже скорости загрузки до двух-трех секунд.

Выводы

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

Читайте также: