Как узнать больше о ядре Linux с вашего собственного компьютера



Попробуйте наш инструмент устранения неполадок

Обучение работе с GNU / Linux обычно влечет за собой обучение работе с окружением рабочего стола. Технология тем позволяет этим средам рабочего стола имитировать интерфейсы устройств iOS, Microsoft Windows и OS X. Это помогает как бы минимизировать это. Многие люди идут дальше и изучают администрирование командной строки Unix с оболочками Bash или tcsh. Однако знакомство с внутренним устройством ядра Linux может помочь вам лучше понять, как различные части кода операции взаимодействуют друг с другом.



Некоторые люди утверждают, что было бы лучше пойти на несколько шагов дальше и дополнительно узнать, как компиляторы преобразуют код C в машинные инструкторы для микропроцессора. Сторонники ассемблерного кода утверждали бы, что лучше изучить ASM, чтобы по-настоящему понять программирование на платформах x86 и x86_64. Независимо от этих позиций, основные команды Linux могут предоставить обширную информацию о том, как ядро ​​видит ваш компьютер. Изучение парадигмы взгляда, но не трогания - отличный способ освоить само ядро. Хотя для примеров на этой странице использовалась учетная запись root, настоятельно рекомендуется просматривать каталоги, связанные с ядром, только через учетную запись пользователя.



Метод 1: каталог / proc

Каталог / proc находится в одной из основных областей корневого каталога верхнего уровня в любой файловой структуре Unix. Он содержит так называемую файловую систему proc, более известную как procfs, которая содержит информацию о способах доступа различных ресурсов к памяти ядра. Он отображается в / proc во время загрузки системы. Поскольку эта структура прокси-файла служит интерфейсом для внутренней структуры данных внутри ядра Linux, снова лучше всего исследовать ее только через учетную запись пользователя. Большинство файлов в любом случае классифицируются по видимой файловой структуре системы как файлы, предназначенные только для чтения, но лучше подстраховаться.



При этом каждый из них является текстовым файлом, поэтому вы можете просмотреть их, если хотите. Используйте команду cd, чтобы войти в каталог / proc, а затем введите команду ls, чтобы посмотреть, что там находится. Используйте команду cat, less или more с любым из файлов, чтобы просмотреть их. Файл cpuinfo - хорошее место для начала, поскольку он показывает, как ядро ​​видит ваш микропроцессор. Просмотрите файл stat для просмотра запущенных процессов.

2016-11-25_020006

Набрав устройства для кошек, вы узнаете, какие предметы прикреплены к вашей машине.



2016-11-25_020109

Кстати, вы всегда можете выполнить команду man proc для краткого описания того, как файловая структура / proc связана с ядром. Обслуживаемая страница взята из Руководства программиста Linux.

2016-11-25_020156

Метод 2: каталог / sys

Следующая остановка в вашем путешествии по ядру - / sys, это еще один каталог, сопоставленный с воображаемой файловой структурой. Это следует той же общей концепции Unix, что и / proc, но вместо этого он активно экспортирует информацию о связанных дисках устройств и ряде подсистем ядра. Если вы когда-либо работали с системой на основе BSD, то, возможно, вам более знакомо использование sysctl, обеспечивающего эти функции. Все устройства шины PCI, USB и S / 390 отображаются в каталог / sys.

Используйте cd / sys, чтобы перейти в каталог, а затем введите команду ls или dir. У вас могут быть каталоги с названиями block, class, devices, fs, kernel и, возможно, другие. Вы можете изучить их на предмет других плоских файлов, содержащих информацию о системе, но еще раз сделать это из учетной записи пользователя и следить, но не затрагивать менталитет о себе.

Метод 3: каталог / dev

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

2016-11-25_020242

Некоторые из них очень особенные. Файл / dev / null - это пустое устройство, которое ничего не делает. Если вы наберете cat / dev / null, то ничего не получите. Это называется битовой корзиной, и вывод может быть перенаправлен на нее, чтобы экран оставался чистым. Файл с именем / dev / zero не содержит ничего, кроме нулевых данных, которые можно записать на диск для его обнуления. Файлы random и urandom содержат случайные нежелательные данные для создания хэшей безопасности.

Если вы когда-либо форматировали диск, то, вероятно, у вас есть хотя бы некоторый опыт в том, как ядро ​​Linux их просматривает. Каждый диск, подключенный к системе, получает имя типа sda, sdb и т. Д. Для каждого диска. Разные типы дисков получают разные имена. Имейте в виду, что в каталоге / dev используется одно из возможных формальных компьютерных определений диска, а не то, как мы обычно использовали этот термин. Это означает, что жесткий диск, SSD, SD-карта, карта microSDHC, смонтированная файловая система смартфона, подключенная через USB, USB-накопители и даже смонтированные планшеты - все это диски для ядра.

После этого каждое имя диска в Linux получает цифру, указывающую номер раздела. Если у вас есть SSD с двумя основными разделами, тогда у вас могут быть / dev / sda1 и / dev / sda2 как допустимые тома. Скорее всего, если вы используете Linux на настольном компьютере или ноутбуке с разделением в стиле MBR, тогда у вас / dev / sda1 установлен раздел ext4, на котором фактически установлен Linux. Скорее всего, / dev / sda2 - это расширенный раздел, который затем содержит / dev / sda5 в качестве раздела подкачки. Это обычная схема, но отнюдь не обязательная. Обратите внимание: поскольку раздел подкачки в этом распространенном примере является логическим диском внутри расширенного раздела, он получает цифру 5 вместо 3.

Если вы хотите узнать больше о том, как ядро ​​просматривает и форматирует разделы, вы можете просмотреть список поддерживаемых разделов с помощью команды fdisk. В то время как fdisk не пишет таблицы разделов до тех пор, пока вы ему не скажете, все же лучше попробовать это с тем, что вас не волнует. Рекомендуется направить его на что-то вроде пустого USB-накопителя, который можно легко переформатировать.

Допустим, ваша палка отображается как / dev / sdc , тогда вы можете использовать судо fdisk / dev / sdc чтобы загрузить его. Если у вас есть действующий раздел, введите t, чтобы изменить тип, и тип L, чтобы загрузить список шестнадцатеричных кодов. Обратите внимание, что схемы разделов MBR и GUID взаимодействуют с ядром по-разному и поэтому имеют разные назначения.

2016-11-25_020331

Чаще всего у вас есть диски с типом 83, который предназначен для дисков Linux, 82, который предназначен для разделов подкачки Linux, или одного из типов файлов FAT. FAT в той или иной форме восходит к 1977 году и до сих пор является предпочтительным для многих типов мобильных устройств, а также для многих съемных дисков. Обратите внимание, что некоторые типы разделов, такие как тип 0x0c, имеют так называемую поддержку LBA.

Когда программист разрабатывает ядро ​​для операционной системы, у него есть несколько разных способов взглянуть на диски. Один из них - разделить пластины на цилиндры, головки и сектора. Это был классический способ обращения к жестким дискам в течение долгого времени. Подлинная геометрия диска никогда не была важной для Linux, и эта схема, к сожалению, исчерпывает адреса после примерно 8 двоичных гигабайт. Второй способ - использовать логическую адресацию C / H / S, которая делает это, но затем позволяет контроллеру диска отображать номера цилиндров, головок и секторов в любом месте. Вот почему операционная система теоретически может заявить, что на SD-карте или USB-накопителе есть головы, когда это физически невозможно.

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

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

Метод 4: системные вызовы из руководства программиста Linux

Встроенные программы чтения страниц руководства, включенные в большинство дистрибутивов Linux, могут фактически дать вам ускоренный курс по системным вызовам, который может очень помочь в изучении ядра. Запустите браузер графических страниц руководства xman либо по ссылке .desktop, если она у вас есть, либо, в качестве альтернативы, одновременно удерживая супер-клавишу и R, затем набрав xman и нажав Enter. Выберите вариант «Ручная страница», затем выберите «Разделы» и, наконец, «(2) Системные вызовы» из раскрывающегося меню.

2016-11-25_020430

Однажды вариант чтения « вступление », Выберите это. Затем вас встретит страница из Руководства программиста Linux, которая немного научит вас системным вызовам.

2016-11-25_020518

6 минут на чтение