Разработка на драйвери за Linux - мога ли сериозно да навредя на системата си?

В момента чета книга за разработка на драйвери за Linux. Сега започнах да пиша драйвер за мишката razer naga.

Въпросът ми е какъв е най-лошият сценарий при разработването на драйвери? (Не докосвам процесор, твърд диск, RAM и т.н.)

Винаги съм мислил, че най-лошото нещо, което може да се случи, е да срина системата и след това да трябва да я рестартирам. Преди да продължа да пиша код, бих искал да се уверя, че не мога да навредя сериозно на системата си.


person Community    schedule 01.05.2014    source източник
comment
Кратък отговор: това е правилно. Наистина не мога да се сетя за случаи, в които бихте рискували да изпържите хардуера или да блокирате компютъра си. Разработка на вградена система: да. Драйвер за игра с мишка за PC Linux - не. Мисля, че си в безопасност.   -  person FoggyDay    schedule 02.05.2014
comment
Вероятно... но не със сигурност. Всичко, което работи в контекста на ядрото, теоретично е над повечето защити, така че нещо като изхвърляне на дял на твърд диск със сигурност е възможно - и по-трудни за възстановяване неща като повреда на биос или защитен елемент са теоретично възможни. Но повечето невинни грешки на обучаемите, които не засягат критични системи, просто ще провалят опита за изпълнение.   -  person Chris Stratton    schedule 02.05.2014
comment
Теоретично можете да подпалите неща...   -  person Marc B    schedule 02.05.2014
comment
Благодаря ти много. Почти всеки урок и самият автор на книгата препоръчва да бъдете внимателни. Проблемът е, че тези предупреждения са много сериозни. Но както и да е, ще се опитам да не запаля принтер @Marc B или да взривя мишката си :D   -  person    schedule 02.05.2014
comment
Тестването на вашия код на ядрото вътре във виртуална машина би предоставило още един слой защита за по-голямата част от хостинг системата - но не и за свързани през USB периферни устройства със странични ефекти от реалния свят.   -  person Chris Stratton    schedule 02.05.2014
comment
Друго предупреждение, което можете да направите, е да имате вашия драйвер като зареждаем модул вместо вграден. По този начин, ако объркате нещата, можете просто да рестартирате нормално и да го поправите и след това вмъкнете отново. От друга страна, в краен случай наличието на вграден модул може да доведе до срив на вашата операционна система при зареждане!   -  person brokenfoot    schedule 02.05.2014
comment
Кой знае какво може да се случи, когато се забъркате в пространството на ядрото?   -  person tangrs    schedule 02.05.2014


Отговори (1)


Хардуерът в днешно време е доста излишен. Много е трудно да се счупи хардуер с помощта на софтуер (като оставим настрана проблемите с отоплението).

Най-лошият сценарий е да блокирате системата си и може да се наложи да преинсталирате операционната система. Това може да се случи доста лесно по време на разработването на драйвера на устройството. Имате драйвери на файловата система в ядрото и вашите драйвери може да повредят стека на ядрото, което може да го остави в неизползваемо състояние.

Ядрото на Linux има вградени доста добри мерки за безопасност, като например преминаване в режим само за четене, след като ядрото е повредено. Това монтира основната ви файлова система в режим само за четене, така че да не можете да я изтриете.

Така че винаги бъдете на сигурно място. Опитайте се да разработите във виртуална машина като Virtualbox, която ви дава почти всичко в днешно време.

person pranith    schedule 09.05.2014