главная->Тион-Про-270->Из чего состоит дистрибутив 
    

Картинок пока не будет, т.к. некогда, попробую всё объяснить текстом.

Итак, формально, Linux - это его ядро. Однако, мы все в повседневной жизни сталкиваемся с разными "дистрибутивами" этой операционной системы. Часто заставить программу работать не под тем дистрибутивом, для которого она была разработана - задача нетривиальная.

Linux во встраиваемых системах обладает теми же недостатками. В наш (встраиваемый) дистрибутив входят:
1) Загрузчик (в нашем случае U-Boot).
2) Собственно ядро.
3) Корневая файловая система с необходимыми утилитами.

U-Boot умеет очень много всего, но в 99% случаев вся его деятельность заключается только в инициализации системы (настройке Clock-ов, тестировании памяти может быть), загрузке ядра и передачи управления ему. В оставшемся проценте случаев U-Boot используется для перепрошивки всего устройства: загрузке новых образов.

Те, кто программировали для микроконтроллеров и знают, что такое бутлодер, могут представить, что загрузчик линукса (здесь и далее речь будет идти о U-Boot-e) это просто бутлодер. В любом случае, полезно представлять себе, что определённый диапазон адресов флешь-памяти занят именно U-Boot-ом. Стирать информацию по этим адресам не желательно, т.к. восстановить U-Boot без специальных вспомогательных устройств иногда невозможно. Тион-Про-270 как раз тот случай.

Второй обязательный компонент любого дистрибутива Linux - это ядро. С нашей точки зрения ядро - это еще одна прошивка (образ) в дополнение к загрузчику. Если опять вернуться к сравнению с проектами, где есть бутлодер, то если рассматривать U-BOOT как аналог бутлодера, то ядро будет аналогом основной прошивки, ради которой делается весь проект. С точки зрения U-BOOT-а - ядро - это массив байтов, который может находиться где-то во флешь памяти или в файле в файловой системе или прийти по сети. Задача U-BOOT-а - взять этот массив, положить по заданным адресам и передать ему управление.

Третий обязательный компонент - корневая файловая система. Обязательна она потому, что весь Linux построен вокруг файловой системы - так сложилось исторически. Практически любые операции - это операции над файлами. Встраиваемые системы отличаются от больших тем, что у них ограничены ресурсы, поэтому КФС может занимать всего лишь несколько мегабайт.

С нашей точки зрения КФС это ещё один образ, который также прошивается во флешь-память. На работающей системе часть данных (или все данные), относящихся к файловой системе будет храниться в ОЗУ. Это говорит о том, что в общем случае мы должны побеспокоиться о том, чтоб корректно завершить работу, закрыть все открытые файлы и т.д. С другой стороны, т.к. на неработающей системе образ файловой системы хранится в энергонезависимой памяти, значит мы можем его считывать, записывать на другие копии нашей системы, т.е. рассматривать его как еще одну прошивку, которая отвечает за хранение всего, что есть на КФС.

В embedded linux,обычно U-Boot, ядро и КФС это просто три образа, которые не должны пересекаться в памяти. Для примера, вот вам возможное распределение адресов в Тионе-Про-270:
АдресаОписание того,что находится в данной области
0x00000000
0x0003FFFF
U-Boot
0x00040000
0x0007FFFF
Переменные окружения U-Boot-a
0x00080000
0x0047FFFF
Linux-kernel
0x00480000
0x02000000
Root FileSystem
0xA0000000
0xA4000000
RAM



Используются технологии uCoz