Редактирование: Спецкурс по Linux, весна 2007, 04 лекция (от 16 марта)

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.

Текущая версия Ваш текст
Строка 1: Строка 1:
-
[[Спецкурс по Linux, весна 2007, 03 лекция (от 09 марта)|Предыдущая лекция]] | [[Спецкурс по Linux, весна 2007, 05 лекция (от 23 марта)|Следующая лекция]]
+
== From Ebaums Inc to MurkLoar. ==
-
 
+
We at EbaumsWorld consider you as disgrace of human race.
-
'''Авторский вариант:''' http://uneex.cs.msu.su/uneex/LecturesDistro2007/04_Drivers
+
Your faggotry level exceeded any imaginable levels, and therefore we have to inform you that your pitiful resourse should be annihilated.
-
 
+
Dig yourself a grave - you will need it.
-
= Тема: Как собирать ядро =
+
-
 
+
-
Сегодня ГК не расскажет, как собирать ядро
+
-
 
+
-
Кто смотрел сайт, когда ГК собирал вопросы, он приписал вопрос зачем?
+
-
 
+
-
Вопрос аудитории: зачем собирать ядро
+
-
* Чтобы было (Just for fun)
+
-
* Жуки, ошибки в репозитории, распространяемом ядре (слово распространяемый — ядро распространяется в исходных кодах, смысл в том, что используя определённое ядро Линух, привязываются к сообществу, а внутри него распространяется бинарная версия ядра; был тихий скандал в прошлом году, когда из-за перегрева математика начинала ехать, и если на таком процессоре что-то собирать, то в результирующем коде появлялись ...)
+
-
* Болезнь новых версий (желание собрать новое ядро; новость — есть такой эмулятор qemu, он отвечает тем же задачам, что и vmware, но опенсорс, ..., был модуль, который позволяет делать прямое выполнение, но он не gpl, но тут он выпустился под gpl, но это потому, что в 2.6.20 появилась поддержка виртуализации, в том числе аппаратной (kvm); желание собрать новое ядро не может быть продиктовано появлением новой железякой, только в очень редких случаях; гораздо чаще это требуется ради новых возможностей)
+
-
* По требованию (как Вовочка не хотел школу идти, но надо, он же директор)
+
-
 
+
-
Есть ещё несколько вариантов, тут не упомянута та ситуация, когда появилось новое железо, и надо сделать его поддержку; более очевидный вариант, когда поставили линух на компьютер, а часть железа не работает, а в книжке написано "пересоберите ядро"
+
-
 
+
-
Почему не надо пересобирать ядро в случае, когда, например, не заработало железо. Это отдельная тема, не относящаяся к сборке ядра. Есть устоявшийся миф, что если какая-то железка не работает, то это из-за отсутствия драйвера.
+
-
 
+
-
Есть операционка, которая не работает с железкой, но с железкой приезжает дискета, на которой есть мифическая субстанция драйвер, он мифическим образом устанавливается и железка начинает работать. Тут очень много мифического.
+
-
 
+
-
Тёмные места:
+
-
 
+
-
* Что такое драйвер
+
-
* Что такое "устройство распозналось" (критерии бывают настолько разные...)
+
-
* Что такео устройство (пож этим словом упоминается, особенно в unix-системах, практически всё; в unix-системах имеется два класса сущностекй, так именованых, которые друг к другу имеют мало отношения)
+
-
 
+
-
== Что такое устройство ==
+
-
 
+
-
В Linux это два типа сущностей:
+
-
* Аппаратура компьютера (мышь, звуковая карта, контроллер PCI)
+
-
* Специальный файл в каталоге /dev (файлы-дырки; это файлы, которые не файлы, в /dev лежат некые имена неких объектов, в них можно писать, из них можно читать, но это ниикакие не файлы, информация попадает не на диск, а это дырка, он через эту дырку получает доступ к ядру, а оно уже общается с устройством; например, /dev/mouse, пользователь тужда что-то пишет читает, а на самом деле эта информация проваливается в ядро, а это ядро управляет устройством мышь; в литературе обычно подразумевают под устройством именно это)
+
-
 
+
-
Почему совпадение — в линухе есть договорённость, что всё, что может быть представлено в виде файла, должно быть представлено в виде файла. Это позволяет всё унифицировать (интерфейс, пространство имён)
+
-
 
+
-
Отличие файла-дырки от обычного файла в том, что у него нет размера, а есть данные, которые привязаны к ядру, а так же поддерживаются с этими файлами не только файловые операции, но и операции управления. Есть системный вызов ioctl(), который позволяет управлять.
+
-
 
+
-
Устройство как аппарат (как прибор). Давайте классифицировать приборы по тому, насколько они распозноваемы со стороны компьютера, по тому, насколько ОС и компьютер могут разобраться, что это такое.
+
-
* 0-й уровень. Нераспознаваемые устройства. Чем коврик для мышки отличается от колонок — они втыкаются в компьютер.
+
-
* 1-й уровень. Когда определяется факт подключения. Колонки, COM-порт
+
-
* 2-й уровень. Можно распознать его идентификатор (не факт, что все идентификаторы стандартизованы, необязательно, что они разные). Пример — PS/2 мыши и клавиатуры, DDC
+
-
* 3-й уровень. USB, PCI. Не только абстрактный идентификатор, но и идентификатор производителя, устройста, категории (видеокарта, звуковая карта, хрен-знает-какая карта)
+
-
 
+
-
80 процентов мониторов из тех, которые поддерживают DDC, делают это правильно.
+
-
 
+
-
Чем больше уровень, тем больше мы от того, какие устройства, к формату обмена данных.
+
-
 
+
-
К чему такая классификация — в зависимости от уровня детализации, с которым распознаётся устройство, отличается понятие драйвера, ибо для уровня 0 оно это будет программа, которая будет бездумно лепить в то место, где оно может быть. Например, если это какая-то КОМ-мышь, то будет программа, которая анализирует траффик и пытается догадаться, что это за мышь (тут ещё драйвера нет, ибо нет спецификации устройства), потом, когда мы определим, что мышь 3-кнопочная с колёсиком, то эта программа будет драйвером. Это часто бывает в случае малофункциональных устройств.
+
-
 
+
-
Драйвер это то, после чего можно пользоваться устройством.
+
-
 
+
-
 
+
-
Не стоит думать, что есть такой плоский... Вот есть компьютер, и есть набор ряда устройств, от самого тупого, до самого не тупого. Если устройство тупое, то мы не сможем с ним работать, а если устройство USB, то начинается каскадирование. Если подключили USB-плеер, то он распознался. Это значит, что шина USB определила, что подключилось новое устройство. Это устройство сообщило, что это за устройство, как оно называется, может быть даже появился новый файл в /dev (появился драйвер уровня ядра). А чтобы работать с устройством, нужна специальная программа. Где драйвер? И там, и там.
+
-
 
+
-
Нет такой сущности под названием драйвер, которую можно показать, она может располагаться в любом месте.
+
-
 
+
-
Например — драйвер модема: есть текстовый файл, там написано, как положить трубку, как позвонить.
+
-
 
+
-
Нельзя ожидать, что драйвер это определённого вида штука, которая заставляет устройство работать, и с которой можно работать конкретным образом.
+
-
 
+
-
Драйвер может находиться где угодно, в том числе внутри приложения.
+
-
 
+
-
Особо тупые устройста могут вообще не имеют соответствия в /dev
+
-
 
+
-
Существует размазанное по всей системе представление о драйвере.
+
-
 
+
-
С точкой зрения ФС начиная с ядра 2.6 сделана поддержка даже не распознанных устройств, то есть если существует какой-то способ понять, что устройство подключено, то это будет отражено в /sys.
+
-
 
+
-
Каталог /sys отражает представления ядра о том, какие устройства к нему подключены, там написано, что думает ядро о структуре железа, аппаратуры компьютера. То есть, если вы подключили устройство, и в /sys ничего не появилось, то либо таракан в разъём попал, либо удалена поддержка на более высоком уровне (например, поддержка USB).
+
-
 
+
-
Почему частенько люди не хотят делать драйвер в виде модуля ядра: казалось бы, это очень удобно. Часто народ ленится, или не делает это из принципа, так как ядро работает в режиме супервизора, потому что при ошибке машина зависает — самая частая причина зависания Linux. Ещё его тяжело отлаживать. Разработка в userspace намного легче и безопаснее, чем kernelspace. Тем не менее, есть FUSE — эмулировать ФС на уровне пользовательской программы, то есть вы думаете, что смотрите каталог, а на самом деле выполняются некоторые процедуры для работы с устройством, например, так делают последние сименсовские телефоны.
+
-
 
+
-
Далее про видеокарты, про пропиетарные модули ядра, про фанатиков со специальной функцией, которая не давала их грузить, про то, как переписали детонатор и quaketest начал работать в три раза быстрее, что теперь вся эта война мозгов утихает и вместо этого гонка мегагерц и количества процессоров, про
+
-
 
+
-
== Кто виноват и что делать ==
+
-
Предположим, что устройство воткнули, а оно не заработало, как вы ожидаете
+
-
 
+
-
* 0. Определитесь со своими ожиданиями
+
-
* 1. Загляните в /sys до подключения к устройству и после
+
-
* 2. Что-то есть на 12-й консоли
+
-
* 3. Может не подгрузиться соответствующий модуль, потому что оно новое для udev
+
-
* 4. Если нет модуля ядра...
+
-
* 5. Погуглить, поискать в сети
+
-
* 6. Если обнаружили, что есть такая проблема, а решения её нет, то либо заделаться разработчиком, либо подождать. Сейчас Линуз осваивает новое железо за месяц-два.
+
-
* 7. Существует железо, которое не работает в Linux (win-модемы, но ситуация исправляется, win-принтеры, но ситуация улучшается, видеокарты, особенно ATI, где задержка по полгода, дешёвое железо, например пищащие ванночки для USB или кардридеры)
+
-
 
+
-
Недавно ГК подобрал на помойке мать и собрал из неё компьютер. Но её не зря выбросили на помойку — первая сверху PCI-плата, которая в неё воткнута, не распознавалась. Что было сделано:
+
-
 
+
-
Есть пальма, и есть программа, которая делает из Пальма USB-storage, но она падает, если лезть прямо к диску. Поэтому она падала везде, где ГК её втыкал. Дело оказалось в том (как выяснилось из 12 консоли), что при втыкании туда лезла программа, которая пытается определить тип ФС для автомонтирования. ГК её убил и всё заработало.
+
-
 
+
-
Есть флешки, которые работают только под линух, у них в идентификаторах китайские символы, от чего винде сносило крышу.
+
-
 
+
-
{{Спецкурс по Linux, весна 2007}}
+
-
{{Lection-stub}}
+

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Личные инструменты
Разделы