Особености 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"
13.02.2018 [10:13:19] Виктор


Установил удалённо для "попробовать" xfe
Попользовался. Решил избавиться, - ребутнулся без предварительного ввода filetool.sh -b.
Но после загрузки и команды df -h вижу в последних строчках

/dev/loop71 668.0K 668.0K 0 100% /tmp/tcloop/xfe-common
/dev/loop72 672.0K 672.0K 0 100% /tmp/tcloop/xfe

Как удалить через Putty ненужный мне пакет?
Можно ли "чистить" папку "tmp"?

14.02.2018 [06:15:57] Автор статьи

В дирректории /tmp/tcloop находятся лишь точки монтирования ваших расширений. Сами же файлы хранятся на загрузочном диске в папке tce/optional.
Для безопасного удаления расширения со всеми его зависимостями из консоли воспользуйтесь командой tce-audit delete xfe.
Для случаев установки пакетов "на попробовать" я написал себе небольшой шелл-скрипт, который как раз и устанавливает расширения в дирректорию /tmp/ и после перезагрузки от этих файлов не остается и следа. Также для удаления можно использовать это шелл-скрипт, разница с tce-audit delete лишь в том, что после удаления расширения не требуется перезагрузка вашего ПК.

21.02.2018 [03:37:19] Игорь

Добрый день!
Подскажите, как можно установить fullHD разрешение?
Xvesa показывает что умеет только 1024x768.
Установка xf86-video-intel.tcz проходит неудачно- в момент установки появляется черный экран и на этом все останавливается.
В какую сторону копать?
Мое предположение, что автоматом выбирается другой коннектор, как и где можно выбрать необходимый?

21.02.2018 [06:06:21] Автор статьи

Иксы на TCL изначально не могут обеспечить изображение выше 1280х1024х24. Это ограничено максимальным значением фреймбуфера. Однако если вам не критичен размер установленного дистрибутива установите пакет Xorg-7.7 Он позволит вам работать с разрешениями экрана более чем 1280х1024. Насчет fullHD не знаю, но у меня при 1680х1050 иксы работали корректно.

22.02.2018 [04:40:24] Игорь

Спасибо за ответ.
Xorg-7.7 установил, запуск в onboot.lst прописал.
Единственное что недопонял, где именно настраивается разрешение?)
Xrandr показывает максимум 1024х768, в etc/X11 никакого xorg.conf не нашел, чтобы прописать данное разрешение...

04.03.2018 [15:13:46] Автор статьи

Зачем такие сложности? Просто запустите xsetup и выполните настройку разрешения экрана и мыши под свои потребности.


Оставить комментарий

Имя:

Сообщение: