Лучший способ войти в программирование Ядра?

Я не абсолютно уверен, что понимаю то, что Вы хотите, но я думаю, что что-то как следующее должно работать:

$ echo -ne "$(echo -n "message" | sha1sum | cut -f1 -d" " | sed -e 's/\(.\{2\}\)/\\x\1/g')" | base64

В основном я беру шестнадцатеричный вывод, использую sed сделать это строкой завершенных шестнадцатеричных значений и затем использовать echo -en повторить байты в base64.

Мы можем подтвердить, что окончательный результат соответствует тому же хешу со следующим осуществлением:

$ echo -n "message" | sha1sum 
6f9b9af3cd6e8b8a73c2cdced37fe9f59226e27d  -

$ echo -ne "$(echo -n "message" | sha1sum | cut -f1 -d" " | sed -e 's/\(.\{2\}\)/\\x\1/g')" | base64
b5ua881ui4pzws3O03/p9ZIm4n0=

$ echo -n "b5ua881ui4pzws3O03/p9ZIm4n0=" | base64 -d | xxd
0000000: 6f9b 9af3 cd6e 8b8a 73c2 cdce d37f e9f5  o....n..s.......
0000010: 9226 e27d                                .&.}

Визуальный контроль показывает, что наше значение base64 соответствует исходному шестнадцатеричному числу. Обратите внимание на это, если Вы используете hexdump вместо xxd Вам, вероятно, придется играть с параметрами формата немного для получения вывода, который Вы ожидаете.

8
03.09.2016, 04:27
4 ответа

Во-первых:

Для детских этапов пишущий различные вариации на "привет мировые" модули и драйверы виртуального аппаратного обеспечения, являются лучшим способом запуститься (реальные аппаратные средства представляют проблемы реального мира, лучше всего стоял, когда у Вас есть больше идеи, что Вы делаете).

"Драйверы устройств Linux" являются превосходной книгой и определенно стоящий запуска с: http://lwn.net/Kernel/LDD3/

LDD (привыкший к, по крайней мере) имеют упражнения, где Вы записали виртуальные драйверы, например, Псевдодиски и виртуальные сетевые устройства.

Во-вторых:

подпишитесь на https://lkml.org/, или на список рассылки подсистемы Вы будете взламывать в. Слежка некоторое время, сканируя по потокам, читая обзор кода (отвечает на патчи) видеть, какие вещи люди натыкаются на или погрузка на.

Посмотрите, можно ли получить (дешевые) аппаратные средства для устройства, которое еще не поддерживается или еще не поддерживается хорошо. Хорошими кандидатами является дешевый USB NICs или подобные, недорогие периферийные устройства USB. Что-то с устаревшим, или драйвером из дерева, возможно, записанный поставщик, возможно, для 2.4.x, идеален, так как можно запустить с чего-то, что работает (вид-), и постепенно адаптируйте его он, тестируя, когда Вы идете. Моей первой попыткой драйвера был для USB Davicom DM9601 NIC. Было 2.4 ряда записанный поставщиками драйвер ядра, который я медленно адаптировал к 2,6. (Отметьте: драйвер в магистрали не является моим драйвером, в конце кто-то еще записал тот с нуля).

Иначе в должен посмотреть на сайт Новичков Ядра, конкретно "швейцары ядра" todo: http://kernelnewbies.org/KernelJanitors/Todo Это - список задач, которыми новичок должен смочь заняться.

11
27.01.2020, 20:08
  • 1
    Хороший ответ для Linux, пропуская всего один ресурс: LXR для просмотра источника ядра. –  Gilles 'SO- stop being evil' 11.05.2011, 01:41

Существует много существующих ядер.

Linux не единственная игра там, но это наиболее широко используется. Некоторые люди рекомендуют minix ядро для понимания понятий операционной системы. Я пошел бы с серией Linux 2.6.x, поскольку это наиболее распространено, и это не будет потрачено впустую на что-то, что (почти) никто не использует. Солярис, XNU (Mac), FreeBSD и стрекоза известен 1

Найдите что-то супер простым (последовательный порт, usb, и т.д.) и заставьте его сделать что-то еще. Для дополнительной проблемы попытайтесь писать модуль ядра для чего-то, что еще не имеет того. (Обязательно погуглите подозреваемого PCI sudo lspci -nn и/или идентификатор usb sudo lsusb сначала.)

Обновление: не делайте этого непосредственно в Вашей основной системе, используйте виртуальные машины (VM) (компьютер в компьютере), как упомянуто. VirtualBox может обеспечить это, и это свободно. Кроме того, я не хочу, чтобы это казалось подавляющим, но попробовало снимки VM, таким образом, можно возвратиться в случае, если что-то повреждает сам VM.

Обновление 2: примечание о Мерзавце (подвижная DVCSes inc., окаменелость, базар, darcs) является хорошей идеей, главным образом для кода и маленьких, важных файлов. Попытайтесь не использовать Мерзавца для резервного копирования музыки, видео и такого, если Вы не знаете последствий.;)

8
27.01.2020, 20:08

Найдите модуль или драйвер, который Вы хотите изменить или запустить с пустого указателя / привет мировой тип модуля и сборки оттуда. Конкретно работа с модулем, потому что это позволит Вам загружаться, разгрузите, перекомпилируйте и перезагрузите код в рабочее ядро. Позже можно войти в базовые биты, но в основном модули имеют все виды, и можно сделать в значительной степени независимо от того, что Вам нравится.

Во-вторых, используйте VM. Установите гостевую машину под VirtualBox или некоторыми по VM и сделайте Ваше ядро, тестирующее там некоторое время. Тем путем Вы не уничтожите свою основную систему, когда Вы повредите что-то, и перезапуск, отслеживание в обратном порядке к рабочему снимку, и т.д. действительно легок.

В-третьих, учитесь git.

6
27.01.2020, 20:08

Кто-то уже упоминает книгу "Драйверы устройств Linux" - это - превосходный ресурс, и я настоятельно рекомендую его также.

Хотя вопрос упоминает, что инициатор не спрашивает специально для книг, новейшего выпуска книги "Понимание, что Ядро Linux" (http://oreilly.com/catalog/9780596005658/) неоценимо в приобретении знаний о ядре Linux в целом и также содержит раздел по драйверам устройств Linux.

1
27.01.2020, 20:08

Теги

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