Изучение взламывания ядра и встроенной разработки дома? [закрытый]

Как все сказали выше, они не совпадают. Большинство ответов указывают на typedef более выгодным, чем #define. Но позвольте мне добавить плюс #define: когда ваш код очень большой, разбросанный по многим файлам, лучше использовать #define; это помогает в удобочитаемости - вы можете просто предварительно обработать весь код, чтобы увидеть фактическое определение типа переменной в месте самого объявления.

36
задан Pascal Thivent 29 August 2010 в 08:30
поделиться

6 ответов

Если бы Вы абсолютно плохо знакомы с разработкой ядра, я предложил бы не запуститься с аппаратной разработки и идти в некоторые модули ядра "только для программного обеспечения" как proc файл / sysfs или для более сложной файловой системы в качестве примера / развитие сети, разработав на uml/vmware/virtualbox/..., машина, настолько отказывающая Вашу машину, не причинит боль так:) Для встроенной разработки Вы могли пойти для небольшого Комплекта разработчика ARM или маленького Через машину C3/C4 или любой старый ПК, который можно записать с доморощенным USB / PCI / безотносительно устройства.

А хорошее место для запуска, вероятно Kernelnewbies.org - который имеет много ссылок и полезной информации для разработчиков ядра, и также показывает список легких для реализации задач заняться для новичков.

Некоторые книги для чтения:

Понимание Ядра Linux - очень хорошей ссылки, детализирующей дизайн подсистем ядра

Драйверы устройств Linux - записано больше как учебное руководство с большим количеством примера кода, фокусирующегося на получении Вас движение и объяснение ключевых аспектов ядра Linux. Это представляет процесс сборки и основы модулей ядра.

Руководство по программированию Модуля Ядра Linux - еще Некоторый вводный материал

, Как предложено ранее, смотря на код Linux является всегда хорошей идеей, тем более, что API Ядра Linux имеет тенденцию изменяться довольно часто... LXR помогает много с очень хорошим интерфейсом просмотра - lxr.linux.no

понять Процесс сборки Ядра, эта ссылка могла бы быть полезной:

Make-файлы Ядра Linux (kbuild)

Наконец, что не менее важно, просмотрите каталог Documentation Исходного распределения Ядра!

Вот некоторые интересные упражнения, нагло украденные от класса разработки ядра:

  • Запись модуль ядра, который создает файл/proc/jiffies создание отчетов о текущем времени в миге на каждом доступе для чтения.
  • Запись модуль ядра, обеспечивающий proc файл/proc/sleep. Когда приложение пишет, много секунд как текст ASCII в этот файл ("отзываются эхом 3>/proc/sleep"), это должно заблокироваться для указанной суммы секунд. Доступ для записи не должен иметь никакого побочного эффекта на содержании файла, т.е. на доступе для чтения, файл, должно казаться, пуст (см. LDD3, ch. 6/7)
  • Запись proc файл, где можно сохранить некоторый текст временно (использующий эхо "вздор">/proc/pipe) и выводить его снова (кошка/proc/pipe), очистив файл. Не упустите проблемы синхронизации.
  • Изменяют модуль канала в качестве примера, чтобы зарегистрироваться как устройство посимвольного ввода-вывода/dev/pipe, добавить динамическое выделение памяти для запросов записи.
  • Запись действительно простая файловая система.
33
ответ дан VolkA 27 November 2019 в 06:08
поделиться

Абсолют должен быть этот книга Rubini. (доступный оба как бумажная копия или бесплатная электронная копия)

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

Что касается выполнения встроенной работы я рекомендовал бы покупать один из многочисленных SBC (одноплатные компьютеры), которые являются там. Существуют много они, которые основаны на x86 процессорах, обычно с интерфейсами ПК/104 (электрически, ПК/104 идентичен стандарту шины ISA, но на основе наращиваемых коннекторов, а не торцевых разъемов - очень легкий соединить интерфейсом со специальным оборудованием к)

у Них обычно есть разъемы VGA, которые облегчают делать отладку.

5
ответ дан Andrew Edgecombe 27 November 2019 в 06:08
поделиться

Для встроенного взламывания Linux простой маршрутизатор Linksys WRT54G, который можно купить везде, является платформой разработки на своем собственном http://en.wikipedia.org/wiki/Linksys_WRT54G_series :

WRT54G известен тому, что был первым сетевым устройством потребительского уровня, которому выпустили его микропрограммный исходный код для удовлетворения обязательств GNU GPL. Это позволяет программистам изменять встроенное микропрограммное обеспечение, чтобы изменить или добавить функциональность к устройству. Несколько сторонних микропрограммных проектов предоставляют общественности расширенное встроенное микропрограммное обеспечение для WRT54G.

я попытался установить OpenWrt и DD-WRT встроенное микропрограммное обеспечение на нем. Можно проверить тех как начальную точку для взламывания на недорогой платформе.

3
ответ дан Readonly 27 November 2019 в 06:08
поделиться

Для начала, лучший способ состоит в том, чтобы считать много кода. Так как Linux является Открытым исходным кодом, Вы найдете десятки драйверов. Найдите тот, который работает до некоторой степени как то, что Вы хотите записать. Вы найдете некоторый достойный и относительно легкий для понимания код (устройство закольцовывания, фс ROM, и т.д.)

можно также использовать lxr.linux.no, который является кодом Linux, на который перекрестно ссылаются. Если необходимо узнать, как что-то работает, и потребность изучить код, это - хороший и простой способ.

существует также книга O'Reilly (Понимающий Ядро Linux, 3-й выпуск об этих 2,6 ядрах), или если Вы хотите что-то бесплатно, можно использовать Усовершенствованный Linux, Программирующий книгу ( http://www.advancedlinuxprogramming.com/ ). Существует также много определенной документации о файловых системах, сетях, и т.д.

3
ответ дан abyx 27 November 2019 в 06:08
поделиться

Некоторые вещи, которые будут подготовлены к:

  • Вы будете кросс-компилировать. Встроенное устройство будет использовать MIPS, PowerPC или ЦП ARM, но не будет иметь достаточной мощности ЦП, памяти или устройства хранения данных для компиляции его собственного ядра за разумное количество времени.
  • встроенная система часто использует последовательный порт в качестве консоли, и понизить стоимость обычно нет никакого коннектора, спаянного на производственные платы. Отладка паники ядра является очень трудной, если Вы не сможете спаять на разъеме последовательного порта, у Вас не будет большой информации о том, что пошло не так, как надо.

Linksys NSLU2 является недорогим способом заставить реальную встроенную систему работать с и имеет USB-порт для добавления периферийных устройств. Любая из многих точек беспроводного доступа может также использоваться, видеть страница совместимости OpenWrt. знать то, что текущие модели Linksys WRT54G Вы найдете в хранилищах, больше не может использоваться с Linux: у них есть меньше RAM и Flash для сокращения стоимости. Cisco/Linksys теперь использует vxWorks на WRT54G с меньшим объемом потребляемой памяти.

, Если Вы действительно хотите войти в него, оценочные комплекты для встроенных центральных процессоров запускаются на уровне пары сотни долларов США. Я рекомендовал бы не тратить деньги на них, если Вам не нужны они профессионально для задания или консультирующийся с контрактом.

1
ответ дан DGentry 27 November 2019 в 06:08
поделиться

Я совсем новичок во взломе ядра :) Решил купить две книги "Разработка программ для Linux: руководство с упражнениями" и "Написание драйверов устройств Linux: руководство с упражнениями" Они очень четко написаны и обеспечивают хорошую основу для дальнейшего обучения.

1
ответ дан 27 November 2019 в 06:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: