06.12.2023

Почему я выбираю неубиваемый модульный дистрибутив Linux.

logo

Свой первый компьютер, я приобрёл в далеком 2007 году. Это был третий «пенёк», с 512 мегабайт оперативной памяти , и с жестким диском размером в 20 гигабайт. На борту этой машины ,была установлена Windows Xp, которая в силу малого размера оперативной памяти, обладала плохой отзывчивостью, иногда подвисала, особенно во время сёрфинга по сети интернет.

История.

Я стал искать возможные решения, обходя первое же очевидное, покупку дополнительной оперативной памяти, и случайно набрел на русскоязычный форум с операционной системой основанной на ядре linux, это был дистрибутив PuppyRus2.17 . Эта находка впоследствии перевернула всю мою компьютерную жизнь, открыв дверь в увлекательнейший мир Linux . На то время Web был другим, не было JavaScript-a, и всяких этих фреймворков. И какого было мое удивление, что 512 мегабайт оперативной памяти, как ни странно этой операционной системе хватало, за глаза! Не сказать что не было подтормаживаний, во время серфинга по сети, а вот в остальном по сравнению c Windows Xp, система была очень отзывчива, и все программы открывались очень быстро, компьютер ожил. Более того в комплект поставки дистрибутива, были браузер, текстовой редактор, медиа плеер. Я начал полноценно работать на этой машине. Эта система была русифицированной версией Puppy Linux2.17 , более того из репозитория, англоязычной правда версии дистрибутива, можно было скачать , почти всё необходимое для повседневной работы. Вот краткая выдержка из wiki здравствующего и ныне форума https://forum.puppyrus.org :

Puppy Linux – это семейство упрощенных, а потому компактных и быстрых, линукс систем, ориентированных для домашнего использования. Это позволило значительно упростить состав системы и уменьшить размер дистрибутива. Несмотря на свой размер (есть дистрибутивы, размер которых менее 100 мБайт) они обладают достаточно полным пользовательским функционалом, это быстрая и легкая операционная система, которая работает практически на любых, даже устаревших компьютерах.
PuppyRus (Папирус – разговорное) – Изначально это были локализованные для русскоязычного пользователя дистрибутивы Puppy Linux.. По этой ссылке https://wiki.puppyrus.org/puppyrus/history ,вы можете прочитать об истории создания данного дистрибутива. Но в последствии , разработчиками PuppyRus был сделан акцент на модульность дистрибутива .На тот момент программное обеспечение в дистрибутив поставлялось посредством pet пакетов. Pet пакет по сути своей являлся архивом, в котором находился сам софт, а также специальный файл с описанием для разрешения зависимостей. А также при помощи sfs модулей, который только начинал своё развитие. Разработчики PuppyRus объединили свойства pet и sfs и создали новый формат модулей, способный как подключать модули так и устанавливать если возникла такая необходимость, этот формат был назван PFS . Подробней о нем я расскажу чуть ниже. И так в конечном итоге появился PuppyRus-A (PRA).

PuppyRus-A (PRA)самостоятельная сборка с использованием замороженного на определеный период репозитория Arch linux . Далее об этом можно прочитать подробнее.

В рамках работы над дистрибутивом PuppyRus был разработан формат модулей: PFS а также pfs-utils набор утилит для работы с модулями.

Ссылка на wiki по pfs-utils : https://wiki.puppyrus.org/puppyrus/pr218/pfs4

Благодаря pfs-utils в дистрибутив было привнесено удобство работы с модулями. Удобное сохранение сессии, с возможностью отката изменений, в случае если что-то пошло не так. Впоследствии разработчиками проекта puppyrus.org был создан репозиторий с модулями наиболее востребованных программ , а также написана графическая утилита, для их поиска в сетевом репозитории, скачивания и «установки» (вернее их подключения ) на компьютер.

И снова процитирую вики проекта:

Функционал pfs-utils

    •  

Создание модуля из каталога (и наоборот)

    •  

Подключение (отключение) модуля или любого squashfs. Опционально с копированием в память

    •  

Склейка (расклейка) составного модуля

    •  

(Де)инсталляция модуля (распаковка в корень)

Мотивация.

В момент открытия модульных дистрибутивов я был очень ими удивлён.

Привожу плюсы использования модульных дистрибутивов, в отличии от обычных Full.

Процитирую wiki:

    •  

Защищенность от вирусов и других угроз из интернета. (тут скорее не отличие, а подтверждение сохранения этого функционала)

    •  

Простота установки на CD или флэшку – достаточно переписать файлы из ISO в корень загрузочной флэшки (frugal установка).

    •  

Простота установки приложений – достаточно скопировать модуль нужного приложения в папку.

    •  

Высокая скорость работы приложений, т.к. система загружается и функционирует в оперативной памяти (copy2ram).

    •  

В минимальной конфигурации пригоден для устаревшего железа.

    •  

Сохранение сессии в модуль, что позволяет получить “неубиваемую” систему – после перезагрузки вы снова имеете сохраненный вариант системы.

    •  

Возможность носить Ваш дистрибутив на флэшке с собой и запускать его на любом компьютере.

    •  

Экономия ресурса батарей, дисков, флэшки. Все в RAM. Обращенние к дискам и потребление батареи минимально.

    •  

“Горячее” подключение нового ПО без перезагрузки системы.

С тех пор утекло много воды, многое поменялось, изменился Web и оборудование, я приобрел более мощную машину… в итоге от модульных систем , я перешел на «большие» linux-ы, они мне показались удобней, но и от «маленьких» я не отказался, они прочно заняли нишу спасательных систем.

Но на сегодняшний день, я стал переосмысливать использование «больших» дистрибутивов, в пользу модульных. В больших дистрибутивах наблюдается неприятная тенденция, к разрастанию софта, так как «большие» пытаются охватить всё и вся , и покрыть все потребности пользователей, а пользователи разные, они могут быть корпоративными ,как и домашними, то есть целевая аудитория излишне широка. Потому разработчики пред устанавливают в дистрибутив огромное количество программ и библиотек, и в эту причину отзывчивость системы ухудшается. А PuppyRus приучил меня к тому что компьютер должен работать быстро. Мало того стали разрастаться рабочие среды. Неожиданно для себя открыл что моему сердцу стали милее оконные менеджеры, либо те рабочие среды которые не обросли . Так как они нетребовательны к ресурсам системы, а также нашел приемлемым компромисс между потерей некоторого удобства настройки (большинство WM настраиваются из конфигурационных файлов) . Я пришел к тому что настало время вернутся к истокам. С того что я начинал, к модульным дистрибутивам, в которых можно подключить ,либо отключить самое необходимое, вернуть себе контроль над системой, когда всё летало от прикосновений и было на кончиках пальцев.

Дистрибутив.

Предлагаю вашему вниманию дистрибутив LFA20.08-21.04-x86_64.iso , который собран с использованием замороженного на 20.08 репозитория Arch linux ссылка об этом на wiki , https://wiki.puppyrus.org/setups/pacman?&#arch_rollback_machine_%D0%B7%D0%B0%D0%BC%D0%BE%D1%80%D0%BE%D0%B7%D0%BA%D0%B0_%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D1%8F

В апреле 2021 года PRA-Roll-20.08 переименован в LFA20.08 и переориентирован на FRUGAL:

О истории создания LFA можно почитать тут, https://wiki.puppyrus.org/puppyrus/pr3

Считаю также полезным привести для читателя ссылку на документацию дистрибутива

https://wiki.puppyrus.org/puppyrus/pra

Дистрибутив собран любителями если вы найдете какие либо ошибки или шероховатости прошу сообщить об этом на форум https://forum.puppyrus.org/index.php?topic=23358.msg176558#msg176558

Состав системы:

браузер,

медиаплеер,

аудио плеер,

программа для чтения книг,

программа для просмотра PDF,

графический редактор,

программа для просмотра роликов с youtube,

торрент клиент,

программа для загрузки файлов.

И много других утилит.

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

Хочу отметить что в системе ядро-pf , yad , vala-panel -от русскоязычных разработчиков, что не может не радовать. Дистрибутив содержит 3 варианта initrd, разных по сложности и функционалу: PRA-Porteus ( https://wiki.puppyrus.org/soft/porteus-initrd ), rootaufs2( https://wiki.puppyrus.org/soft/arch-initrd-rootaufs2 ), UIRD ( https://github.com/neobht/uird#uird—unified-init-ram-disk-system )

Понятия и термины.

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

FULL — полная установка

FULL – стандартный тип установки большинства linux дистрибутивов.

    • Требует отдельного раздела носителя, отформатированного в linux (ext3-4) – совместимую файловую систему (не fat и не ntfs).
    • Устанавливается специальным инсталятором.
    • Все изменения сохраняются в режиме реального времени

FRUGAL – упрощённая установка

Frugal – расширенный вариант Live_CD.

    •  

Установка копированием нескольких файлов (squashfs-модулями) на раздел с другой системой (даже windows) и любой файловой системой

    •  

Возможность нескольких сохранений состояний и переключения между ними

    •  

Возможность модификации установки (смена DE и софта) изменением состава модулей

    •  

Возможность работы полностью в RAM с любого носителя (CD, flash, hdd, сеть ) отключением загрузочного носителя

    •  

Достигается использованием AUFS

Обеспечивает:

    •  

Работу с squashfs-модулями (.sfs .pfs .xzm), как постоянно подключенными, так и «на одну сессию», так называемое «горячее подключение\отключение».

    •  

Повышенную безопасность, так как sfs-файлы, будучи архивами, подключаются к системе «только для чтения» (ro), что исключает повреждение их содержимого случайными действиями пользователя. Такой файл можно только намеренно переименовать или удалить, но и восстановить не составит труда. Просто копируем на место удаленного sfs его «эталон» с CD.

    •  

Некоторые дистрибутивы позволяют загрузить часть или все модули в память (RAM), что дает дополнительное ускорение работы, экономию заряда батареи и ресурса HDD

    •  

Возможность переделать RW сохраненку в RO squashfs модуль – «Неубиваемый» Linux

не стоит пугаться таких слов как squashfs или AUFS

Squashfs (.sfs) — сжимающая файловая система для GNU/Linux, предоставляющая доступ к данным в режиме «только для чтения». Squashfs используется Live CD дистрибутивами linux ,совместно с файловыми системами, образующими каскадно-объединённое монтирование, такими как AUFS.

AUFS – каскадно-объединённое монтирование для файловых систем Linux

AUFS позволяет собрать итоговую файловую систему как слоеный пирог.

    •  

В качестве слоя может быть squashfs модуль, файл с файловой системой внутри (например, сохраненка), раздел файловой системы, RAM_drive

    •  

Любой из перечисленных объектов может быть в любое время подключен выше (файлы «слоя» заместят повторяющиеся файлы «пирога») или ниже

    •  

Количество возможных слоев выбирается при компиляции ядра. Дефолтное значение 128. Увеличение может привести к замедлению работы

    •  

Возможно и отключение слоя (если его файлы не заняты)

    •  

Как правило, во всех системах (Puppy), использующих AUFS, в самый верхний слой подключается «сохраненка». Слой допускающий не только чтение но и запись и сохраняющий изменения после рестарта. В качестве «сохраненки» можно использовать RAM_drive, но тогда изменения пропадут после рестарта.

Откуда берем дистрибутив.

Дистрибутив следует скачать отсюда http://file.puppyrus.org/users/pra64/iso/lfa20.08-21.04-x86_64.iso

Если вы пользователь linux советую его скачать в домашний каталог. Впоследствии это поможет вам при его установке.

Скачали? Ну что же ,приступим к его установке. Для того чтоб установить дистрибутив надлежит отформатировать флешку.

Установка.

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

Установка из под Windows.

Для установки LFA потребуется флэшка 4-8 Гб, больше вряд-ли понадобится. Чтобы не путаться с файлами, очистите флэшку от всего содержимого, можете даже отформатировать. Нам потребуется только место, равное размеру образа дистрибутива + 300-500 мегабайт на файл сохранения настроек – итого на флэшке примерно 1 Гб будет задействован под LFA , остальное пространство может использоваться для хранения чего угодно, т.е. флэшку можно использовать по прямому назначению. Файловая система на флешке fat32 или ntfs.

Все работы по подготовке флэшки будем делать в среде Windows (в Linux тоже можно). Нам понадобится любая программа, позволяющая раскрыть образ (7-zip, UltraISO, Total Commander с подключенными плагинами и т.п.). Все, что нам нужно, мы возьмем внутри исошника или создадим сами. Найдем в исошнике папку win вот по этому пути: LFA20.08-21.04-x86_64.iso\boot\grub4dos\install\win и перепишем ее в корень флэшки. Из корня перепишем на флэшку файлы grldr и menu.lst. Содержимое флэшки на этом этапе выглядит так:

cart1

Теперь сделаем флэшку загрузочной. Работать нужно с правами администратора!!! На флешке запустим файл /win/grubinst_gui.exe, выбираем в верхнем окошечке свою флешку (не перепутайте с hdd и ориентируйтесь по размеру!)
UPD: Если хотите ускорить загрузку с флэшки, то установите флажки «No backup MBR», «Disable PrevMBR» и введите 0 в поле «Timeout»

cart2

получаем вот такое окно:

cart3

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

1. прочитайте сообщение об ошибке, допишите предложенный ключ в окошко «Extra» и попробуйте еще раз

2.  не сработало в Win7, но легко получилось в WinXP

3.  получилось после форматирования флэшки утилитой HP USB Disk Storage Format (найдено на просторах сети)

4.  если форматирование не помогло, очистите флэшку командой dd, подробно здесь

5.  помогло, если поставить флэшке признак boot в программе gparted в Ubuntu (выбрать раздел, управление флагами, поставить галочку boot).

6.  в среде Win сделать флэшку активной можно встроенной утилитой diskpart из командной строки или внешним ПО. Такая флэшка в Windows (управление дисками) покажет признак раздела «активен». Почему-то grub иногда на некоторых флэшках этого не делает. (гуглите и найдете!!).

(Вместо diskpart можно применить встроеное в Windows 7 средство управления дисками

.Открыть эту программу можно несколькими способами:

Простейший — нажимаем правой кнопкой по строчке Компьютер в меню Пуск — выбираем пункт Управление — в новом окне выбираем Управление дисками.

Открываем Панель управленияАдминистрированиеУправление компьютеромУправление дисками.

Нажимаем ПускВыполнить (или сочетание клавиш Win+R) — вводим в открывшемся окне diskmgmt.msc — нажимаем ОК.

Выбрать флэш носитель вызвать правой кнопки мыши контекстное меню диска, и нажать ,сделать диск активным )

7.  запишите iso-образ на CD, загрузитесь с него и, работая в системе, создайте загрузочную флэшку (пуск-система-фругал установка).

8.  воспользуйтесь программами UltraISO или Rufus, они могут форматировать и создавать загрузочные флэшки.

(Инструкция для создания загрузочной флешки с LFA из под Windows взята отсюда https://wiki.puppyrus.org/users/sewar/start1 )

Установка из под Linux.

Для подготовки флэш носителя из под Linux, удобней всего флэшку отформатировать с помощью Gparted, файловая система может быть любая, но тут есть нюансы,

и я остановлюсь на них немного подробнее.

Если вы выберите fat32 то вы не сможете присвоить права на исполнение *.sh скриптов установки загрузчика, так как fat32 не поддерживает этот атрибут,применимо к *.sh скриптам.

То есть если вы желаете применить *.sh скрипт установки загрузчика который вы найдете на флешке, по пути ~/my-flash/boot/grub4dos/install/linux/ext4,

,после копирования файлов операционной системы из образа, то надлежит выбрать для форматирования ext3 или ext4. Можно выбрать для форматирования и fat32, для флэшки он более предпочтительнее, так как fat32 лишен журналирования, и в эту причину к флэшке меньше обращений, и это благоприятно влияет на её долговечность, но в последствии это лишит возможности использовать более продвинутый метод сохранения сессии (в каталог). Но если вы выбрали форматирование флешки в fat32, у вас так же остаётся возможность сохранения сессии. Разработчики предоставили нам возможность сохранения сессии в модуль, для начала это самый понятный и простой метод сохранения сессии. Но отмечу, что сессию можно сохранять и в каталог, либо в файл, но для этого нужно выбрать при форматировании файловою систему linux, и более того после этого необходимо править конфигурационный файл grub4dos, menu.list, на предмет указания опции changes в которой указывается путь каталога сохранения, либо файла сохранения dat. Я так же останавлюсь подробнее на этом в следующей статье.

Но как же быть с атрибутом присвоения прав дляfat32ведь как я говорил выше к sh скриптам он не применим . А для того что бы я ответил на этот ваш вероятный вопрос, предлагаю таки выбрать для форматирования fat32, и после окончания форматирования ,зайти в контекстное меню раздела Usb носителя, в Gparted , и в подпункте «присвоить флаг» , присвоить уже флаг «boot», поставив соответственно галочку напротив него. После успешного применения этой операции, следует закрыть Gparted. Далее надлежит извлечь флэшку, и пере подключить её опять (это уже мои шаманские действия), далее открываем терминал , и вводим первую команду.

sudo fdisk -l

терминал выдаст в ответ

Устр-во Загрузочный Start Конец Секторы Size Id Тип

/dev/sdb1 * 2048 15814655 15812608 7,6G b W95 FAT32

/dev/sdb1 может принять вид как /dev/sdс1 либо /dev/sde1, при помощи команды

sudo fdisk -l

мы определили какое имя приняло наше устройство, в моем случае оно определилось как /dev/sdb1 и далее я буду использовать это имя

Теперь нам нужно смонтировать нашу флэшку, вводим команду в терминале

sudo mkdir -p my-flash && sudo mount /dev/sdb1 my-flash

Система предложит диалог для ввода пароля, после чего в домашнем каталоге создаст директорию с именем my-flash и подключит флэшку в эту директорию.

Теперь мы должны примонтировать исо образ LFA20.08-21.04-x86_64.iso в каталог LFA-iso для этого мы должны его создать вводим команду в терминал

sudo mkdir -p LFA-iso && sudo mount -o loop LFA20.08-21.04-x86_64.iso LFA-iso

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

sudo cp -a ~/LFA-iso/* ~/my-flash/

после переходим в каталог, где хранится установщик загрузчика grub4dos, для этого вводим команду в терминал:

cd ~/my-flash/boot/grub4dos/install/linux/ext4

если вы выбрали при форматировании флэшки , файловую систему linux, присваиваем атрибут на исполнение скрипту grub4dos-wee-install.sh, командой

sudo chmod +x ./grub4dos-wee-install.sh

и устанавливаем загрузчик, командой:

sudo ./grub4dos-wee-install.sh

либо другой командой, в случае если вы вбрали fat32:

sudo ./bootlace.com –time-out=0 /dev/sdb

я предпочитаю вторую…

данная команда установила загрузчик и теперь мы получили загрузочную флэшку с LFA20.08-21.04-x86_64.iso

В следующей статье мы научимся,

правильно настраивать конфигурационный файл grub4dos, menu.list,

как работать с модулями,

рассмотрим более подробней способы установки дополнительного софта,

а также расмотрим структуру дистрибутива LFA20.08

Продолжение следует…

(использованы материалы из wiki https://wiki.puppyrus.org/start )

Статья написана с помощью участников проекта puppyrus.org , за что им сердечное человеческое спасибо. В написании статьи принимал участие и я, Vlad-totiks.

cart2

А на этом сегодня все. Надеюсь данная статья будет вам полезна.
Журнал Cyber-X

Источник.