$ обновленоb
Найдите драйверы, связанные с scsi
$ найти scsi*.ko
Найдите драйверы, связанные с USB
$ найти usb*.ko
Эти драйверы
.коявляется суффиксом и по умолчанию компилируется в модуль при установке системы. На самом деле их можно скомпилировать как часть ядра, вам просто нужно выбрать их при компиляции ядра.
[*]Вот и все. Однако во многих случаях они компилируются как модули, что уменьшает размер ядра и обеспечивает гибкость их загрузки и выгрузки по мере необходимости. Ниже кратко показано, как выгружать модуль, загружать модуль и просматривать состояние загруженного модуля.
Сносно
/процфайловая система
модулифайл для проверки состояния различных модулей, загруженных в ядро, или
лсмодкоманда для просмотра их напрямую.
$ кот /proc/модули
или
$лсмод
Проверьте драйверы, связанные с scsi и usb, результаты отображаются в виде имени модуля, размера модуля, на которые ссылаются другие модули (количество ссылок, модули, которые ссылаются на них).
$ lsmod | egrep scsi|usbusbhid 29536 0hid 28928 1 usbhidusbcore 138632 4 usbhid,ehci_hcd,ohci_hcdscsi_mod 147084 4 sg,sr_mod,sd_mod,libata
Удалить ниже
USBхидВзгляните на модуль (не удаляйте драйвер scsi! Потому что ваша система может работать на нем. Если вы действительно хотите с ним поиграться, не забудьте сохранить данные перед удалением), перейдите
РМмодЭтого можно добиться, выполнив команду, сначала переключившись на пользователя root:
$ sudo -s# rmmod usbhid
Проверьте информацию о модуле еще раз. Вы больше ее не видите.
$ lsmod | grep ^usbhid
Если у вас есть USB-мышь, переместите ее и обнаружите, что переместить ее невозможно? Поскольку драйверы устройств больше не доступны, использовать устройство невозможно. Но не волнуйтесь. Теперь, когда вы знаете причину, вы можете просто перезагрузить драйвер. Используйте следующее.
инсмодПучок
USBхидМодуль перезагружается.
$ sudo -s# insmod `найдите usbhid.ko`
найдите usbhid.koэто выяснить
usbhid.koПуть к модулю, если его раньше не было
обновленоb, я думаю, вы не сможете его найти, но вы также можете перейти непосредственно к
/lib/модулиИспользуется в каталоге
находитьПучок
usbhid.koФайл найден.
# insmod $(find /lib/modules -name *usbhid.ko* | grep `uname -r`)
Теперь мышью можно снова пользоваться. Если не верите, подвигайте мышью еще раз:-)
На этом этапе взаимосвязь между аппаратными устройствами и драйверами устройств должна быть относительно ясной. Если нет, то продолжайте ниже.
Драйверы устройств Linux связаны с соответствующими файлами устройств, а файлы устройств взаимно однозначно соответствуют аппаратным устройствам. Эти файлы устройств единообразно хранятся в системе.
/устройство/каталог.
Например, устройство scsi соответствует
/dev/sda,
/dev/sda1,
/dev/sda2...Просмотрите информацию об этих устройствах ниже.
$ ls -l /dev/sda*brw-rw---- 1 корневой диск 8, 0 28.12.2007 22:49 /dev/sdabrw-rw---- 1 корневой диск 8, 1 2007-12- 28 22:50 /dev/sda1brw-rw---- 1 корневой диск 8, 3 28 декабря 2007 г. 22:49 /dev/sda3brw-rw---- 1 корневой диск 8, 4 28-12-2007 22:49 /dev/sda4brw-rw---- 1 корневой диск 8, 5 28-12-2007 22: 50 /dev/sda5brw-rw ---- 1 корневой диск 8, 6 28 декабря 2007 г. 22:50 /dev/sda6brw-rw---- 1 корневой диск 8, 7 28 декабря 2007 г. 22:50 /dev/sda7brw-rw---- 1 корневой диск 8, 8 28 декабря 2007 г. 22: 50/dev/sda8
Вы можете видеть, что первый символ в первом столбце — это
б, пятый столбец — цифра 8.
бУказывает, что файл является файлом блочного устройства, соответственно, если он
сЭто означает символьное устройство (например, `/dev/ttyS0). Что касается разницы между блочным и символьным устройством, вы можете увидеть здесь:
Символьное устройство: Символьное устройство — это устройство, к которому можно получить доступ как к символьному потоку, а последовательные порты — это символьные устройства.
Блочные устройства. Файловые системы могут размещаться на блочных устройствах. В отличие от символьных устройств, блочные устройства могут передавать только один или несколько полных блоков одновременно при чтении или записи. В операционной системе Linux приложения могут читать и записывать блочные устройства так же, как символьные устройства (чтение или запись произвольных байтов данных за раз). Следовательно, разница между блочными устройствами и символьными устройствами заключается только в управлении данными в ядре.
Число 8 — это номер устройства, соответствующий аппаратному устройству в ядре. Его можно найти в ядре.
Документация/devices.txtи
/проц/устройстваНайдите присвоение номера устройству в файле. Но почему одному и тому же устройству соответствуют разные файлы устройств (
/dev/sdaПочему в конце разные цифры и
лсИм соответствует столбец 6 в результате). На самом деле это делается для того, чтобы различать разные части разных устройств. Для жестких дисков это обрабатывает различные разделы внутри жесткого диска. Что касается ядра, ему нужно только найти соответствующее аппаратное устройство по номеру устройства в столбце 5, но для модуля драйвера ему также необходимо знать, как обрабатывать различные разделы, поэтому существует дополнительный номер вспомогательного устройства. , то есть содержимое, соответствующее столбцу 6. Таким образом, устройство имеет основной номер устройства (столбец 5) и номер вспомогательного устройства (столбец 6), что облегчает управление различными аппаратными устройствами.
Поскольку файл устройства соответствует оборудованию, вы можете напрямую получить доступ к
/dev/sda(в случае
IDEжесткий диск, то соответствующее устройство
/dev/hda(la) Считайте информацию о жестком диске устройства, например:
использовать
ддКоманда копирует первые 512 байт жесткого диска и требует наличия root-пользователя.
$ sudo dd if=/dev/sda of=mbr.bin bs=512 count=1
использовать
файлКоманда просмотра соответствующей информации
$ файл mbr.binmbr.bin: загрузочный сектор x86, загрузчик LInux i386; раздел 3: ID=0x82, starthead 254, стартовый сектор 19535040, 1959930 секторов; раздел 4: ID=0x5, стартовый загрузчик 254, стартовый сектор 21494970, 56661255 секторов, код смещение 0x48
Также можно использовать
одКоманда считывается в шестнадцатеричном формате и анализируется.
$ od -x mbr.bin
бс— размер блока (в байтах
байтыкак единица),
считатьэто количество блоков
Поскольку эта информация не является интуитивно понятной (и будет проанализирована ниже), давайте сначала посмотрим на другой файл устройства, который сможет очень интуитивно продемонстрировать соответствие между файлом устройства и оборудованием. Давайте возьмем в качестве примера мышь. Давайте прочитаем информацию файла устройства, соответствующего мыши.
$ sudo -s# cat /dev/input/mouse1 od -x |
Драйвер вашей мыши может быть другим, поэтому файл устройства может быть другим, но все это будет в
/устройство/входВниз.
Переместите мышь и посмотрите, обнаружите ли вы другую информацию. Основываясь на этом принципе, мы часто читаем файл устройства на одном конце,
/dev/ttyS0содержимое файла устройства на другом конце
/dev/ttyS0Запишите содержимое, чтобы проверить, не повреждена ли линия последовательного порта.
На этом этапе вас должна больше впечатлять взаимосвязь между драйверами устройств, файлами устройств и аппаратными устройствами. Если вы хотите получить более глубокое представление о принципе работы драйверов устройств и написании драйверов устройств, ознакомьтесь с соответствующей информацией, указанной ниже, и начните процесс написания драйверов устройств.
Ссылки:
Скомпилировать ядро Linux 2.6.
Принципы написания драйверов оборудования для систем Linux
Принципы, настройки и распространенные проблемы USB-устройств под Linux
Руководство по программированию модулей ядра Linux
Разработка драйверов устройств Linux
Фактически, память, USB-диск и т. д. могут использоваться в качестве основного «хранилища» файловой системы, но здесь мы используем жесткий диск только в качестве примера, чтобы представить взаимосвязь между дисками и разделами.
В настоящее время при создании разделов Linux по-прежнему используется принцип разделения, используемый первым жестким диском ПК. Этот принцип разделения поэтапно анализируется и демонстрируется ниже.
Давайте сначала рассмотрим несколько концепций:
Управление устройствами и разбиение на разделы
В Linux каждому устройству хранения соответствует файл системного устройства. Для жестких дисков и т. д.
IDEи
SCSIустройство, в системе
/устройствоСоответствующие содержащие символы можно найти в каталоге
HDи
SDфайлы устройства. В зависимости от интерфейса устройства материнской платы и интерфейса кабеля передачи данных, к которому подключен жесткий диск,
HDили
SDПосле персонажа можно добавить символ из
априезжать
яперсонажи, например
HDA,
HDB,
HDCи
ПДД,
СДБ,
СДКи т. д. Кроме того, чтобы различать разные разделы одного и того же аппаратного устройства, в конце можно добавить число, например
hda1,
hda2,
hda3и
sda1,
sda2,
sda3, так что в
/устройствокаталоге вы можете увидеть множество похожих файлов устройств.
Роль каждого раздела
При создании разделов мы часто сталкиваемся с проблемой первичных и логических разделов. На самом деле это необходимо для облегчения расширения разделов. Подобно тому, как позднее введение логических томов позволяет лучше управлять несколькими жесткими дисками, введение первичных и логических разделов может помочь. легко осуществлять управление разделами.
Каждое устройство жесткого диска в системе Linux состоит из до 4 основных разделов (включая расширенные разделы).
Основной раздел используется компьютером для запуска операционной системы, поэтому программа запуска каждой операционной системы или программа загрузки должна храниться в основном разделе. В Linux предусмотрено, что основной раздел (или расширенный раздел) занимает первые 4 номера разделов. Итак, вы увидите, что файл устройства, соответствующий основному разделу,
/dev/hda1-4или
/dev/sda1-4, скорее, чем
hda5или
sda5.
Расширенные разделы используются для расширения большего количества логических разделов. В Linux логические разделы занимают.
hda5-16или
СДА5-16Подождите 12 цифр.
Тип раздела
Он определяет тип файловой системы в этом разделе. Linux поддерживает множество типов файловых систем, таких как msdoc, vfat, ext2, ext3 и т. д. Дополнительная информация будет представлена в следующем разделе.
Далее, проанализировав первые 512 байт жесткого диска (т.
МБР) для анализа и понимания разделов.
Давайте сначала посмотрим на эту картинку:
он используется для описания
МБРструктура.
МБРВключая загрузочную часть, таблицу разделов и метку конца `(55AAH), они занимают соответственно 446 байт, 64 байта и 2 байта по 512 байт. Здесь мы сосредоточимся только на части таблицы разделов, то есть на средних 64 байтах и левой части рисунка.
Поскольку я использую
SCSIжесткий диск, следующее взято из
/dev/sdaСкопируйте первые 512 байт жесткого диска в файл на устройстве.
mbr.binсередина.
$ sudo -s# dd if=/dev/sda of=mbr.bin bs=512 count=1
Используйте ниже
файл,
од,
fdiskДождитесь команды для анализа этого абзаца
МБРданные и сравните их с графиком выше для более глубокого понимания.
$ файл mbr.binmbr.bin: загрузочный сектор x86, загрузчик LInux i386; раздел 3: ID=0x82, starthead 254, стартовый сектор 19535040, 1959930 секторов; раздел 4: ID=0x5, starthead 254, стартовый сектор 21494970, 56661255 секторов, код компенсировать 0x48 $ od -x mbr.bin | 012a 00000000720 0000 0000 0000 0000 0000 0000 0000 fe000000740 ffff fe82 ffff 14c0 012a e7fa 001d fe000000760 ffff fe05 ffff fcba 0147 9507 0360 aa55$ sudo -s# fdisk -l | grep ^/ #Анализируйте только части, связанные с MBR, не анализируйте часть логического раздела /dev/sda1 * 1 1216 9767488+ 83 Linux/dev/sda3 1217 1338 979965 82 Linux подкачка /Солярис/dev/sda4 1339 4865 28330627+ 5 Расширенный
файлРезультат команды показывает, что только что скопированные 512 байт — это загрузочный сектор, а части, разделенные точкой с запятой, —
загрузчик, раздел 3 и раздел 4. Тип раздела 3 — 82, то есть
менятьРазделение (можно сделать через
fdiskкомандующий
лкоманда для вывода соответствующей информации), что соответствует
fdiskв результатах
/dev/sda3В 5-м столбце строки количество секторов в разделе 3 равно 1959930, что преобразуется в байты:
1959930*512(В настоящее время размер сектора по умолчанию для жестких дисков составляет 512 байт), а
менятьРазмер блока по умолчанию для раздела составляет 1024 байта, поэтому количество блоков равно
:
$ эхо 1959930*512/1024 |
Точно
fdiskРезультат в
/dev/sda3Количество блоков, соответствующих четвертому столбцу строки, аналогично можно сравнить
fdiskи
файлРезультаты анализируются для раздела 4.
Давайте посмотрим еще раз
одРезультат команды отображается в шестнадцатеричном формате. Также учитывайте раздел 3. После расчета выясняется, что раздел 3 соответствует.
одРезультат команды:
fe00 ffff fe82 ffff 14c0 012a e7fa 001d
Первый — это знак раздела,
00ч, на картинке выше видно, что это не загрузочный раздел(
80чОтмечен загрузочный раздел), а тип раздела? для
82Ч,и
файлРезультаты отображения совпадают. Теперь обратим внимание на размер раздела, т.е.
файлКоличество секторов в результате.
$ echo ibase=10;obase=16;1959930 | bc1DE7FA
Просто соответствует
e7fa 001d, аналогично рассмотрим результаты работы загрузочного раздела:
0180 0001 fe83 ffff 003f 0000 1481 012a
Тег раздела:
80ч, что просто отражает, что этот раздел является загрузочным, за которым следует ситуация с сектором диска, в котором расположен загрузочный раздел, 010100, то есть 1 сторона, 0 дорожек и 1 сектор. Остальное содержимое можно сравнивать и анализировать.
Учитывая ограничения по времени, для получения более подробной информации обратитесь к информации ниже или к соответствующему руководству системы.
Дополнение: При установке системы можно использовать
fdisk,
cfdiskДождитесь команды разделения. Если вы хотите загрузиться с определенного раздела, вам нужно ввести
80чтег, например через
cfdiskУстановите раздел на
загрузочныйдостичь.
Ссылки:
Внутри процесса загрузки Linux
Разработайте собственную ОС: загрузка
Знакомство с разделом диска Redhat9
Раздел Linux HOWTO
До появления логических томов типы разделов и типы файловых систем рассматривались почти одинаково. Процесс установки типа раздела представлял собой процесс форматирования раздела и установки соответствующего типа файловой системы.
Далее в основном рассказывается о том, как установить связь между разделами и типами файловых систем, то есть как форматировать разделы в соответствии с указанными типами файловых систем.
Давайте сначала рассмотрим распространенные типы файловых систем в Linux (если вы хотите просмотреть все типы файлов, поддерживаемые Linux, вы можете использовать
fdiskкомандующий
лкоманда для просмотра или передачи
мужчина фсДля просмотра вы также можете использовать
/proc/файловые системыПроверьте типы файловых систем, поддерживаемые текущим ядром)
ext2,
ext3,
ext4: Эти три типа обычно используются корневыми файловыми системами Linux.
менять: Это файловая система, используемая для реализации виртуальной памяти Linux. Во время установки обычно необходимо создать специальный раздел и отформатировать его как есть.
менятьфайловая система (если вы хотите добавить больше
менятьДля разделения вы можете обратиться к справочным материалам в этом разделе, чтобы ознакомиться с
дд,
mkswap,
обмен,
заменаИспользование других команд)
процесс: Это относительно особая файловая система, которая существует как интерфейс между ядром и пользователями и встроена в память (доступ к ней можно получить через
котПредставление команд
/процФайлы в системе можно даже изменить с помощью
/прок/системаФайл ниже может настроить конфигурацию ядра в режиме реального времени. Текущая предпосылка заключается в том, что вам нужно это сделать.
процессПри монтировании файловой системы:
mount -t proc proc /proc
Помимо перечисленных выше типов файловых систем, поддержка Linux включает
жирный,
изо,
xfs,
нфсСреди различных распространенных типов файловых систем в Linux вы можете свободно просматривать и управлять файловыми системами, используемыми другими операционными системами, такими как Windows.
Так как же установить связь между дисками и этими типами файловых систем? формат.
Процесс форматирования на самом деле является процессом реорганизации раздела, который можно
мкфсКоманду для достижения, конечно, тоже можно пройти
fdiskПодождите, пока команда будет выполнена. Здесь мы только представляем
мкфс,
мкфсЕго можно использовать для форматирования существующего раздела, но он не может выполнять операции с разделами (если вы хотите разбить и отформатировать диск, вы можете использовать
fdisk). После форматирования данные на соответствующем разделе организуются по специальному типу файловой системы.
Например: положить
/dev/sda9Раздел отформатирован как
ext3файловая система.
$ sudo -s# mkfs -t ext3 /dev/sda9
Если вы хотите перечислить типы файловых систем каждого раздела, вы можете использовать
fдиск -lЗаказ.
Для получения дополнительной информации обратитесь к следующим материалам.
Ссылки:
Действия по загрузке раздела подкачки в Linux
Создание и запись файлов ISO-образов под Linux
Объяснение раздела RAM-диска:[1],[2]
Руководство по внедрению расширенной файловой системы
В предыдущем разделе раздел напрямую форматировался под определенный тип файловой системы, но, учитывая необходимость расширения новых устройств хранения, разработчики ввели логические тома между файловой системой и разделом. Принимая во внимание ограничения по времени, я не буду здесь вдаваться в подробности. См. ссылку: Подробное объяснение управления логическими томами Linux.
В конечном итоге файловая система представляет собой визуальную структуру, которую можно представить с помощью таких команд, как ls, find и Tree. Это похоже на перевернутое «дерево», и на узлы дерева можно монтировать новые «деревья».
Ниже приводится краткое введение в монтирование файловой системы.
Файловую систему можно смонтировать через устройство (
устанавливать) в каталог, который называется точкой монтирования. Интересно, что в Linux сам каталог можно смонтировать в другой каталог, а также отформатированный файл можно смонтировать через специальное устройство.
/dev/циклмонтировать (напр.
изодокумент). Кроме того, что касается файловых систем, Linux поддерживает не только локальные файловые системы, но и удаленные файловые системы (например,
нфс).
Ниже кратко представлены несколько примеров монтирования файловой системы.
Монтируем корневую файловую систему
Для монтирования требуются права root, например, для монтирования корневой файловой системы системы.
/dev/sda1приезжать
/мнт
$ sudo -s# mount -t ext3 /dev/sda1 /mnt/
Проверять
/dev/sda1Как видно из ситуации с монтажом, устройство можно монтировать несколько раз.
$ mount | grep sda1/dev/sda1 в / введите ext3 (rw,errors=remount-ro)/dev/sda1 в /mnt введите ext3 (rw)
Если уже смонтирована файловая система, ее можно перемонтировать для поддержки других атрибутов.
$mount -n -o перемонтировать, rw /
Подключите новое устройство
Если ядро уже поддерживает интерфейс USB, то при вставке флешки можно пройти
dmesgКоманда для просмотра соответствующего номера устройства и его монтирования.
Проверять
dmesgВ последних нескольких строках результатов найдите что-то вроде
/dev/сдНинформация, чтобы узнать номер устройства, соответствующего USB-диску
$dmesg
Предполагается, что USB-диск
vfatформат, чтобы его можно было использовать в Windows в некоторых типографиях.
# mount -t vfat /dev/sdN /путь/к/каталог_точки_монтирования
Смонтируйте ISO-файл или компакт-диск
Для некоторых файлов ISO или дисков формата ISO вы также можете использовать
устанавливатьКоманда для монтирования.
Для iso-файлов:
# mount -t iso9660 /путь/к/isofile /путь/к/каталог_точки_монтирования
Для компакт-диска:
# mount -t iso9660 /dev/cdrom /путь/к/каталог_точки_монтирования
Монтирование удаленной файловой системы
# mount -t nfs Remote_ip:/path/to/share_directory /path/to/local_directory
Смонтировать файловую систему proc
# mount -t proc proc /proc
процессФайловая система организована в памяти, но ее можно смонтировать в каталог. Обычно монтируют его в
/процкаталог, чтобы его могли использовать некоторые инструменты управления и настройки системы. Например
вершинаКоманда использует его для анализа использования памяти (читайте
/proc/meminfoи
/прок/стати т. д. файлы);
лсмодкоманда, с помощью которой можно получить статус модуля ядра (читай
/прок/модули);
нетстаткоманду, чтобы через нее получить статус сети (читайте
/прок/сеть/деви другие документы). Конечно, можно также написать соответствующие инструменты. Кроме того, корректируя
/прок/системаФайлы в каталоге могут динамически изменять конфигурацию системы, например, переход к
/proc/sys/net/ipv4/ip_forwardЗапись числа 1 в файл позволяет ядру поддерживать пересылку пакетов. (Для получения дополнительной информации см.
процесспомощь,
man``proc)
Смонтировать каталог
$ mount --bind /путь/к/необходимому_каталогу_монтирования /путь/к/каталог_точки_монтирования
Это очень интересно. Например, вы можете смонтировать каталог в корневом каталоге службы FTP и предоставить ресурсы в соответствующем каталоге для совместного использования другими, не копируя содержимое.
Вышеупомянутый только монтаж, так как же удалить? использовать
размонтироватьПросто следуйте команде, указав исходный адрес или точку монтирования (устройство, файл, удаленный каталог и т. д.). Например:
$ umount /путь/к/каталог_точки_монтирования
или
$ umount /путь/к/источник_монтирования
Если вы хотите управлять большим количеством или часто монтируемыми службами, каждый раз монтировать вручную — плохая идея. Вы можете использовать его сейчас
устанавливатьфайл конфигурации
/etc/fstab,Пучок
устанавливатьСоответствующие параметры записываются как
/etc/fstabПакетное монтирование можно осуществить в столбце, соответствующем файлу (
монтировать -а) и удалить (
размонтировать -a).
/etc/fstabВ столбцах указаны файловая система, точка монтирования, тип и связанные параметры. Для получения дополнительной информации см.
fstabпомощь (
чувак, фстаб).
Ссылки:
Раздел жесткого диска Linux и принцип его монтирования
Просмотр виртуальной файловой системы Linux из файлового ввода-вывода
Анализ исходного кода: статический анализ Диаграмма вызова функций программы C
В файловой системе Linux есть несколько основных каталогов, и в разных каталогах хранятся различные файлы с разными функциями. Самые основные каталоги:
/и т. д,
/lib,
/устройство,
/бини т. д., в которых хранятся файлы конфигурации системы, файлы библиотек, файлы устройств и исполняемые программы соответственно. Эти каталоги обычно необходимы при разработке встроенных систем, вам нужно вручную или использовать их.
занятой ящикПодождите, пока появятся инструменты для создания такой базовой файловой системы. Здесь мы создаем очень простую файловую систему и выполняем с ней различные обычные операции, чтобы углубить наше понимание файловой системы.
все еще помню
ддЗаказ? Просто используйте его для создания файла фиксированного размера, это
1M(1024*1024 байт)файлы
$ dd if=/dev/zero of=minifs bs=1024 count=1024
Посмотреть типы файлов здесь
минифыявляется полным
\0файл без какой-либо конкретной структуры данных
$ файл minifsminifs: данные
проиллюстрировать:
/Дев/нольэто очень особенное устройство, если вы его прочитаете, то сможете получить любое количество
\0.
Затем файл форматируется в файловую систему указанного типа файла. (Кажется невероятным, что файлы также можно форматировать? Да, не только устройства могут, файлы также могут быть организованы в определенные типы файловых систем, но следует отметить, что некоторые файловые системы (например,
ext3) требует, чтобы цель была отформатирована так, чтобы иметь как минимум
64Мкосмос).
$ mkfs.ext2 минифы
Проверьте тип файла на данный момент.
минифыПросто возьми
ext2Формат файловой системы организован
$ file minifsminifs: данные файловой системы ext2 Linux версии 1.0.
Поскольку файл организован по типу файловой системы, вы можете использовать
устанавливатькоманда для ее монтирования и использования.
Пожалуйста, переключитесь на
кореньПользователь монтирует его и передает
-о циклвозможность связать его с конкретным устройством
/dev/цикл
$ sudo -s# монтировать минифы /mnt/ -o цикл
Просмотр информации о файловой системе и просмотр только одного файла каталога.
потерянный+найденный
$ ls /mnt/lost+found
Выполняйте различные регулярные операции в этой файловой системе, включая чтение, запись, удаление и т. д. (Перед каждой операцией, пожалуйста,
минифыСохраните копию файла для сравнения. В сочетании с соответствующей информацией вы сможете провести углубленный анализ изменений файловой системы, вызванных различными операциями, тем самым глубже понимая принципы реализации файловой системы как способа. для организации данных и т. д.)
$ cp minifs minifs.bak$ cd /mnt$ touch hello$ cd -$ cp minifs minifs-touch.bak$ od -x minifs.bak > orig.od$ od -x minifs-touch.bak > touch.od
После создания файла сравните сходства и различия между текущей файловой системой и предыдущей файловой системой.
$ diff orig.od touch.oddiff orig.od touch.od61,63c61,64< 0060020 000c 0202 2e2e 0000 000b 0000 03e8 020a< 0060040 6f6c 7473 662b 756f 646e 0000 0000 0000< 0060060 0000 0000 0000 0000 0000 0000 0000 0000 ---> 0060020 000c 0202 2e2e 0000 000b 0000 0014 020a> 0060040 6f6c 7473 662b 756f 646e 0000 000c 0000> 0060060 03d4 0105 6568 6c6c 006f 0000 0000 0000> 0060100 0000 0000 0000 0000 0000 0000 0000 0000
Путем сравнения было установлено, что при добавлении файла соответствующее расположение файловой системы существенно меняется.
$ echo привет, мир > /mnt/привет
осуществлять
синхронизироватькоманду, чтобы убедиться, что данные в кэше записаны на диск (помните рисунок 1 этого раздела).
буферный кешНу, вот оно
кэшДанные записываются на диск)
$ sync$ cp minifs minifs-echo.bak$ od -x minifs-echo.bak > echo.od
После записи содержимого файла сравните сходства и различия файловой системы с предыдущей.
$ diff touch.od echo.od
Просмотр строк в файловой системе
$ strings minifslost+foundhellohello, world
удалить
приветФайл, просмотр изменений файловой системы
$ rm /mnt/hello$ cp minifs minifs-rm.bak$ od -x minifs-rm.bak > rm.od$ diff echo.od rm.od
Просматривая строки в файловой системе, мы обнаружили, что содержимое файла не было перезаписано при его удалении, поэтому теоретически содержимое в настоящее время все еще можно восстановить.
$ strings minifslost+foundhellohello, world
Вышеупомянутое демонстрирует только некоторые общие инструменты для анализа файловых систем и анализирует несколько общих операций. Если вы хотите получить очень глубокое понимание принципов реализации файловых систем, ознакомьтесь с использованием вышеуказанных инструментов и прочитайте соответствующие материалы.
Ссылки:
Создайте мини-файловую систему в Linux с нуля.
Создайте мини-файловую систему в Linux с помощью BusyBox.
файловая система ext2
вместе с
предохранительС появлением Fuse стало возможным разрабатывать файловые системы в пользовательском пространстве. Если вы хотите разработать собственную файловую систему, рекомендуется прочитать: Используйте Fuse для разработки собственной файловой системы.
22 декабря 2007 года я собрал много информации и написал общую структуру.
Первый вариант был завершен во второй половине дня 28 декабря 2007 г. Учитывая нехватку времени, многие детали не подвергались дальнейшему анализу. Кроме того, в некоторых частях могут возникнуть проблемы с пониманием. Критика и исправления приветствуются.
Вечером 28 декабря 2007 года некоторые сведения были изменены и документ был официально опубликован.
№29, добавить раздел о драйверах устройств и аппаратных устройствах