Обзор двух книжек о linux

Книги
Периодически, я работаю над проектом с embedded linux внутри. Для того, чтобы самообразоваться, прочел пару книжек, которые мы сегодня и обозреваем.



Первая проблема с которой вы наверняка столкнетесь, если начнете делать устройство на линуксе — откуда брать образ этого самого линукса? Производители платформы всегда дают готовый образ системы, но он всегда обладает недостатками: во-первых, он очень раздут и легко занимает пару гигабайт. Выгребать оттуда весь лишний хлам — это очень муторно. Плюс стабильность и производительность этих дистрибутивов очень часто под вопросом, потому, что их делают вместо обеда, чтобы влезть в дедлайны.

Эту задачу решают система сборки дистрибутивов. Фактически эта система качает исходники всех программ, которые вы хотите видеть в своем дистрибутиве и компилирует их, естественно, с соблюдением всех лучших практик.



Лучшая на данный момент (по моему мнению) такая система — yocto project. Документации по этой системе полно, но что-то пошло не так и я ее не осилил как не тужился. К счастью, есть книга Embedded Linux Development with Yocto Project, по содержанию, это та-же документация, но написана немного доступнее, и, что самое главное — последовательно, а не в виде справочника. Самое интересное, что после ее прочтения, официальная документация тоже начинает легко читаться.

Книгу я прочел буквально за день. Читается легко и все понятно, особенно, если перед этим безуспешно пытался написать какие-то рецепты.



После того, как дистрибутив собран, неплохо бы написать драйверов для наших железяк, что я с переменным успехом и делаю. Как вы, наверняка, догадываетесь, код ядра linux прочесть за вечер не получится, и, даже если прочесть, все равно ничего не будет понятно, поэтому нужно читать книгу в которой разжуют. По этому поводу я прочел книгу Linux Kernel Development, 3rd Edition, Robert Love

Эта книга, мне понравилась намного меньше. Во-первых, она очень поверхностная, она не дает конкретных знаний, а показывает как система работает то на очень высоком уровне, то ныряет в мелкие подробности. Во-вторых, в книге очень много воды. Если исключить обороты типа «об этом мы говорили в главе %номер_главы% (%название_главы%)», книга сразу похудеет в 2 раза. Зато, она дает представление о общей работе системы — о менеджменте памяти, о процессах, планировании задач, итп.



К сожалению, о написании драйверов там очень мало. Поэтому следующей моей книгой будет Linux Device Drivers. Я ее уже начал читать и могу сказать, что она мне нравится намного больше — сразу ощущается, что ее писали программисты. Никаких соплей. Кроме того, ее можно абсолютно бесплатно скачать тут.

Я бы сказал, что эти книги почти ни в чем не пересекаются. Но если вы хотите писать драйвера прямой сейчас, то на книгу Linux Kernel Development не стоит тратить время.
  • Теги:
  • нет

13 комментариев

avatar
Последнее предложение читать: То на книгу Linux Kernel Development не стоит тратить время.?
avatar
Да, поправил.
avatar
Какие камни потянут Linux?
avatar
Камни с MMU. Например если это ARM, то кортексы A-серии.
Комментарий отредактирован 2015-10-16 17:20:44 пользователем honeycomb0
avatar
А можно этот MMU подключить отдельно к простому МК?
avatar
Ответ будет: да, можно — есть MMU в виде ИС, но встречный воспрос — зачем? Например, если надо поднять linux на кортексе m3 без mmu, то смотрят в сторону ucLinux.
avatar
К примеру, AM3359 от TI или дешевый imx233 от freescale.
Комментарий отредактирован 2015-10-16 17:47:11 пользователем bsvi
avatar
А куда это можно применить??
avatar
Для всего, что требует возможностей близких к компьютеру. К примеру, если хочется интернет и веб браузер в своем проекте — то самое место линуксу. Очень много современных осциллографов, к примеру, работают на линуксе. Еще очень большой плюс линукса в том, что можно взять кучу обычных программистов и они могут написать софт который будет запускаться на эмбеддед платформе.

Недостаток линукса — отсутствие реального времени, но это потихоньку компенсируется. К примеру, AM335x содержит два PRU — считай, дополнительных процессора, которые могут общаться с линуксом и работать в реальном времени.
avatar
Вот пример, правда там QNX. QNX — управляет автомобилем в реальном времени, а витуальной машине работает андроид
blog.xenproject.org/tag/nautilus/
globallogic.com.ua/blog/ivi-system-sandboxing/
Комментарий отредактирован 2015-10-18 17:00:48 пользователем Nemo
avatar
Там как раз Linux а не QNX. И Linux и Android работают в виртуальных машинах.
avatar
ну, Торвальдс не одобрил бы эти книги точно.
вообще, литература о программировании на русском может быть только устаревшей. исключение — злые старые буквари для начинающих, но речь-то не о них.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.