Особености TCL или Как Это Работает. Часть 1.
В отличии от других дистрибутивов Linux, в том числе и минималистичных, для которых режим Live-CD является лишь ознакомительным, Tiny Core Linux работает в ОЗУ штатно. Это значит что в самом начале загрузки Tiny Core Linux создает образ диска в RAM памяти, затем копирует туда само ядро системы и установленные расширения, а после распаковывает бэкап-архив. Таким образом ядро и приложения TCL постоянно находятся и работают в оперативной памяти. Отсюда вытекает несколько очевидных фактов:
- Из-за своей минималистичности время загрузки/перезагрузки OC исчисляется секундами.
- OC работает очень шустро. Задержки на файловые операции "запись-чтение" минимальны.
- Нечастые операции записи-чтения на сам носитель (флешку) во время бэкапа не сокращают срок жизни флеш-накопителя.
- Для работы TCL требуется чуть больше RAM, ровно на размер самой ОС и загружаемых расширений.
- В процессе работы TCL необходимо следить за утечкой памяти, и применять меры по удалению временных и лог-файлов.
К последнему факту необходимо отнестить сособенно серьезно. Со временем система начинает обрастать всяческими кеш- и лог-файлами, и если не принимать меры по их своевременному удалению, файлы заполнят всю доступную оперативную память. Это приведет к нестабильности системы а затем и аварийной перезагрузке с потерей всех несохраненных данных.
Если же подходить к пониманию принципа работы расширений TCL более детальней, то эта система поддерживает три способа "установки" приложений. Облачный, монтирование и копирование.
Облачный. Этот режим используется всеми дистрибутивами при загрузке системы в качестве LIVE-CD когда возможность записи файлов на носитель отсутствует. В этом случае все приложения копируются в оперативную память вашего ПК и после перезагрузки бесследно исчезают. Облачный режим использует ОЗУ по максимуму.
Монтирование. Файл *.tcz - ни что иное как образ приложения в файловой системе squashfs. Tiny Core Linux обращается к файлам приложений посредством символических ссылок на смонтированые tcz-образы, не копируя сами файлы в ОЗУ. А поскольку squashfs предназначена "только для чтения", то никакого риска "износа" вашего FLASH-накопителя нет. Единственное чем жертвует пользователь - более медленный запуск приложений. Ведь чтение всех необходимых файлов происходит с внешнего носителя. Этот режим наиболее предпочтителен для большинства случаев. TCL при этом использует минимум ОЗУ для хранения расширений.
Копирование. В этом случае все файлы расширений копируются напрямую в ОЗУ, откуда потом и запускаются. Этот режим отличается максимальным быстродействием и "отзывчивостью" системы, однако требует некоторого количества оперативной памяти для хранения файлов. Чтобы задействовать этот режим, необходимо создать файл-флаг /etc/sysconfig/tcedir/copy2fs.flg который и будет сообщать системе в процессе загрузки о необходимости использовать режим "копирования".
После cоздания лоадером RAM-диска, процесс загрузки происходит в следующей последовательности:
1. Загрузка ядра core.gz. Это то самое ядро, которое мы указывали в процессе установки TCL. После чего на RAM-диске появляется "чистая" система со стандартными для Linux-подобных систем директориями:
/
bin/
dev/
etc/
home/
lib/
mnt/
opt/
proc/
root/
run/
sbin/
sys/
tmp/
usr/
var/
Пару слов о некоторых папках, с которыми придется иметь дело во время работы с TCL:
dev - директория содержащая образы всех распознаных системой устройств. Грубо говоря это некое подобие диспетчера устройств в windows.
home - домашняя папка пользователей. Папка для собственных нужд.
mnt - папка для смонтированых устройств. В частности для дисков. В Linux-подобных операционных системах накопители (диски) необхоимо монтировать,
чтобы увидеть их содержимое. После загрузки Tiny Core Linux нам будет доступен пока только один смонтированый раздел - наша заргузочная флешка.
opt - Папка для хранения настроек и скриптов системы. В будущем мы часто будем к ней обращаться.
tmp - Место хранения временных файлов. Например файлы PHP-сессий.
usr - Дирректрория для хранения конфигурационных файлов, лог-файлов, скриптов и других данных принадлежащих устанавливаемым программам.
Во все остальные директории лучше не лезть, ничего туда не копировать и не удалять.
2. Загрузка образов установленых пакетов. В Tiny Core Linux каждое приложение представляет собой единичный файл-образ с расширением *.tcz. Такая структура очень схожа с PORTABLE версиями программ для windows, которые зачастую собраны в единый исполнительный файл-программу. Образы всех установленных приложений хранятся в директории tce/optional/, на USB-носителе. В процессе загрузки TCL приложения монтируются (или копируются) в систему, но не все подряд, а в соответствии со списком tce/onboot.list. Это замечательное свойство TCL позволяет легко исключать те или иные приложения из загрузки, если в них пока нет необходимости или эти программы работают нестабильно. Достаточно открыть файл tce/onboot.list в любом текстовом редакторе и удалить оттуда соответствующие строки. К слову, таким образом можно и "устанавливать" приложения, если у вас есть исходный tcz-файл. Для этого необходимо скопировать его в папку tce/optional/ а затем добавить его имя в список загружаемых расширений. Однако такой способ "установки" крайне нежелателен из-за возможного наличия "зависимостей" у расширения, о которых можно попросту не знать. Более корректным будет использование специального установщика "tce". О нём речь пойдёт чуть позже. Но в ряде случаев, подобный "хак" помогает обходить некоторые проблемы стандартной установки. Если только вы абсолютно уверены в том что делаете.
Помимо tcz-файлов в директории tce/optional/ существуют файлы типа *.dep. Это списки зависимостей (dependence - зависимость) для некоторых расширений. Всё дело в том, что часть приложений требуют для своей работы установку определенных расширений. Это могут быть как отдельные библиотеки, так и готовые самостоятельные сервисы. По этой причине между некоторыми расширениями существует связь - "зависимость", и dep-файл - не что иное как список этих связей. Вы можете в этом убедиться, если посмотрите на его содержимое в любом текстовом редакторе. Загрузчик также учитывает эти списки зависимостей и рекурсивно обходит их копируя приложения на RAM-диск даже если эти расширения не указаны явно в tce/onboot.list.
3. Загрузка пользовательских настроек. Так как ни само ядро, ни файлы расширений не претерпевают каких либо изменений в процессе настройки и эксплуатации TCL, то после загрузки системы она по прежнему остается "чистой". Ровно такой, какой была в самый первый момент создания. Поэтому на следующем этапе запуска Tiny Core Linux происходит извлечение сохраненных пользовательских файлов из архива tce/mydata.tgz.
4. Выполнение команд автозапуска. Также как и в windows есть AutoRun, в TCL предусмотрен список команд выполняемых в момент загрузки. Эти команды могут выполнять самые разнообразные функции. От запуска сервисов и приложений, до применения специфичных настроек самой системы. Такие списки команд называются shell-скриптами (или в разговорном сленге просто "шелл"-ами). Шелл автозапуска системы Tiny Core Linux находится в папке opt/ и называется bootlocal.sh. Если его открыть в текстовом редакторе вновь установленной TCL, он будет пуст. Никаких команд автозапуска пока не назначено, но в процессе установки расширений и их настройки мы будем постепенно добавлять туда соответствующие строки.
Помимо скрипта bootlocal.sh в директории opt/ есть второй файл bootsync.sh, который тоже причастен к автозапуску. Разница только в том, что система будет ждать окончания выполнения ВСЕХ команд в скрипте bootsync.sh, и только потом продолжит загрузку (т.е. выполнение шелла будет синхронным). Команды из bootlocal.sh выполняются асинхронно, в фоновом режиме и не задерживают процесс запуска TCL.
ранее: "Коды загрузки. Bootcodes"далее: "Особености работы. Часть 2"Оставить комментарий