|
Быстрая загрузка Linux - возможно ли? |
|
|
|
Jun 18 2009, 14:48
|
Местный
  
Группа: Свой
Сообщений: 358
Регистрация: 27-06-06
Из: Новосибирск
Пользователь №: 18 410

|
Во многих встраиваемых устройствах требуется максимально быстро прийти к рабочему состоянию после подачи питания или перезагрузки. Обычный линукс грузится довольно таки медленно, пока он прогрузит все драйвера, проходит секунд 10-20, если не больше. Можно ли сделать так, чтобы образ работающего (полностью загруженного) линукса со всеми драйверами сохранить во флеш-памяти и при старте системы просто копировать этот образ в оперативную память? Т.е. сделать аналог Hibernate в Windows. Хотелось бы добиться времени старта в 1-2сек максимум. Если да, то кто будет инициализировать железо в таком случае (видео, сеть, UART...), в компе это делает частично BIOS, частично сама Windows? Использовать планирую ucLinux, но, по идее, особой разницы быть не должно.
|
|
|
|
|
 |
Ответов
|
Jun 18 2009, 18:20
|
Местный
  
Группа: Свой
Сообщений: 358
Регистрация: 27-06-06
Из: Новосибирск
Пользователь №: 18 410

|
Использовал демобоард на RM9200 от Черкашина, линукс качал с его же сайта. Я не спец в этом, да и давно это было, но там похоже что распаковывалось все из сжатого образа. Время загрузки было действительно большое, причем сама распаковка - секунд 5, потом потихоньку запускался линукс, выводя в консоль строки.
Если даже прикинуть, пусть образ будет хранится в отдельной последовательной флешке (SD карта). Скорость чтения с нее пусть 10МВ/sec. За 1 секунду 8MB образ можно закачать в SDRAM. Либо вообще, хранить линукс в NAND флешке, с него же пусть и работает. Тогда даже копировать ничего не надо. Вопрос в том, можно ли такое проделать с линуксом?
Кстати, есть автонавигатор. Там стоит 64М NAND флеши и 64М SDRAM. ОС - WinCE 5.0, полность грузится за 11 сек, картинка на экране рисуется через 3 сек. Из спящего режима вообще моментально выходит.
|
|
|
|
|
Jun 18 2009, 19:42
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Скорость чтения из SD вы сильно преувеличили если конечно не подразумеваете самые свежие навороченные чипсеты с повышеной частотой SD контроллера. Вообщем будет у вас в случае FAT не больше 4 МВ/sec. На NAND не намного больше. Еще сильно зависит от кривизны драйверов которые вам достанутся из дистрибутива на чип. Прога из NAND флеши выполняться не может, это не есть память с произвольным доступом. Для старта из памяти нужна NOR Flash. Ядро Линукса можно скомпилировать в конфигурации XIP (eXecution In Place) и без сжатия. Бутлодер надо будет подточить для этого. Кстати он тож время кой-какое забирает. Но самая досадная фигня в Линуксе это файловая система. Тут есть дилема. Либо вы делаете файловую систему быструю и в RAM, но тогда надо ее туда долго грузить из NAND или SD и получаете ее не персистентную, либо сразу запускаете драйвер какой либо файловой системы на Flash и стартуете файловую систему достаточно быстро, но потом имеете низкоскоростной доступ. Кстати не всякая файловая система на Flash быстро стартует, ибо особо хитрые компактные embedded системы начинают читать весь диск для постороения базы данных для wear leveling, соответственно старт откладывается. Еще у некоторых систем идет сжатие на лету при записи, тож тормоза дополнительные. Поскольку в Линуксе ничего без файловых операций не обходится, то скорость файловой системы на старте имеет большое значение. При объеме ядра где-то в 3 мега, файловая система будет минимум занимать 8 мег со всякими либами, busybox-ами и приложением. Кстати старт картинки на QNX- 0.5 сек. Стоит подумать  Цитата(Itch @ Jun 18 2009, 21:20)  Использовал демобоард на RM9200 от Черкашина, линукс качал с его же сайта. Я не спец в этом, да и давно это было, но там похоже что распаковывалось все из сжатого образа. Время загрузки было действительно большое, причем сама распаковка - секунд 5, потом потихоньку запускался линукс, выводя в консоль строки.
Если даже прикинуть, пусть образ будет хранится в отдельной последовательной флешке (SD карта). Скорость чтения с нее пусть 10МВ/sec. За 1 секунду 8MB образ можно закачать в SDRAM. Либо вообще, хранить линукс в NAND флешке, с него же пусть и работает. Тогда даже копировать ничего не надо. Вопрос в том, можно ли такое проделать с линуксом?
Кстати, есть автонавигатор. Там стоит 64М NAND флеши и 64М SDRAM. ОС - WinCE 5.0, полность грузится за 11 сек, картинка на экране рисуется через 3 сек. Из спящего режима вообще моментально выходит.
|
|
|
|
|
Jun 19 2009, 05:36
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(AlexandrY @ Jun 18 2009, 23:42)  Скорость чтения из SD вы сильно преувеличили если конечно не подразумеваете самые свежие навороченные чипсеты с повышеной частотой SD контроллера. Вообщем будет у вас в случае FAT не больше 4 МВ/sec. все Оптимисты вы тут  сомневаюсь что на RM9200 вы получите больше 1 мб/сек, а на небуферизованном посекторном чтении и того меньше - 100-150 кб/сек. Кстати - а зачем загрузчику вообще какая-то фс ? Цитата Но самая досадная фигня в Линуксе это файловая система. Тут есть дилема. Либо вы делаете файловую систему быструю и в RAM, но тогда надо ее туда долго грузить из NAND или SD и получаете ее не персистентную, либо сразу запускаете драйвер какой либо файловой системы на Flash и стартуете файловую систему достаточно быстро, но потом имеете низкоскоростной доступ. О - опять про фс  фс в рам требуется только для устаревшего initrd, в образе initramfs никакой настоящей фс нет- там аналог tmpfs и работает действительно быстро. Цитата Поскольку в Линуксе ничего без файловых операций не обходится, то скорость файловой системы на старте имеет большое значение. При объеме ядра где-то в 3 мега, файловая система будет минимум занимать 8 мег со всякими либами, busybox-ами и приложением. Для старта ядра вообще фс не нужна, она нужна для корня и запуска Init, опять же с initramfs вообще никаких тормозов нет, можно хранить там все необходимые для старта а все остальное просто подмонтировать. Цитата Кстати старт картинки на QNX- 0.5 сек. Стоит подумать  я подумал - а чего так медленно ?  имхо болше всего времни при старте уходит на распаковку и на поиск-инициализацию устройств а кто будет их инициализировать при быстром старте ?
|
|
|
|
|
Jun 19 2009, 07:03
|
Местный
  
Группа: Свой
Сообщений: 358
Регистрация: 27-06-06
Из: Новосибирск
Пользователь №: 18 410

|
Цитата(sasamy @ Jun 19 2009, 12:36)  все Оптимисты вы тут  сомневаюсь что на RM9200 вы получите больше 1 мб/сек, а на небуферизованном посекторном чтении и того меньше - 100-150 кб/сек. Кстати - а зачем загрузчику вообще какая-то фс ? По идее, нафиг не не надо FS. Есть 8М RAM, в котором лежит запущенная ОСь. Просто сохраняем в отдельную флеш 8М и все. Когда надо стартануть просто копируем обратно в память. AT45DB642D емкостью в 8МБайт поддерживает скорость по SPI до 66МГц, т.е. ~8М/сек. Для Blackfin, на котором я собираюсь делать плату, это точно не проблема. Цитата(sasamy @ Jun 19 2009, 12:36)  имхо болше всего времни при старте уходит на распаковку и на поиск-инициализацию устройств а кто будет их инициализировать при быстром старте ? Вот и интересно. Должен быть системный вызов для переинициализации драйверов устройств. Опять же, времени на то, чтобы записать несколько регистров много не надо. Если конфигурация платы известна, ничего никогда не меняется, то никаких особых Plug'n'Play не нужно.
|
|
|
|
|
Jun 19 2009, 08:16
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(Itch @ Jun 19 2009, 11:03)  Для Blackfin, на котором я собираюсь делать плату, это точно не проблема. не вопрос - можно получить хорошие скорости, я просто конкретно про rm9200 ситуацию уточнил Цитата Должен быть системный вызов для переинициализации драйверов устройств. Видели наверно в конце загрузки ядра сообщение типа Freeing unused kernel memory: Nk freed так вот это ядро избавляется от того самого кода и данных инициализации который вы хотите вызвать повторно  Он помечен __init в драйверах, после загрузки ядра его нет больше в памяти.
|
|
|
|
Сообщений в этой теме
Itch Быстрая загрузка Linux - возможно ли? Jun 18 2009, 14:48 AlexandrY А че у вас драйвера так тормозят? По моему этот во... Jun 18 2009, 17:44    AlexandrY Вы еще не поняли с чем связались
На нормальной R... Jun 19 2009, 07:41      sasamy Цитата(AlexandrY @ Jun 19 2009, 11:35) Ве... Jun 19 2009, 09:52     Itch Цитата(sasamy @ Jun 19 2009, 15:16) Видел... Jun 19 2009, 10:14      sasamy Цитата(Itch @ Jun 19 2009, 13:14) Экономя... Jun 19 2009, 11:02 Itch Поwikiл слово XIP, нашел интересную pdf-ку. Оказыв... Jun 19 2009, 03:59 AlexandrY Какая точно марка чипа?
Что, так и написано: ... Jun 19 2009, 06:04  Itch Цитата(AlexandrY @ Jun 19 2009, 13:04) Ка... Jun 19 2009, 08:37   AlexandrY Эт к щастью на этой конфе знают все.
Новость в том... Jun 19 2009, 08:46    Itch Цитата(AlexandrY @ Jun 19 2009, 15:46) Эт... Jun 19 2009, 08:55 faa Цитата(Itch @ Jun 18 2009, 18:48) Хотелос... Jun 20 2009, 08:49 Harbour у меня на desktop'e мамка годичной давности as... Jun 21 2009, 05:53 RW9UAO QNX на rm9200 из датафлэш (4 мегабайта), дрова уса... Jun 25 2009, 13:58 sasamy Цитата(RW9UAO @ Jun 25 2009, 17:58) QNX н... Jun 25 2009, 15:35 Harbour в дополнение :
http://www.linux.org.ru/view-messa... Jul 17 2009, 15:24
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|