Лекція 6 Розділи в серверних системах 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лекція 6 Розділи в серверних системах



Розглянемо системи розділів FreeBSD, NetBSD і OpenBSD; системи розділів Sun Solaris.

Розділи BSD

Комп'ютерним аналітикам все частіше доводиться мати справу з серверними системами BSD UNIX – такими, як FreeBSD, OpenBSD і NetBSD. Такі системи використовують власні схеми формування розділів, і в цій частині опишемо відповідні структури даних. На практиці частіше зустрічається система Linux, але вона використовує тільки розділи DOS і не має власних структур даних.

Більшість систем BSD працюють на обладнанні IА32 (тобто x86/i386), а при їх проектуванні враховувалася можливість їх спільного існування на одному диску з продуктами Microsoft. Такі системи будуються на базі розділів DOS, описаних нами вище. Системи BSD, ті, що працюють на іншому устаткуванні, ймовірно, не використовуватимуть розділи DOS.

Перш ніж переходити до розгляду, необхідно зрозуміти одну важливу обставину: під час роботи операційна система може вибрати розділи, доступ до яких надається користувачеві. Як буде показано, операційна система FreeBSD використовує системи розділів DOS і FreeBSD, тоді як OpenBSD і NetBSD використовують тільки систему розділів BSD. Для цього розділу потрібно хоч би загальне розуміння розділів DOS.

Загальний огляд.

Система розділів BSD простіша за систему розділів DOS, але по своїх можливостях вона поступається картам розділів Apple. Необхідні дані зберігаються тільки в одному секторі, який знаходиться в розділі DOS (рис. 6.1). Це було зроблено для того, щоб на тому ж диску могла бути встановлена система Windows, а користувач міг вибрати завантажувану операційну систему. У таблиці розділів DOS створюється запис для розділів FreeBSD, OpenBSD або NetBSD - типи 0ха5, 0ха6 і 0ха9 відповідно. Розділ BSD є одним з первинних розділів DOS.

Розділи BSD знаходяться всередині тому, створеного на основі розділу DOS. Як описано вище, це один з прикладів розбиття на розділи тому, створеного на базі розділу.

Центральною структурою даних є розмітка диска (disk label). Її розмір складає мінімум 276 байт, і вона знаходиться в другому секторі розділу BSD. В деяких системах, що не використовують платформу IA32, вона може зберігатися в першому секторі із зміщенням. У FreeBSD, OpenBSD і NetBSD використовується одна структура даних, але з деякими відмінностями в реалізації.

Структура розмітки диска містить апаратні специфікації диска і таблиці розділів для восьми або шістнадцяти розділів BSD. На відміну від схеми Apple, таблиця розділів має фіксований розмір, а на відміну від розділів DOS, існує тільки одна таблиця розділів. Кожен запис в таблиці розділів BSD містить наступні поля:

- початковий сектор розділу BSD;

- розмір розділу BSD;

- тип розділу;

- розмір фрагмента файлової системи UFS;

- кількість фрагментів файлової системи UFS на блок;

- кількість циліндрів в групі UFS.

Адреса початкового сектора відлічується від початку диска, а не від розмітки диска або розділу DOS. Поле типу розділу визначає тип файлової системи, яка повинна знаходитися в розділі BSD, - наприклад, UFS, область підкочування, FAT або невживана область. Останні три значення використовуються тільки в тому випадку, якщо розділ містить файлову систему UFS.

Основні принципи схеми розділів BSD прості. Отримання інформації зводиться до читання однієї структури даних і обробки списку розділів. Проте, деякі проблеми можуть виникнути з доступом до розділів. Наприклад, в системі з альтернативним завантаженням аналітик повинен знати, чи мав користувач доступ до розділу Windows і до розділу BSD. У FreeBSD це питання вирішується не так, як в OpenBSD і NetBSD.

FreeBSD.

FreeBSD надає користувачеві доступ до усіх розділів DOS і BSD на диску. У термінології FreeBSD розділи DOSназиваються сегментами (slice), а розділи BSD називаються просто розділами. Отже, якщо в системі встановлені Windows іFreeBSD, при роботі з FreeBSD користувач матиме доступ сегментам Windows.

Структура розмітки диска в FreeBSD використовується для організації секторів тільки в межах розділу DOS, що містить розділи FreeBSD. На перший погляд це здається очевидним, але насправді це одна із принципових відмінностей між реалізаціями OpenBSD і FreeBSD. На рис. 6.2розмітка диска описує три розділи, що знаходяться в розділі DOS з типом розділу FreeBSD, але для опису розділу з типом NTFS вона не потрібна.

FreeBSD, як і інші різновиди UNIX, зв'язує з кожним розділом і сегментом спеціальний файл пристрою. Ім'я цього файлу задається у відповідності з номером розділу DOS і номером розділуBSD. Первинному диску АТА привласнюється базове ім'я /dev/ad0. Для кожного сегменту, також названого розділом DOS, до базового імені додається буква "s" і номер сегменту. Наприклад, перший сегмент позначається ім'ям /dev/ad0s1, а другий - /dev/ad0s2. На будь-якому сегменті з типом розділу FreeBSD система шукає структуру розмітки диска. Розділам в сегменті привласнюються буквені позначення на підставі положення їх записів в таблиці розділів розмітки диска. Наприклад, якщо другий розділ DOS належить FreeBSD, першому розділу BSD буде присвоєно ім'я /dev/ad0s2a, а другому - /dev/ad0s2b. Також іноді для розділів BSD створюється друга група імен пристроїв, що не включає номера сегментів. Наприклад, ім'я /dev/ad0a може використовуватися як скорочене позначення розділу /dev/ad0s2a (якщо розділ FreeBSD є другим розділом DOS).

Деякі розділи BSD мають особливий сенс. Розділ "а" зазвичай виконує функції кореневого, в ньому знаходиться завантажувальний код. Розділ "b" зазвичай містить область підкачки, розділ "с" зазвичай представляє увесь сегмент, а починаючи з "d", розділи можуть містити довільну інформацію. Я говорю "зазвичай" тому що ці розділи створюються більшістю системних програм BSD, але користувач може відредагувати таблицю розділів в розмітці диска і змінити її вміст.

Отже, система FreeBSD надає доступ до усіх розділів DOS і розділам FreeBSD. В процесі повного аналізу системи експерт повинен проаналізувати кожен розділ DOS і кожен розділ BSD, присутній в розмітці диска.

NetBSD і OpenBSD.

NetBSD і OpenBSD надають користувачеві доступ тільки до записів, які присутні в структурі розмітки диска BSD.На відміну від розмітки диска FreeBSD, в OpenBSD і NetBSD ця структура може описувати розділи, які знаходяться в будь-якому місці диска. Інакше кажучи, розмітка диска може описувати розділи за межами того розділу DOS, в якому вона знаходиться. Говоритимемо тільки OpenBSD, але насправді йдеться про обидві системи, OpenBSD і NetBSD. ПроектOpenBSD відокремився від NetBSD багато років тому.

Після завантаження ядра OpenBSD розділи DOS ігноруються. Система використовує їх тільки для виявлення початку розділу OpenBSD. Отже, якщо в системі встановлені як Windows, так і OpenBSD, а користувачам наданий доступ до розділу FAT з OpenBSD, то розділ FAT буде присутнім як в таблиці розділів DOS, так і в розмітці диска BSD. Ситуація показана на рис. 6.3 для розділів DOS, показаних на рис. 6.2. Проте цього разу в розмітці диска знадобиться додатковий запис для звернення до розділу DOS з типом NTFS.

Імена файлів пристроїв в OpenBSD схожі на ті, що використовуються в FreeBSD. Первинному пристрою АТА призначається базове ім'я /dev/wd0. Поняття "сегментів" відсутнє, а імена розділів BSD позначаються буквами. Звідси, першому розділу BSD привласнюється ім'я /dev/wd0a, а другому - /dev/wd0b. Як і в FreeBSD, перший розділ зазвичай є кореневим, а другий призначається для області підкачки. Третій розділ, /dev/wd0c в нашому випадку, є пристроєм, що представляє увесь диск. Згадуємо, що в FreeBSD третій розділ призначався тільки для одного сегменту, або розділу DOS.

Підведемо підсумок: система OpenBSD надає доступ тільки до розділів, описаних в розмітці диска OpenBSD. Аналіз системи OpenBSD слід зосередити на розділах, перерахованих в розмітці диска.

Завантажувальний код.

Завантажувальний код в системі BSD "оточує" структуру розмітки диска, яка знаходиться в секторі 1 тому. У секторі 0 томів зберігається завантажувальний код, який виконується при виявленні завантажувачем MBR завантажувального розділу з типом BSD. Якщо завантажувальний код не поміщається в секторі 0, він триває в секторі 2 і може тривати до початку даних файлової системи, зазвичай в секторі 16.

Структури даних

Опишемо структури даних розмітки диска BSD і приводиться приклад обробки системних даних в системах FreeBSD і OpenBSD. Також наводяться приклади результатів деяких службових програм.

Розмітка диска.

Подивимося, як влаштована структура даних, названа розміткою диска. В таблиці 6.1 перераховані поля цієї структури даних. Врахуйте, що деякі поля можуть бути не задіяні у визначенні структури диска, але при цьому потрібні для виконання інших операцій.

 

Таблиця 6.1 – Структура даних розмітки диска BSD

Діапазон байт Опис Необхідність
0-3 Сигнатура (0x82564557) Ні
4-5 Тип диска Ні
6-7 Підтип диска Ні
8-23 Ім'я типу диска Ні
24-39 Ім'я ідентифікатора пакету Ні
40-43 Розмір сектора в байтах Так
44-47 Кількість секторів в доріжці Ні
48-51 Кількість доріжок в циліндрі Ні
52-55 Кількість циліндрів в модулі Ні
56-59 Кількість секторів в циліндрі Ні
60-63 Кількість секторів в модулі Ні
64-65 Кількість вільних секторів в доріжці Ні
66-67 Кількість вільних секторів в циліндрі Ні
68-71 Кількість альтернативних циліндрів в модулі Ні
72-73 Швидкість обертання диска Ні
74-75 Коефіцієнт чергування секторів Ні
76-77 Зрушення доріжки Ні
78-79 Зрушення циліндра Ні
80-83 Час комутації голівок в мікросекундах Ні
84-87 Час позиціонування доріжок в мікросекундах Ні
88-91 Прапори Ні
92-111 Специфічна інформація про диск Ні
112-131 Зарезервовано Ні
132-135 Сигнатура (0x82564557) Ні
136-137 Контрольна сума Ні
138-139 Кількість розділів Так
140-143 Розмір завантажувальної області Ні
144-147 Максимальний розмір суперблоку файлової системи Ні
148-163 Розділ BSD №1 (див. таблицю 1.10) Так
164-179 Розділ BSD №2 (див. таблицю 1.10) Так
180-195 Розділ BSD №3 (див. таблицю 1.10) Так
196-211 Розділ BSD №4 (див. таблицю 1.10) Так
212-227 Розділ BSD №5 (див. таблицю 1.10) Так
228-243 Розділ BSD №6 (див. таблицю 1.10) Так
244-259 Розділ BSD №7 (див. таблицю 1.10) Так
260-275 Розділ BSD №8 (див. таблицю 1.10) Так
276-291 Розділ BSD №9 (див. таблицю 1.10) Так
292-307 Розділ BSD №10 (див. таблицю 1.10) Так
308-323 Розділ BSD №11 (див. таблицю 1.10) Так
324-339 Розділ BSD №12 (див. таблицю 1.10) Так
340-355 Розділ BSD №13 (див. таблицю 1.10) Так
356-371 Розділ BSD №14 (див. таблицю 1.10) Так
372-387 Розділ BSD №15 (див. таблицю 1.10) Так
388-403 Розділ BSD №16 (див. таблицю 1.10) Так
404-511 Не використовується Ні

 

 

Структура 16-байтового запису з таблиці розділів BSD приведена в таблиці 6.2.

 

Таблиця 6.2. Структура даних розмітки диска BSD

Діапазон байт Опис Необхідність
0-3 Розмір розділу BSD в секторах Так
4-7 Початковий сектор розділу BSD Так
8-11 Розмір фрагмента файлової системи Ні
12-12 Тип файлової системи (див. таблицю 1.11) Ні
13-13 Кількість фрагментів файлової системи в блоці Ні
14-15 Кількість циліндрів файлової системи в групі Ні

 

Поле типу визначає тип файлової системи, яка може знаходитися в розділі BSD. Припустимі значення перераховані в таблиці 1.11.

 

Таблиця 6.3 – Типи розділів BSD

Тип Опис
  He використовується
  Область підкачки
  Version 6
  Version 7
  System V
  4.1 BSD
  Eighth edition
  4.2 BSD FFS (Fast File System)
  Файлова система MSDOS (4.4LFS)
  4.4BSD LFS (Log Structured File System)
  Використовується, але має невідомий або непідтримуваний вміст
  OS/2 HPFS
  CD - ROM (IS09660)
  Завантажувач
  Диск vinum

 

Найпоширенішою файловою системою для FreeBSD і OpenBSD є 4.2BSD FFS (Fast File System). Для цієї системи також створюється мінімум один розділ підкачки. Розділ NTFS зазвичай має тип "використовується, але має невідомий вміст".

Тепер розглянемо приклад системи, в якій встановлені як FreeBSD, так і OpenBSD. Вміст таблиці розділів DOS виглядає так:

# mmls - t dos bsd - disk.dd Units are in 512 - byte sectors

Slot Start End Length Description

0000: 0000000000 0000000000 0000000001 Primary Table (#0)

001: 0000000001 0000000062 0000000062 Unallocated

002: 00:00 0000000063 0002056319 0002056257 Win95 FAT32 (0x0В)

003: 00:01 0002056320 0008209214 0006152895 OpenBSD (0xA6)

004: 00:02 0008209215 0019999727 0011790513 FreeBSD (0xA5)

Ми бачимо, що диск містить розділ FAT (1 Гбайт), розділ OpenBSD (3 Гбайт) і розділ FreeBSD (6 Гбайт). У кожному з розділів OpenBSD і FreeBSD знаходиться структура розмітки диска з описом додаткових розділів.

Приклад образу OpenBSD.

Почнемо з обробки розмітки диска OpenBSD. Розділ починається в секторі 2 056 320, і розмітка диска знаходиться в другому секторі:

# dd if=bsd - disk.dd skip=2056321 bs=512 count=l | xxd

00000000000000: 5745 5682 0500 0000 4553 4449 2f49 4445 WEB ESDI/IDE

000000000016: 2064 6973 6b00 0000 4d61 7874 6f72 2039 disk..Maxtor 9

000000000032: 3130 3234 4434 2020 0002 0000 3f00 0000 1024D4...?..

000000000048: 1000 0000 ff3f 0000 f003 0000 f02b 3101? +1.

000000000064: 0000 0000 0000 0000 lOOe 0100 0000 0000

[.. НУЛІ ]

00000000128: 0000 0000 5745 5682 Ь65е 1000 0020 0000...WEV.A

00000000144: 0000 0100 501f 0300 8060 lfOO 0004 0000... P...v

00000000160: 0708 1000 e061 0900 d07f 2200 0004 0000 a..".

00000000176: 0108 1000 f02b 3101 0000 0000 0000 0000 +1

00000000192: 0000 0000 501f 0300 bOel 2b00 0004 0000...P _

00000000208: 0708 1000 8056 0200 0001 2f00 0004 0000 V.../

0000224: 0708 1000 0000 0000 0000 0000 0000 0000

00000000240: 0000 0000 3f4b ЗеОО 00f8 4000 0004 0000...?K<.

00000000256: 0708 1000 80a0 Of00 8057 3100 0004 0000 W1

00000000272: 0708 1000 4160 lfOO 3f00 0000 0000 0000...A\.?

00000000288: 0800 0000 9dae ЬЗОО 3f43 7d00 0000 0000?C}

00000000304: OaOO 0000 0000 0000 0000 0000 0000 0000

0000320: 0000 0000 0000 0000 0000 0000 0000 0000

0000336: 0000 0000 0000 0000 0000 0000 0000 0000

0000352: 0000 0000 0000 0000 0000 0000 0000 0000

0000368: 0000 0000 0000 0000 0000 0000 0000 0000

0000384: 0000 0000 0000 0000 0000 0000 0000 0000

0000400: 0000 0000 0000 0000 0000 0000 0000 0000

[..]

У байтах 0-3 і 132-135 є присутніми сигнатури 0x825644557. Потім другої сигнатури байти 138-139 показують, що таблиця розділів містить 16 (0x0010) записів. Таблиця починається в наступному рядку з байта 148, продовжується шістнадцятьма 16-байтовими структурами і завершується у позиції 403. Записи 11-16 не використовуються і містять нулі. Частина сектора, що залишилася, не використовується структурою розмітки диска.

У таблиці 6.4 приведені основні дані шістнадцяти записів таблиці розділв. Десяткові еквіваленти поміщені в дужки.

 

Таблиця 6.4 – Вміст структури розмітки диска BSD в образі диска

  Початок Розмір Тип
  0x001f6080 (2 056 320) 0x0003lf50 (204 624) 0x07 (7)
  0x00227fd0 (2 260 944) 0x000961e0 (614 880) 0x01 (1)
  0x00000000 (0) 0x01312bf0 (19 999 728) 0x00 (0)
  0x002belb0 (2 875 824) 0x0003lf50 (204 624) 0x07 (7)
  0x002f0100(3 080 448) 0x00025680 (153 216) 0x07 (7)
  0x00000000 (0) 0x00000000 (0) 0x00 (0)
  0x0040f800 (4 257 792) 0x003c4b3f (3 951 423) 0x07 (7)
  0x00315780 (3 233 664) 0x000fa080 (1 024 128) 0x07 (7)
  0x0000003f(63) 0x001f6041 (2 056 257) 0x08 (8)
  0x007d433f (8 209 215) 0x00b3ae9d (11 775 645) 0x0a (10)

 

Перш ніж переходити до детального розгляду розділів, потрібно познайомитися із спеціальними розділами BSD. Перший розділ - кореневий - містить завантажувальний код. Другий розділ зберігає область підкачки, третій представляє увесь диск, а четвертий і всі наступні - довільні розділи BSD.

Образ, використаний в нашому прикладі, відповідає цій схемі. Перший розділ починається разом з розділом DOS в секторі 2056320. в другого розділу поле типу дорівнює 1, що відповідає області підкачки. Третій розділ посчинається в секторі 0, а його розмір відповідає розміру усього диска. Розділи 4, 5, 7 і 8 відносяться до типу 4.2BSD FFS, а їх початкові сектори збільшуються аж до розділу 9. Розділ 9 починається з сектора 63, а його тип відповідає файловій системі FAT. Він представляє розділ FAT, описаний в першому запису таблиці розділів DOS, в розмітці диска BSD. Розділ 10 має невідомий тип. Він представляє розділ FreeBSD, який описаний третім записом в приведеній раніше таблиці розділів DOS. Оскільки розділу 9 відповідає буква "i", користувач може звертатися до розділу FAT через ім'я /dev/wd0i. Як говорилося раніше, OpenBSD ігнорує вміст таблиці розділів DOS після завантаження.

Таблиця 6.5 показує, які розділи будуть доступні для користувача в системі OpenBSD.

 

Таблиця 6.5. Файлові системи, доступні в системі OpenBSD

Пристрій Опис Точка монтування Початковий сектор Кінцевий сектор
//dev/wd0a 4.2FFS BSD / 2 056 320 2 260 943
//dev/wd0b Підкачка - 2 260 944 2 875 823
//dev/wd0c Увесь диск -   19 999 727
//dev/wd0d 4.2FFS BSD //tmp/ 2 875 824 3 080 447
//dev/wd0e 4.2FFS BSD //home/ 3 080 448 3 233 663
//dev/wd0g 4.2FFS BSD //var/ 4 257 792 820 921
//dev/wd0h 4.2FFS BSD //usr/ 3 233 664 4 257 791
//dev/wd0i FAT Вибирається користувачем   2 056 319
//dev/wd0j Розділ FreeBSD - 8 209 215 19 984 859

 

Розділ FreeBSD не можна змонтувати, тому що для цього потрібно спочатку прочитати розмітку диска для визначення місцезнаходження файлової системи. Для перегляду тих же даних з розмітки диска можна скористатися утилітою mmls, вказавши в командному рядку тип bsd. Зміщення розділу BSD повинно задаватися з ключем -о, оскільки ми працюємо з образом диска.

# # mmls - t bsd -о 20563210 bsd - disk.dd BSD Disk Label

Units are in 512 - byte sectors

Slot Start End Length Description

0000: 02 0000000000 0019999727 0019999728 Unused (0x00)

001: 08 0000000063 0002056319 0002056257 MSDOS (0x08)

002: 00 0002056320 0002260943 0000204624 4.2BSD (0x07)

003: 01 0002260944 0002875823 0000614880 Swap (0x01)

004: 03 0002875824 0003080447 0000204624 4.2BSD (0x07)

005: 04 0003080448 0003233663 0000153216 4.2BSD (0x07)

006: 07 0003233664 0004257791 0001024128 4.2BSD (0x07)

007: 06 0004257792 0008209214 0003951423 4.2BSD (0x07)

008: 09 0008209125 0019984859 0011776454 Unknown (OxOA)

Нагадуємо, що програма mmls сортує вихідні дані по початковому сектору розділу, тому розділ FAT знаходиться на початку, хоча він і займає восьму позицію в таблиці розділів (позиція вказується в стовпці Slot).

Приклад образу FreeBSD.

Тепер давайте подивимося, як виглядає розділ BSD в образі з нашого прикладу. Розділ починається з сектора 8 209 215, а розмітка диска знаходиться в другому секторі:

# # dd i f=bsd - di sk.dd skip=8209216 bs=512 count=l | xxd

00000000000000: 5745 5682 0500 0000 6164 3073 3300 0000 WEV ad0s3..

0000016: 0000 0000 0000 0000 0000 0000 0000 0000

000000000032: 0000 0000 0000 0000 0002 0000 3f00 0000?..

000000000048: 1000 0000 814d 0000 f003 0000 f02b 3101 M +1.

000000000064: 0000 0000 0000 0000 lOOe 0100 0000 0000

[.. НУЛІ ]

00000000128: 0000 0000 5745 5682 b9ab 0800 0020 0000...WEV

00000000144: 0000 0000 0000 0800 3f43 7d00 0008 0000?C}

00000000160: 0708 0880 a073 1700 3f43 8500 0000 0000 s.?C

00000000176: 0100 0000 Ые8 ЬЗОО 3f43 7d00 0000 0000?C

00000000192: 0000 0000 0000 0800 dfb6 9c00 0008 0000

00000000208: 0708 0880 0000 0800 dfb6 9c00 0008 0000

00000000224: 0708 0880 1175 8400 dfb6 a400 0008 0000 u

00000000240: 0708 886f 0000 0000 0000 0000 0000 0000..o

0000256: 0000 0000 0000 0000 0000 0000 0000 0000

00000000272: 0000 0000 ebOe 4254 5801 0180 f60f 8007 BTX

00000000288: 0020 0000 fa31 c08e dObc 0018 8ec0 8ed8...1

00000000304: 666a 0266 9dbf OOle b900 3957 f3ab 5fbe fj.f 9W._.

00000000320: e296 ac98 91e3 ldac 92ad 93ad b608 dleb

00000000336: 730b 8905 8875 0288 5505 83c0 048d 7d08 S...U.U }.

[..]

По вмісту байтів 138-139 видно, що на диску створено вісім розділів. Записи цих розділів знаходяться в байтах 148-275, а їх розшифровка приводиться в таблиці 6.6 (десяткові еквіваленти поміщені в дужки).

 

Таблиця 6.6 – Вміст структури розмітки диска BSD в образі диска FreeBSD

  Початок Розмір Тип
  0x007d433f (8 209 215) 0x00080000 (524 288) 0x07 (7)
  0x0085433f (8 733 503) 0x001773a0 (1 536 928) 0x01 (1)
  0x007d433f (8 209 215) 0x00b3e8bl (11 790 513) 0x00 (0)
  0x009cb6df (10 270 431) 0x00080000 (524 288) 0x07 (7)
  0x00a4b6df(10 794 719) 0x00080000 (524 288) 0x07 (7)
  0x00acb6df(11 319 007) 0x00847511 (8 680 721) 0x07 (7)
  0x00000000 (0) 0x00000000 (0) 0x00 (0)
  0x00000000 (0) 0x00000000 (0) 0x00 (0)

 

Ми бачимо, що початковий сектор першого розділу BSD співпадає з початковим сектором розділу DOS, в якому знаходиться розмітка диска, і цей розділ відноситься до типу 4.2BSD FFS. Другий запис визначає область підкачки, а третій відноситься тільки до секторів розділу DOS. Записи 4, 5 і 6 визначають розділи з файловою системою FFS. У таблиці 6.7 перераховані імена пристроїв і приведені дані про місцезнаходження кожного розділу, доступного для користувачів FreeBSD.

 

Таблиця 6.7 – Файлові системи, доступні в системі FreeBSD

Пристрій Опис Точка монтування Початковий сектор Кінцевий сектор
//dev/ad0sl Розділ DOS FAT Вибирається користувачем   2 056 319
//dev/ad0s2 Розділ DOS OpenBSD - 2 056 320 8 209 214
//dev/ad0s3a 4.2FFS BSD / 8 209 215 8 733 502
//dev/ad0s3b Область підкачки - 8 733 503 1 027 430
//dev/ad0s3c Увесь розділ DOS FreeBSD - 8 209 215 19 999 727
//dev/ad0s3d 4.2FFS BSD //tmp 10 270 431 10 794 718
//dev/ad0s3e 4.2FFS BSD //var 10 794 719 1319 006
//dev/ad0s3f 4.2FFS BSD //usr 11 319 007 19 999 727

 

Для перегляду вмісту розмітки диска можна скористатися програмою mmls з пакету The Sleuth Kit. Результат виглядає так:

# # mmls - t bsd -о 82092165 bsd - disk.dd BSD Disk Label

Units are in 512 - byte sectors

Slot Start End Length Description

0000:--- 0000000000 0008209214 0008209215 Unallocated

001: 00 0008209215 0008733502 0000524288 4.2BSD (0x07)

002: 02 0008209215 0019999727 0011790513 Unused (0x00)

003: 01 0008733503 0010270430 0001536928 Swap (0x01)

004: 03 0010270431 0010794718 0000524288 4.2BSD (0x07)

005: 04 0010794719 0011319006 0000524288 4.2BSD (0x07)

006: 05 0011319007 0019999727 0008680721 4.2BSD (0x07)

Простір, виділений під розділи FAT і OpenBSD, помічений як "нерозподілений", оскільки для нього відсутні записи в розмітці диска. Для розподілу даних по розділах потрібна таблиця розділів DOS.

Фактори аналізу.

Кожен розділ BSD в структурі розмітки диска містить поле типу, але в системах BSD воно грає менш важливу роль, ніж в Microsoft Windows, оскільки Windows по вмісту поля типу визначає, чи треба привласнювати розділу букву диска або ні. У системах BSD для кожного запису в розмітці диска створюється пристрій, тому розділи можуть монтуватися з будь-яким типом. Отже, необхідно переконатися в тому, що розділ не містить відомої файлової системи, навіть якщо тип ідентифікує його як старий формат UNIX, оскільки розділ може містити іншу поширену файлову систему (наприклад, FAT).

Максимальний розмір розмітки диска дорівнює 404 байтам. Для розміток дисків, що містять тільки вісім записів, структура даних займає всього 276 байт. Це означає, що частина 512-байтового сектора, що залишилася, може використовуватися для зберігання прихованих даних (хоча і відносно невеликих). Якщо в результаті ушкодження таблиці розділів DOS визначити місцезнаходження розділу BSD не вдається, проведемо пошук сигнатури 0x82564557. Сигнатура повинна знаходитися в байті 0 і байті 132 структури розмітки диска.

Варто пам'ятати, що в системі FreeBSD користувач дістає доступ як до разділів DOS, так і до розділів BSD. Таким чином, в ході експертизи необхідно аналізувати як розділи DOS, так і розділи BSD. Варто врахувати, що в системі може бути відсутньою підтримка NTFS, щоб користувач не міг змонтувати розділ NTFS (якщо він існує).

В OpenBSD користувач має доступ тільки до розділів, перерахованих в розмітці диска. Оскільки OpenBSD ігнорує таблицю розділів DOS, може бути корисно порівняти вміст таблиці розділів DOS з розміткою диска BSD. Проаналізувати розділи BSD і DOS, виявити можливі перекриття і проміжки. На рис. 6.4 показані цікаві приклади розділів BSD. Один з розділів BSD зберігається в розділі DOS з типом NTFS. Якщо розділ NTFS містить файлову систему NTFS, така ситуація малоймовірна, і її слідує проаналізувати детальніше. На рисунку також показаний розділ BSD, створений в просторі, який не був виділений розділу DOS. З точки зору системного адміністратора так поступати не рекомендується, тому що інша програма може виділити простір під розділ DOS і знищити дані BSD, проте така можливість існує.

Сегменти Sun Solaris

Операційна система Solaris компанії Sun Microsystems використовується на великих серверах і на настільних системах. В ній застосовуються дві різні схеми формування розділів, вибір залежить від розміру диска і версії Solaris. У Solaris 9 з'явилася підтримка файлових систем, розмір яких перевищує 1 Тбайт, і використовуються таблиці розділів EFI з 64-розрядним полем адреси.

У всіх інших версіях Solaris використовуються структури даних, які нагадують вже описану розмітку диска BSD. Більше того, головна структура даних теж називається розміткою диска, хоча і має дещо іншу будову. Втім, цьому не доводиться дивуватися, якщо врахувати, що структури відрізняються навіть на Solaris для платформ Sparc і i386. Ситуація додатково ускладнюється тим, що імена структур даних Solaris співпадають з іменами BSD, але змінюється сенс термінів. Наприклад, в Solaris сегментом (slice) називається будь-який з розділів цієї системи. Для простоти будемо використовувати в цьому розділі термін "розділ Solaris", проте слід пам'ятати, що частіше зустрічається офіційна термінологія. Почнемо із загальних характеристик архітектури Solaris, потім познайомимося із специфічними особливостями структур даних Sparc і на завершення займемося специфікою структур даних i386.

Загальний огляд.

При встановленні Solaris на диску створюється структура розмітки диска. Її точне місцезнаходження залежить від апаратної платформи. Максимальна кількість розділів, що описуються розміткою диска, обмежена: для систем Sparc вона 8, а для i386 - 16.

Опис кожного розділу на диску складається з початкового сектора, розміру, набору прапорів і типу. Прапори вказують, чи доступний розділ тільки для читання і чи не заборонено його монтування (як для областей підкачки). В інших системах розділів поле типу використовувалося для опису типу файлової системи, але в Solaris воно зазвичай описує точку монтування розділу. Наприклад, деякі типи означають розділи home, usr або var, інші - область підкачки або нерозподілений простір. Повний список типів приведений нижче.

У Solaris використовується хитромудра, але добре масштабована схема вибору імен розділів. В середовищі Solaris блокові пристрої знаходяться в каталозі /dev/dsk, а неструктуровані пристрої (raw devices) - в каталозі /dev/rdsk. У цих каталогах розділам Solaris (чи сегментам) привласнюються імена виду cWtXdYsZ в системах Sparc і cWdYsZ в системах i386. У цьому шаблоні W - номер контролера, X - ідентифікатор фізичної шини (SCSI ID), Y - номер диска на шині, a Z - номер сегменту на диску. Наприклад, якщо в системі Sparc є тільки один контролер, ідентифікатор SCSI ID диска рівний 6, то для звернення до сегменту 5 слід використовувати ім'я /dev/rdsk/c0t6d0s5.

У Solaris записи розділів в таблиці розмітки диска зазвичай створюються на основі точки монтування. Це не є обов'язковою вимогою, але на дисках з операційною системою часто використовується схема, представлена в таблиці 6.8.

 

Таблиця 6.8 – Типова структура розмітки диска

Запис Опис
  //root/partition - операційна система і ядр
  Область підкачки
  Увесь диск, включаючи розмітку і всі розділи
  //export/
  //export/swap/
  //opt/
  //usr/
  //home/

 

На додаткових дисках, що включаються в систему, часто створюється всього один розділ, для якого використовується запис 5, 6 або 7.

Структури даних Sparc.

У системах на базі Sparc структура розмітки диска створюється в першому секторі диска (сектор 0). Сектори 1-15 містять завантажувальний код системи, а в секторах 16 і далі створюються розділи для зберігання файлових систем і областей підкачки. У Solaris використовується файлова система UFS, ця файлова система починається з сектора 16. Приклад будови диска Sparc показаний на рис. 6.5 і в таблиці 6.9.

 

Таблиця 6.9 – Структура даних розмітки диска Sun Sparc

Діапазон байт Опис Необхідність
0-127 Мітка в кодуванні ASCII Ні
128-261 Sparc VTOC (див. таблицю 1.18) Так
262-263 Сектори (модифікація), що пропускаються Ні
264-265 Сектори (читання), що пропускаються Ні
266-419 Зарезервовано Ні
420-421 Швидкість диска Ні
422-423 Кількість фізичних циліндрів Ні
424-425 Коефіцієнт дублювання циліндрів Ні
426-429 Зарезервовано Ні
430-431 Коефіцієнт чергування Ні
432-433 Кількість циліндрів даних Ні
434-435 Кількість альтернативних циліндрів Ні
436-437 Кількість голівок Так
438-439 Кількість секторів в доріжці Так
440-443 Зарезервовано Ні
444-451 Карта диска для розділу 1 (див. таблицю 1.21) Так
452-459 Карта диска для розділу 2 (див. таблицю 1.21) Так
460-467 Карта диска для розділу 3 (див. таблицю 1.21) Так
468-475 Карта диска для розділу 4 (див. таблицю 1.21) Так
476-483 Карта диска для розділу 5 (див. таблицю 1.21) Так
484-491 Карта диска для розділу 6 (див. таблицю 1.21) Так
492-499 Карта диска для розділу 7 (див. таблицю 1.21) Так
500-507 Карта диска для розділу 8 (див. таблицю 1.21) Так
508-509 Сигнатура (ОхРАВЕ) Ні
510-511 Контрольна сума Ні

 

У байтах 128-261 знаходиться зміст тому (VTOC). Ця структура містить загальну кількість розділів (байти 12-13), а також прапори, тип і часовий штамп для кожного розділу. Поля VTOC перераховані в таблиці 6.10.

 

Таблиця 6.10 – Структура даних VTOC в розмітці диска Sun Sparc

Діапазон байт Опис Необхідність
0-3 Версія (0x01) Ні
4-11 Ім'я тому Ні
12-13 Кількість розділів Так
14-15 Тип розділу 1 (див. таблицю 1.19) Ні
16-17 Прапори розділу 1 (див. таблицю 1.20) Ні
18-19 Тип розділу 2 (див. таблицю 1.19) Ні
20-21 Прапори розділу 2 (див. таблицю 1.20) Ні
22-23 Тип розділу 3 (див. таблицю 1.19) Ні
24-25 Прапори розділу 3 (див. таблицю 1.20) Ні
26-27 Тип розділу 4 (див. таблицю 1.19) Ні
28-29 Прапори розділу 4 (див. таблицю 1.20) Ні
30-31 Тип розділу 5 (див. таблицю 1.19) Ні
32-33 Прапори розділу 5 (див. таблицю 1.20) Ні
34-35 Тип розділу 6 (див. таблицю 1.19) Ні
36-37 Прапори розділу 6 (див. таблицю 1.20) Ні
38-39 Тип розділу 7 (див. таблицю 1.19) Ні
40-41 Прапори розділу 7 (див. таблицю 1.20) Ні
42-43 Тип розділу 8 (див. таблицю 1.19) Ні
44-45 Прапори розділу 8 (див. таблицю 1.20) Ні
46-57 Завантажувальна інформація Ні
58-59 Зарезервовано Ні
60-63 Сигнатура (0х600DDЕЕЕ) Ні
64-101 Зарезервовано Ні
102-105 Часовий штамп розділу 1 Ні
106-109 Часовий штамп розділу 2 Ні
110-113 Часовий штамп розділу 3 Ні
114-117 Часовий штамп розділу 4 Ні
118-121 Часовий штамп розділу 5 Ні
122-125 Часовий штамп розділу 6 Ні
126-129 Часовий штамп розділу 7 Ні
130-133 Часовий штамп розділу 8 Ні

 

Поле типу кожного розділу VTOC вказує, для чого використовується цей розділ і де він повинен монтуватися. Проте при монтуванні файлових систем операційна система керується спеціальним конфігураційним файлом. Таким чином, навіть якщо розділ позначається типом /usr/, це ще не означає, що він буде змонтований як /usr/. На відміну від інших систем, структура розмітки диска Solaris не задає тип файлової системи для кожного розділу. Допустимі значення типів розділів перераховані в таблиці 6.11.

 

Таблиця 6.11 – Типи розділів Sun (для Sparc і І386)

Значення Опис   Значення Опис
  Не задано     Розділ /stand/
  Розділ /boot/     Розділ /var/
  Розділ /     Розділ /home/
  Розділ підкочування     Інші розділи
  Розділ /usr/     Розділ cachefs
  Увесь диск      

 

Кожен розділ також має поле прапорів. Допустимі значення прапорів пераховані в таблиці6.12 (установка хоч би одного прапора для розділу не обов'язкова).

 

Таблиця 6.12 – Значення прапорів для розділів Sun (для Sparc і І386)

Значення Опис
  Розділ не може монтуватися
  Розділ доступний тільки для читання

 

Вся ця інформація корисна, але в контексті обговорення самою важливою частиною розмітки диска є місцезнаходження розділів. Початкові циліндр і розмір кожного розділу зберігаються в структурах карти диска, а не в VTOC. Карта диска знаходиться у кінці структури розмітки диска, а поля її записів перераховані в таблиці 6.13.

 

Таблиця 6.13 – Структура даних карти диска Sun Sparc

Діапазон байт Опис Необхідність
0-3 Початковий циліндр Так
4-7 Розмір Так

 

Проте нас цікавить початковий сектор, а не циліндр, тому значення прийдеться перетворити – на щастя, це робиться нескладно. Циліндр X складається з доріжок X на кожній пластині диска. Щоб перетворити адресу циліндра на адресу сектора, слід помножити адресу циліндра на кількість секторів в доріжці і кількість головок (обидва значення знаходяться в структурі розмітки диска).

Для прикладу візьмемо диск із 15 головками і 63 секторами на доріжку. Якщо адреса початкового циліндра дорівнює 1 112, обчислення дає наступний результат: 63 * 15 * 1112 - 1 050 840

Таким чином, ми повинні звернутися до сектора 1050840 і проаналізувати дані за допомогою програм з підтримкою схеми адресації LBA.

Розглянемо приклад з реальними структурами в шістнадцятковому вигляді. Приведемо вміст першого сектора жорсткого диска Solaris Sparc:

# dd іf=sparc - disk.dd bs=512 count=l | xxd

00000000000000: 4d61 7874 6f72 2038 3532 3530 4136 2063 Maxtor 85250A6 з 0000016: 796c 2031 3038 3534 2061 6c74 2032 2068 yl 10854 alt 2 h

000000000032: 6420 3135 2073 6563 2036 3300 0000 0000 d 15 sec 63

0000048: 0000 0000 0,000 0000 0000 0000 0000 0000

[.. НУЛІ ]

0000128: 0000 0001 0000 0000 0000 0000 0008 0002

0000144:0000 0003 0001 0005 0000 0000 0000 0000



Поделиться:


Последнее изменение этой страницы: 2016-09-19; просмотров: 269; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.223.20.57 (0.144 с.)