Нумерация версий |
Предыдущая Содержание Следующая |
Прежде, чем углубиться в программирование, мы должны прокомментировать схему нумерации версий, используемую в Linux, и какие версии охвачены этой книгой. Прежде всего, отметьте, что у каждого пакета программ, используемого в системе Linux, есть свой собственный номер выпуска и часто они взаимозависимы: вы нуждаетесь в определённой версии одного пакета, чтобы запустить определённую версию другого пакета. Создатели дистрибутивов Linux обычно учитывают проблему совместимости пакетов и пользователь, который устанавливает подготовленный дистрибутив, не сталкивается с этой проблемой. С другой стороны, те, кто заменяет и модернизирует системное программное обеспечение сами решают эту проблему. К счастью, почти все современные дистрибутивы поддерживают обновление отдельных пакетов, проверяя межпакетные зависимости; менеджер дистрибутивных пакетов вообще не позволит обновиться, пока зависимости не удовлетворены.
Для запуска примеров, которые мы приводим во время обсуждения, вы не будете нуждаться в особых версиях какого-то пакета помимо того, что требуется ядро версии 2.6; для запуска наших примеров может использоваться любой современный дистрибутив Linux. Мы не будем детализировать определённые требования, потому что файл Documentation/Changes в ваших исходниках ядра - лучший источник такой информации, если вы испытываете какие-то проблемы. Возвращаясь к теме ядра, чётно пронумерованные версии ядра (то есть, 2.6.x) являются устойчивыми, которые предназначены для общего распространения. Нечётные версии (такие как 2.7.x), напротив, являются рабочими копиями и весьма неустойчивы; последняя из них представляет текущее состояние разработки, но становится устаревшей через несколько дней или около этого.
Эта книга охватывает версию ядра 2.6. Мы постарались показать все возможности, доступные для авторов драйверов устройств в версии 2.6.10, текущей версии во время написания книги. Этот выпуск книги не охватывает предыдущие версии ядра. Для тех, кому это интересно, вторая редакция книги подробно охватывала версии от 2.0 до 2.4. Та редакция всё ещё доступна на http://lwn.net/Kernel/LDD2/. Программисты ядра должны знать, что процесс разработки изменился с версии 2.6. Ядра серии 2.6 теперь принимают изменения, которые ранее считали бы слишком большими для "устойчивого" ядра. Между прочим, это означает, что внутренние программные интерфейсы ядра могут измениться, потенциально делая, таким образом, части этой книги устаревшими; по этой причине код примеров, сопровождающий текст, как известно, работает на версии 2.6.10, но некоторые модули не компилируют под более ранними версиями. Программистам, желающим не отставать от изменений в программировании ядра, стоит присоединиться к почтовым рассылкам и использовать веб-сайты, перечисленные в библиографии. Есть также интернет-страница, созданная на http://lwn.net/Articles/2.6-kernel-api/, которая содержит информацию об изменениях API, которые произошли после публикации этой книги.
Этот текст особенно не говорит о версиях ядра с нечётным номером. У обычных пользователей никогда нет причины использовать ядра, находящиеся в разработке. Однако, разработчики, экспериментирующие с новыми возможностями, стремятся запускать последние выпускаемые релизы. Они обычно обновляются до новой версии, чтобы получить исправления ошибок и новые реализованные возможности. Отметьте, однако, что нет никакой гарантии на экспериментальных ядрах (* Примечание, нет никакой гарантии также и на чётно пронумерованных ядрах, если вы не полагаетесь на коммерческого провайдера, который предоставляет его собственную гарантию), и никто не поможет вам, если есть проблемы из-за ошибки в нетекущем ядре с нечётным номером. Те, кто запускает версии с нечётным номером ядра, обычно достаточно квалифицированы, чтобы углубиться в код без потребности в учебнике, что является другой причиной, почему мы не говорим здесь о разработках ядра. Другая особенность Linux - это то, что это платформо-независимая операционная система, больше не только “клон Unix для клонов PC”: в настоящее время поддерживается примерно 20 архитектур. Эта книга платформо-независимая в максимально возможной степени и все примеры кода были проверены по крайней мере на платформах x86 и x86-64. Поскольку код был проверен и на 32-х разрядных и на 64-х разрядных процессорах, он должен компилироваться и работать на всех других платформах. Как вы могли бы ожидать, примеры кода, которые полагаются на специфические аппаратные средства, не работают на всех поддерживаемых платформах, но это всегда заявляется в исходном тексте. |
Предыдущая Содержание Следующая |