Автор Тема: Перевод официальной документации Slax  (Прочитано 1322 раз)

Оффлайн erasy

  • Пользователь
  • **
  • Сообщений: 18
  • Карма: +1/-0
    • Просмотр профиля
Введение

Что такое Slax      
Slax - это Live операционная система, основанная на Linux. Live означает, что он запускается с внешнего носителя без необходимости установки на жесткий диск. Slax загружается с запоминающих устройств USB, таких как флэш-накопители, а также с обычных жестких дисков и CD или DVD дисков. Просто подключите ваше устройство и загрузитесь с него. Вся операционная система Slax находится в одном каталоге /slax, что упрощает организацию других ваших данных.

Slax предоставляет оконный менеджер FluxBox, уже настроенный для наиболее распространенных задач. В комплект входит веб-браузер Chromium, эмулятор терминала xterm, простой текстовый редактор Leafpad и калькулятор Qalculate. Вы можете установить Slax на многие файловые системы, включая EXT (ext2, ext3, ext4), btrfs и даже FAT и NTFS.

Когда Slax запускается с носителя только для чтения, такого как CD/DVD, он сохраняет все системные изменения только в памяти, и все эти изменения теряются при перезагрузке. Но если вы запустите Slax с записываемого устройства, такого как USB-флеш-накопитель, он сможет сохранить все изменения прямо на нем, поэтому все ваши конфигурации и модификации будут восстановлены при следующей загрузке, даже если загрузиться на другом компьютере. Это называется режимом сохранения изменений, и вы можете прочитать об этом подробнее в отдельной главе.

Выбор оптимальной архитектуры Slax (32-битная или 64-битная)
Вы, наверное, заметили, что Slax доступен для 32-битных и 64-битных процессорных архитектур. 32-разрядная версия предназначена для работы на очень старых компьютерах (серия Intel 686 была выпущена в 1995 году). Она будет работать должным образом и на новых компьютерах, но займет несколько больше места на диске (и немного больший объем для скачивания). Кроме того, есть ограничение, что одно приложение может адресовать только 4 ГБ ОЗУ. С другой стороны, 64-битная версия меньше, такого ограничения нет, и она будет работать на большинстве компьютеров, доступных в настоящее время. В общем, если вы планируете использовать Slax на очень, очень старых компьютерах, выберите 32bit. Если вы намерены использовать Slax на машинах, изготовленных в этом веке, то лучше перейти на 64-битную. И если вы не знаете, на каком оборудовании придется работать, выберите 64-битную версию, потому что вероятность того, что вы когда-нибудь увидите 32-битный компьютер, почти равна нулю.

Примечание переводчика: некоторые нетбуки, выпущенные в 2000-х годах, имеют 32-разрядный процессор Atom.

Системные требования для запуска Slax (32-битная версия):
Процессор: i686 или новее (будет работать на всех процессорах Intel и AMD)
Память: 128 МБ ОЗУ для запуска рабочего стола, 512 МБ ОЗУ для работы веб-браузера
Периферийные устройства: CD привод или USB порт для загрузки с компакт-диска или флеш-накопителя
Опционально: сетевая карта, звуковая карта

Системные требования для запуска Slax (64-битная версия):
Процессор: x86_64, такие как AMD Athlon 64, Opteron, Sempron, Intel Core 2 / i3 / i5 / i7 и другие
Память: 128 МБ ОЗУ для запуска рабочего стола, 512 МБ ОЗУ для работы веб-браузера
Периферийные устройства: CD привод или USB порт для загрузки с компакт-диска или флеш-накопителя
Опционально: сетевая карта, звуковая карта

Исходный код и лицензия Slax
Slax является свободным программным обеспечением: вы можете распространять и/или изменять его в соответствии с условиями Стандартной общественной лицензии GNU (GPL), опубликованной Free Software Foundation. Slax распространяется в надежде, что он будет полезен, но без каких-либо гарантий; используйте его на свой риск. Лицензия GNU GPL требует публикации всех исходных кодов, чтобы другие могли использовать их, изменять или учиться на них. Можете мне поверить, это очень хорошая идея - без нее не было бы никакого Slax. Сам Slax базируется большей частью на Debian, исходный код которого также общедоступен.
« Последнее редактирование: 24 Июль 2019, 15:35:20 от erasy »

Оффлайн erasy

  • Пользователь
  • **
  • Сообщений: 18
  • Карма: +1/-0
    • Просмотр профиля
Запуск Slax
« Ответ #1 : 23 Июль 2019, 13:18:43 »
Запуск Slax

Slax на CD/DVD
Если вы планируете запускать Slax с компакт-диска или DVD, вам необходимо скачать дистрибутив в виде файла ISO. ISO-файл представляет собой полный образ компакт-диска, поэтому вам нужно просто записать его на носитель. Не имеет значения, что вы выберете: CD или DVD, - оба будут работать. Более важным является то, что вы не можете записать его как обычный файл. Это не сработает. Вместо этого вы должны записать его как образ диска. Например, в Windows 7 просто щелкните правой кнопкой мыши на файле ISO и выберите «Записать образ диска» в контекстном меню. В более старых версиях Windows вам понадобится специальное программное обеспечение, например, вы можете попробовать Free ISO Burner. Когда закончите, вставьте записанный диск Slax в привод CD/DVD и перезагрузите компьютер. Возможно, вам придется нажать какую-то клавишу, чтобы отобразить меню загрузки, пока ваш компьютер запускается, и выбрать загрузку с привода компакт-дисков. Та волшебная клавиша, которая показывает вам меню загрузки, обычно F11, F9 или Esc, - обратитесь к документации BIOS или посмотрите инструкции на экране, когда ваш компьютер загружается.

Установка Slax на жесткий диск или флешку
Чтобы запустить Slax с жесткого диска или с USB-устройства, вам необходимо скопировать содержимое файла ISO непосредственно в корневой каталог вашего диска. Существует только одна папка с именем /slax/, которую необходимо скопировать. Windows 8.1 просто откроет для вас файл ISO, как если бы это был каталог, в других случаях вам может потребоваться специальное программное обеспечение для этой задачи, если ваша операционная система не может получить доступ к содержимому файла ISO. А еще вы можете записать файл ISO на CD/DVD диск и затем скопировать его содержимое оттуда. На вашем диске должна быть папка /slax/, например, E:\slax\. Рекомендуется использовать схему разделов msdos (не GPT). Кроме того, он должен быть отформатирован, лучше всего, если в FAT32 или ext4.

Когда это будет сделано, потребуется еще один шаг, чтобы сделать диск загрузочным: перейдите в каталог /slax/boot/ на вашем USB-устройстве или жестком диске и найдите там файл bootinst.bat. Этот файл содержит программу установки загрузчика, поэтому просто запустите ее, дважды щелкнув по ней, чтобы внести все необходимые изменения в основную загрузочную запись вашего устройства, чтобы BIOS вашего компьютера мог понять, как загрузить Slax с вашего диска. Помните, что установщик загрузчика не поддерживает мультизагрузку, поэтому только Slax будет загружаться с данного диска.

Далее следуйте той же процедуре, как если бы вы загружались с компакт-диска - перезагрузите компьютер и выберите загрузку с USB-накопителя или жесткого диска в меню загрузки вашего компьютера. Опять же, вам может понадобиться обратиться к документации по BIOS, чтобы узнать, как загрузить операционную систему на вашем компьютере с вашего устройства.

Варианты загрузки Slax
Прежде чем сам Slax начнет загружаться, вы увидите большое изображение клевера в середине экрана. Это логотип загрузки. Он отображается на короткое время, и у вас есть ровно четыре секунды, чтобы нажать клавишу Esc и указать способ загрузки Slax. Нажатие Esc вызовет простое загрузочное меню, подобное следующему:
Run Slax (Keep changes persistent) (Запуск с сохранением изменений, используется по умолчанию)
Run Slax (Fresh start) ("Чистый старт" - без сохранения и загрузки предыдущей сессии)
Run Slax (Copy to RAM) (Загрузка в память)
Вы можете использовать это меню для копирования данных Slax в ОЗУ во время запуска или для запуска Slax в режиме «чистого старта», в случае, если ваша сохраненная сессия будет повреждена. Используйте клавиши со стрелками для навигации и клавишу Enter, чтобы выбрать любую опцию.

Сохранение изменений
При работе с носителя только для чтения, такого как CD/DVD, Slax сохраняет все системные изменения только в памяти, и вы теряете их при перезагрузке. Если вы запустите Slax с записываемого носителя, такого как USB-накопитель, то все изменения, внесенные в саму операционную систему, будут сохранены и восстановлены при следующей загрузке. Если ваше устройство использует файловую систему FAT, которая наиболее распространена на флэш-накопителях USB, то все изменения сохраняются в специальном файле changes.dat, который создается на вашем загрузочном устройстве в каталоге /slax/changes/ и увеличивается автоматически размером до 4 ГБ. Если ваше загрузочное устройство отформатировано в файловую систему Linux, такую как ext4, измененные (и вновь созданные) файлы сохраняются в директории /slax/changes/ без необходимости в файле changes.dat. Если вам по какой-либо причине не нужно сохранение изменений, просто выберите другой параметр в меню загрузки, и ваш Slax начнет использовать «чистую» конфигурацию по умолчанию и не сохранит никаких изменений. Это может быть полезно в тех случаях, когда вы хотите протестировать что-то общесистемное, поскольку вы всегда можете вернуться к состоянию по умолчанию с помощью простой перезагрузки (на случай, если что-то не получится).

Файл changes.dat предназначен для работы с файловыми системами FAT, которые обычно используются на большинстве USB-накопителей. К сожалению, FAT ограничивает размер файла 4 ГБ; по этой причине сохраненные изменения не могут занимать больше места. Если вам нужно сохранить больше, отформатируйте диск в файловую систему Linux, такую как EXT4 или BTRFS, и установите на нее Slax. Slax сможет сохранять изменения прямо в каталог /slax/changes/ и их объем будет ограничен только фактической емкостью вашего устройства. Функция сохранения изменений в каталог никак не влияет на файл changes.dat.
« Последнее редактирование: 23 Июль 2019, 13:31:44 от erasy »

Оффлайн erasy

  • Пользователь
  • **
  • Сообщений: 18
  • Карма: +1/-0
    • Просмотр профиля
Использование Slax
« Ответ #2 : 23 Июль 2019, 13:19:16 »
Использование Slax

Утилиты командной строки, включенные в Slax   
Командная строка предлагает широкий спектр системных инструментов, которые вы можете использовать. Эти инструменты, конечно же, доступны и в графическом пользовательском интерфейсе, вам просто нужно запустить их в окне терминала. Вот некоторые из утилит, которые вы можете найти наиболее полезными:

Архивные утилиты
gzip и gunzip - сжатие файлов с использованием алгоритма Lempel-Ziv
bzip2 и bunzip2 - сжатие файлов с использованием алгоритма сжатия текста для сортировки блоков по Burrows-Wheeler
xz и unxz - утилита сжатия на основе алгоритма LZMA, разработанная Игорем Павловым в составе 7-Zip
zip and unzip - утилита сжатия и упаковки файлов, совместимая с PKZIP (ZIP от Phil Katz)
cpio и tar - программы для управления архивами файлов

Дисковые утилиты
fdisk - редактор таблицы разделов диска для Linux, который поддерживает только разделы MBR (Master Boot Record)
hdparam и sdparam - утилиты для просмотра и возможного изменения параметров дисков ATA/IDE и SCSI
mdadm - утилита для создания, управления и мониторинга устройств Linux MD (Software RAID)

Аппаратные средства мониторинга
dmidecode - сбрасывает содержимое таблицы DMI компьютера. Эта таблица содержит описание аппаратных компонентов системы
smartctl - контролирует и демонстрирует устройства хранения данных с использованием технологии самоконтроля, анализа и отчетности (S.M.A.R.T.)

Утилиты файловой системы
mkfs - инструмент для создания Linux или другой поддерживаемой файловой системы, такой как: ext2/3/4, reiserfs, btrfs, xfs, jfs, ntfs, fat и другие
fsck - утилита для проверки и восстановления поддерживаемых файловых систем (см. выше)
tune2fs - позволяет настраивать различные параметры файловых систем Linux ext2, ext3 или ext4.

Системные утилиты
lsof - выводит информацию о файлах, открытых процессами, запущенными в системе
htop - программа просмотра запущенных процессов, похожая на известную программу "top", но предоставляет гораздо больше возможностей

Инструменты восстановления данных
ddrescue - копирует данные из файла или устройства в другой файл или устройство с максимально возможной защитой от ошибок чтения
rsync - программа удаленной синхронизации файлов

Сетевые инструменты
ip - показывает и управляет маршрутизацией, устройствами, политикой маршрутизации и туннелями.
nc - утилита, которая читает и записывает данные через сетевые соединения, используя протокол TCP или UDP
networkctl - анализ состояния сетевых ссылок
wpa_supplicant - wifi клиент командной строки

Поддержка общих ресурсов Windows
mount -t cifs - команда для монтирования общего ресурса Windows так, чтобы он выглядел как локальная файловая система

Другие инструменты
ssh - openSSH клиент
service ssh start - openSSH сервер
mc - файловый менеджер Midnight commander, который включает в себя клиент FTP/SCP, программу просмотра в текстовом и шестнадцатиричном виде, а также текстовый редактор
apt - application Packaging Tool - утилита для установки дополнительного программного обеспечения

Slax-специфичные команды
savechanges - сохраняет все изменения файловой системы, сделанные во время текущей сессии, в файл модуля.
sb2dir - конвертирует модуль .sb в каталог
dir2sb - конвертирует каталог в модуль .sb
rmsbdir - удаляет каталог, созданный командой sb2dir
genslaxiso - создает iso-файл Slax с новыми модулями

Приложения для рабочего стола в Slax
xterm - терминал (графический интерфейс командной строки)
chromium и vlc - интернет-браузер Chromium и видеоплеер (работают от непривилегированного пользователя)
leafpad - простой текстовый редактор
qalculate - мощный калькулятор
scrot - программа захвата изображения на экране, запускается при нажатии клавиши PrintScreen
feh - простая программа просмотра изображений и установки фона рабочего стола
wicd-manager - управление сетевыми подключениями
pcmanfm - файловый менеджер
« Последнее редактирование: 23 Июль 2019, 13:28:39 от erasy »

Оффлайн erasy

  • Пользователь
  • **
  • Сообщений: 18
  • Карма: +1/-0
    • Просмотр профиля
Настройка Slax
« Ответ #3 : 23 Июль 2019, 13:19:49 »
Настройка Slax
Даже если Slax работает с носителя только для чтения, такого как CD/DVD, он по-прежнему предоставляет полностью доступную для записи корневую файловую систему (с изменениями, хранящимися в памяти), позволяя вам устанавливать дополнительное программное обеспечение из репозиториев или других источников. Если вы не используете опцию сохранения измений, все, что вы устанавливаете, находится только в оперативной памяти и теряется после перезагрузки. Инструменты для добавления программного обеспечения в Slax, а также инструменты для постоянного сохранения изменений описаны ниже.

Добавление программного обеспечения с помощью apt
Slax полностью поддерживает команду apt, которая является мощным инструментом командной строки, подходящим для таких задач, как установка новых пакетов программного обеспечения или обновление существующих. Например, чтобы установить видеопроигрыватель vlc, просто выполните apt install vlc, и все настроено, Slax загрузит запрошенный пакет, включая все библиотеки и другие зависимости, необходимые для его запуска. Если вы не уверены в точном названии пакета, который хотите установить, вы можете выполнить поиск с помощью apt search имя_пакета. Имейте в виду, что apt автоматически загрузит свою базу данных доступных пакетов при первом запуске. Если ваша система работает непрерывно в течение нескольких дней, вам может понадобиться время от времени запускать apt update вручную, чтобы обеспечить актуальность базы данных.

Добавление программного обеспечения вручную
Если вы предпочитаете добавлять программное обеспечение в Slax вручную, вы можете сделать это, загрузив и скомпилировав исходные коды из Интернета. Просто помните, что для того, чтобы иметь возможность компилировать исходные коды в Slax, вам потребуется пакет build-essential, который предоставляет компилятор gcc, make и другие инструменты, необходимые для этой задачи. Если вы скачиваете исходники с github с помощью git clone, вам также потребуется установить git.

Как сохранить ваши изменения для будущего использования
Если вы загружаете Slax с записываемого носителя, ваши изменения сохраняются в реальном времени, и никаких дальнейших действий не требуется. Однако, если вы используете Slax с носителя только для чтения, такого как CD/DVD, или если вы выбрали вариант загрузки без сохранения изменений, все равно есть способ не потерять результаты ваших действий, создав модуль. В любой момент, когда у вас установлены и настроены нужные приложения, используйте команду savechanges, чтобы сохранить все изменения, сделанные в текущей системе, в модуль. Команде требуется один параметр - путь к файлу, в который изменения будут сохранены. Так, например, используйте savechanges /tmp/mychanges.sb. Все изменения, сделанные вами в системе, будут сохранены в /tmp/mychanges.sb, за исключением некоторых предопределенных файлов и каталогов, таких как временные файлы, кэши и т.п.

После того, как ваши изменения сохранены в модуле, все, что вам нужно, это включить этот модуль в ваш Slax, и он будет автоматически активирован во время загрузки. Скопируйте модуль .sb в каталог /slax/modules/ и перезагрузите компьютер. Если вы используете Slax с записываемого носителя, такого как USB-накопитель, вы можете скопировать модуль непосредственно в /run/initramfs/memory/data/slax/modules/, который уже сопоставлен с вашим USB-диском. Если вы используете Slax с носителя только для чтения, такого как CD/DVD, вам может потребоваться создать новый образ ISO с помощью команды genslaxiso.

Если вы хотите просмотреть содержимое вашего модуля или изменить в нем файлы, вы можете использовать две команды, доступные в Slax: sb2dir, чтобы преобразовать ваш модуль в каталог, и затем dir2sb, чтобы преобразовать его обратно в файл .sb. Важно помнить, что преобразованный в каталог модуль хранится в памяти (технически этот каталог перемонтирован с помощью tmpfs), поэтому вы не сможете удалить этот каталог с помощью rmdir, даже если он пуст (вы получите ошибку EBUSY ). Используйте команду rmsbdir, чтобы удалить каталог, созданный командой sb2dir.

Обратите внимание, что эти команды работали немного иначе в старых версиях Slax, поэтому убедитесь, что вы используете Slax 9.6.4 или новее.

Подключение и отключение модулей в процессе работы
Если у вас есть модуль Slax (файл с расширением .sb) и вы хотите подключить его во время работы Slax без перезагрузки, вы можете использовать команду slax activate имя_модуля.sb. Точно так же вы можете отключить любой модуль с помощью команды slax deactivate имя_модуля.sb. Однако, если какие-либо файлы из вашего модуля открыты или используются, деактивация будет невозможна, поэтому убедитесь, что все процессы, которые могут использовать файлы из вашего модуля, должны быть завершены, прежде чем вы попытаетесь деактивировать его.

Напомним, вот команды, которые мы только что узнали
apt search keyword - для поиска доступного пакета по ключевому слову
apt install package - для загрузки и установки пакета
savechanges target.sb - для сохранения всех изменений файловой системы, сделанных во время текущего сеанса, в файл модуля
sb2dir module.sb - для преобразования модуля .sb в каталог
dir2sb directory.sb - для преобразования каталога в модуль .sb
rmsbdir directory.sb - для удаления каталога, созданного sb2dir
genslaxiso slax.iso module.sb - для создания ISO-файла Slax с новыми модулями
slax activate module.sb - для подключения модуля
slax deactivate module.sb - для отключения модуля

Пример №1: сделать модуль с новыми обоями
# Slax использует в качестве обоев файл /usr/share/wallpapers/slax_wallpeper.jpg
# Итак, мы собираемся заменить этот файл
# Сначала создайте временный каталог для размещения содержимого будущего модкуля
# Обратите внимание, что сам каталог имеет расширение .sb

DIR = /tmp/module.sb
mkdir $DIR
mkdir -p $DIR/usr/share/wallpapers/   
# Теперь скопируйте свой файл обоев в этот каталог   
cat new_wallpaper.jpg > $DIR/usr/share/wallpapers/slax_wallpaper.jpg
# Наконец, преобразуйте каталог в файл модуля   
# Каталог будет удален и будет создан файл модуля с тем же именем

dir2sb $DIR   

Пример №2: добавление FireFox в Slax
# Сначала загружаем Slax без сохраненных ранее изменений и пробуем apt
apt install firefox
# Как вы увидите, нет пакета с именем firefox. Попробуем поискать по ключевому слову
apt search firefox | more
# Теперь результат есть. Пакет называется firefox-esr. Итак, давайте установим его
apt install firefox-esr
# Мы хотим, чтобы он назывался просто Firefox, поэтому давайте отредактируем файл рабочего стола, отвечающий за имя
sed -i -r "s/^Name=FireFox ESR/Name=Firefox/" /usr/share/applications/firefox-esr.desktop
# Теперь сохраните недавно установленное программное обеспечение, включая наши изменения, в модуль
# В нашем примере модуль будет сохранен в текущем каталоге

savechanges firefox.sb
# Если мы работаем с CD только для чтения, мы можем создать новый ISO с нашим модулем
# Затем просто запишите ISO на новый CD, и Firefox будет доступен при его загрузке.
# В нашем примере файл ISO будет создан в текущем каталоге

genslaxiso slax.iso firefox.sb
# Если мы запускаем Slax с USB-накопителя, достаточно поместить его прямо в папку модулей -
# и все, Firefox будет доступен после перезагрузки

mv firefox.sb /run/initramfs/memory/data/slax/modules/
« Последнее редактирование: 24 Июль 2019, 16:27:33 от erasy »

Оффлайн erasy

  • Пользователь
  • **
  • Сообщений: 18
  • Карма: +1/-0
    • Просмотр профиля
Внутреннее устройство Slax
« Ответ #4 : 13 Сентябрь 2019, 11:18:11 »
Внутреннее устройство Slax

Структура каталогов Slax
Все файлы данных Slax находятся на загрузочном носителе в одном каталоге. Вполне естественно, что имя этого каталога «slax». Вся магия происходит внутри. На схеме ниже показана упрощенная структуры каталогов; приведены только интересующие нас файлы:
    slax
    ├─── boot
    │    ├─── isolinux.bin
    │    ├─── syslinux.cfg
    │    ├─── initrfs.img
    │    ├─── vmlinuz
    │    └─── ...
    ├─── changes
    ├─── rootcopy
    ├─── 01-core.sb
    ├─── 02-xorg.sb
    ├─── 03-desktop.sb
    ├─── 04-chromium.sb
    └─── …

Загрузка ядра Linux
Когда BIOS вашего компьютера загружает Slax, он фактически запускает загрузчик SYSLINUX. Сам загрузчик хранится в файле isolinux.bin или ldlinux.sys, в зависимости от вашего загрузочного носителя - CD/DVD использует isolinux.bin, USB-диск или жесткий диск - ldlinux.sys.

Дальнейшие действия загрузчика SYSLINUX зависят от содержимого файла конфигурации syslinux.cfg. В Slax в этом файле содержатся инструкции вывода на экран логотипа и (по требованию) меню загрузки - если пользователь нажимает клавишу до истечения времени ожидания. Когда обратный отсчет заканчивается (или пользователь  выбирает пункт меню), SYSLINUX загружает в память два файла: vmlinuz (ядро Linux) и initrfs.img (базовая корневая файловая система). Прогресс отображается непрерывным потоком точек на экране. Как только эти файлы загружены, управление передается исполняемому файлу vmlinuz для запуска ядра Linux.

Инициализация
В обычных условиях (когда стандартный дистрибутив Linux запускается с жесткого диска), ядро Linux монтирует корневую файловую систему с жесткого диска, и в качестве основного процесса выполняется /sbin/init, который заботится о запуске системы. В Slax ситуация иная - нет жесткого диска, с которого корневая файловая система могла бы быть смонтирована, но ядру, безусловно, нужно запустить процесс инициализации. Для этого Slax содержит базовую файловую систему в файле initrfs.img - это сжатый архив CPIO с некоторыми каталогами и файлами внутри, включая основные инструменты Linux (команды) и требуемый init.

Поэтому после того, как ядро успешно запущено и полностью контролирует ваш компьютер, последняя задача, которую оно выполняет - найти упомянутый архив CPIO в памяти (как вы помните, он был загружен из файла initrfs.img загрузчиком syslinux), распаковать его в область памяти, которая действует как временная корневая файловая система, называемая initramfs, и выполнить оттуда процесс инициализации /init.

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

Наличие временной корневой файловой системы в initramfs не является идеальным, поскольку она не поддерживает системный вызов pivot_root - важная операция, которая будет использоваться позже в процессе загрузки. Нам нужно переключиться с вспомогательной initramfs на полоценную корневую файловую систему. Для этого временный init сначала монтирует файловую систему tmpfs в директорию /m, перемещает туда все файлы и каталоги, включая сам скрипт init, и использует switch_root, чтобы сделать этот tmpfs/m новым корнем и перезапустить сам init там.  Звездочкой обозначен каталог, который перемещается.

initramfs от имени пользователя root:
    (initramfs)
    /
    ├─── bin
    │    ├─── sh
    │    ├─── mount
    │    └─── ...
    ├─── dev
    ├─── mnt
    ├─── m (tmpfs) ★
    ├─── memory
    ├─── proc
    ├─── sys
    ├─── init
    └─── shutdown

initramfs после перехода в tmpfs:
(initramfs)
    /
    └─── m (tmpfs) ★
         ├─── bin
         │    ├───sh
         │    ├───mount
         │    └─── ...
         ├─── dev
         ├─── mnt
         ├─── memory
         ├─── proc
         ├─── sys
         ├─── init
         └─── shutdown

tmpfs после switch_root:
    (tmpfs) ★
    /
    ├─── bin
    │    ├─── sh
    │    ├─── mount
    │    └─── ...
    ├─── dev
    ├─── mnt
    ├─── memory
    ├─── proc
    ├─── sys
    ├─── init
    └─── shutdown

Как бы странно ни выглядело это действие в целом (у нас получилась та же структура каталогов, что и раньше, похоже, существенных изменений нет), на самом деле изменение значительное. С этого момента временная корневая файловая система находится на tmpfs вместо initramfs, и, таким образом, операция pivot_root будет доступна при необходимости в будущем.

Вы можете задаться вопросом, почему текущая корневая файловая система до сих пор помечена как временная. Это потому, что мы все еще находимся в самом начале этапа построения, и мы просто создадим полоценную рабочую корневую файловую систему позже, как будет объяснено ниже, путем объединения сжатых образов данных Slax в AUFS.

Поиск данных Slax
Прежде чем процесс init сможет начать поиск данных Slax на доступных устройствах, необходимо настроить рабочую среду. Файловые системы proc и sysfs монтируются в каталоги /proc и /sys соответственно. Некоторые важные драйверы ядра, такие как aufs, squashfs и loop, загружаются с помощью modprobe, а файлы устройств создаются в каталоге /dev командой mdev.

Как только устройства хранения становятся доступны через файлы устройств в /dev, в ход идет команда blkid для определения тех, которые могут быть смонтированы (которые содержат файловую систему, известную работающему ядру). Устройства проверяются (монтируются только для чтения в /memory/data/) один за другим, пока не будет найден рабочий каталог с данными Slax. Затем обрабатываются все файлы с расширением .sb (Slax Bundles - пакеты или модули Slax) - для каждого модуля создается каталог в /memory/bundles/, и они (по сути - сжатые файлы образов squashfs) монтируются в него.  На приведенной ниже диаграмме содержимое squashfs выделено жирным курсивом.
    (tmpfs)
    /
    ├─── bin
    ├─── dev
    ├─── ...
    ├─── memory
    │    ├─── bundles
    │    │    ├─── 01-core.sb ................ < ───┐
    │    │    │    ├─── bin                         │
    │    │    │    ├─── etc                         │
    │    │    │    ├─── sbin                        │
    │    │    │    └─── ...                         │
    │    │    ├─── 02-xorg.sb ......................│...
    │    │    │    ├─── etc                         │  :
    │    │    │    ├─── usr                         │  :
    │    │    │    └─── ...                         │  :
    │    │    ├─── 03-desktop.sb ...................│..:...
    │    │    │    ├─── usr                         │  :  :
    │    │    │    └─── ...                         │  :  :
    │    │    └─── ...                              │  :  : точки
    │    ├─── data (точка монтирования диска slax)  │  :  : монтирования
    │    │    └─── slax                             │  :  : squashfs
    │    │         ├─── boot                        │  :  :
    │    │         ├─── changes                     │  :  :
    │    │         ├─── rootcopy                    │  :  :
    │    │         ├─── 01-core.sb ──── > ──── > ───┘  :  :
    │    │         ├─── 02-xorg.sb ....................:  :
    │    │         ├─── 03-desktop.sb ....................:
    │    │         └─── ...
    │    ├─── changes (пока пустой)
    │    └─── union (пока пустой)
    ├─── proc (точка монтирования procfs)
    ├─── sys (точка монтирования sysfs)
    └─── init

Объединение в AUFS
Различные части конечной корневой файловой системы теперь смонтированы только для чтения в отдельных папках в /memory/bundles. Основные системные утилиты и библиотеки Linux, такие как /bin/bash или /lib/ld-linux.so, находятся в /memory/bundles/01-core.sb/, файлы, относящиеся к среде рабочего стола, можно найти в /memory/bundles/03-desktop.sb/ и так далее. Объединение их в общую корневую файловую систему, которая будет доступна также и для записи, возможно только благодаря AUFS - объединяющей файловой системе, разработанной Junjiro Okajima. AUFS может принимать несколько папок (так называемые ветви) и объединять их в один каталог. Это именно то, что происходит дальше: разделенные части сливаются вместе с каталогом /memory/changes/ в объединенную файловую систему AUFS, которая монтируется в /memory/union.
    (tmpfs)
    /
    ├─── ...
    └─── memory
         ├─── bundles
         │    ├─── 01-core.sb ───────── > ──────┐
         │    ├─── 02-xorg.sb ..................│.......
         │    ├─── 03-desktop.sb ...............│......:........
         │    └─── ...                          │      :       :
         ├─── changes ──────── > ───────┐       │      :       :
         ├─── ...                       ˅       ˅      :       :
         └─── union < ═══════ < ═══════ < ───── < ─────┘ < ────┘
              ├─── bin
              ├─── etc            собранная AUFS
              ├─── mnt
              ├─── root
              ├─── sbin
              ├─── usr
              ├─── ...
              └─── var

Изменения
Каталог /memory/changes доступен для записи, поэтому все, что смонтировано AUFS в /memory/union также доступно для записи. Все новые или измененные файлы внутри AUFS помещаются в этот каталог после того, как система создаст или изменит их. Поскольку каталог для изменений находится в tmpfs (то есть в оперативной памяти), все новые и измененные файлы хранятся в оперативной памяти и, таким образом, теряются при перезагрузке.

Тем не менее, если Slax запускается с записываемого носителя, такого как USB-устройство или жесткий диск, он распознает это и монтирует перезаписываемый диск в /memory/changes/ до того, как он будет объединен с другими ветвями в AUFS, что фактически означает, что измененные и новые файлы будут храниться на загрузочном устройстве, а не в оперативной памяти, и перезагрузка не сотрет их. Эта функция называется "сохранением изменений" и может быть включена или выключена с помощью параметра меню загрузки.

Переключение с временной на рабочую файловую систему
На данный момент полностью записываемая конечная корневая файловая система была создана в /memory/union. Жизнь временного инициализирующего процесса подходит к концу. Он использует системные вызовы pivot_root и chroot для создания из /memory/union нового корня, перемещая временный корень tmpfs в /run/initramfs/ в новом корне. Звездочки на диаграммах ниже показывают, что и куда движется. Наконец, выполняется настоящий /sbin/init из корневой файловой системы AUFS и начинается загрузка операционной системы Slax.

Корень tmpfs перед системным вызовом pivot_root:
    (tmpfs) ★
    /
    ├─── ...
    └─── memory
         └─── union (aufs) ★★
              ├─── bin
              ├─── etc
              ├─── root
              ├─── run
              │    └─── initramfs (пустой)
              ├─── sbin
              │    ├─── ...
              │    └───init
              ├─── usr
              ├─── ...
              └─── var

aufs как новый корень файловой системы:
    (aufs) ★★
    /
    ├─── bin
    ├─── etc
    ├─── root
    ├─── run
    │    └─── initramfs (tmpfs) ★
    │         ├─── ...
    │         └─── memory
    │              └─── union (пустой)
    ├─── sbin
    │    ├─── ...
    │    └─── init <- выполняется
    ├─── usr
    ├─── ...
    └─── var

Добавление модулей в Slax на лету
Корневая файловая система доступна для записи, и мы можем установить новые программные пакеты обычным способом, распаковав их. Но есть еще возможность добавить новые файлы и каталоги в Slax на лету без установки каких-либо пакетов. Благодаря тому, что Slax работает с AUFS в качестве пользователя root, мы можем взять некоторую другую сжатую файловую систему squashfs, смонтировать ее в каталог, который находится за пределами дерева AUFS (например, в каталог /run/initramfs/memory/bundles/name.sb/, который находится на tmpfs), а затем выполнить команду remount, которая добавляет вновь смонтированный каталог в AUFS как новую ветвь.

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

Точно так же мы можем удалить ранее добавленную ветку AUFS (смонтированные squashfs) из корня aufs другой командой remount. Файлы, которые были частью ветки, моментально исчезнут из системы, что фактически удаляет пакет.

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

В тот момент, когда init считает, что можно выключить систему, вместо этого Slax переключается обратно на initramfs (это автоматически обрабатывается systemd) и выполняет скрипт завершения работы /run/initramfs/shutdown. Это сценарий, который заботится о размонтировании оставшегося смонтированного диска, с которого запустился Slax, чтобы загрузочное устройство было безопасно извлечено. В конце компьютер перезагружается или выключается в зависимости от того, что пользователь намеревался сделать.