4

Я не могу получить доступ к разделам sda16 и sda17 и выше из моего linux. Этот Linux довольно Debian (очень старый); ядро 2.6.23. Итак, я знаю, что старое ядро Linux не может получить доступ к> 16 разделам на одном диске SATA.

Какую версию ядра я должен использовать для доступа к sda16, sda17 и т.д.? Я хочу обновить только ядро, а не весь дистрибутив Linux.

PS. Существует ядро WindowsNT, которое может получать доступ и форматировать разделы 16, 17 или выше, но я собираюсь использовать sda16 и sda17 из linux (я хочу ядро Linux).

PPS: dmesg:

sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
 sda: sda1 sda2 sda3 sda4 < sda5 sda6 sda7 sda8 sda9 sda10 sda11 sda12 sda13 sda14 sda15 >
sd 2:0:0:0: [sda] Attached SCSI disk
sd 4:0:0:0: [sdb] xxx 512-byte hardware sectors ...

Таким образом, нет отображения sda16, sda17, ... на sdb. Sdb - это второй физический жесткий диск.

1 ответ1

2

Я могу перерабатывать это без изменения ядра и с монтированием со смещением:

$ fdisk -l -u /dev/sda
   Device Boot      Start 
...
/dev/sda16      123456783 ...
/dev/sda17      234567894 ...

$ mount -o ro,offset=$[512*123456783] /dev/sda /mount/sda16
$ mount -o ro,offset=$[512*234567894] /dev/sda /mount/sda17

Проблема возникает из-за перемещения SATA в подсистему SCSI. SCSI может иметь только 15 разделов:

http://publib.boulder.ibm.com/infocenter/dsichelp/ds6000ic/topic/com.ibm.storage.smric.help.doc/f2c_linuxdevnaming_2hsag8.html - именование устройств Linux

Как правило, диски SCSI имеют максимум 16 младших номеров, сопоставленных одному диску. Таким образом, для каждого целого диска существует максимум 15 разделов на диск, потому что одно младшее число используется для описания всего диска (например, /dev /sda), а остальные 15 вспомогательных номеров используются для ссылки на разделы для этого диска. диск (например, /dev /sda1, /dev /sda2 и т. д.).

Таким образом, нет возможности создавать специальные блочные устройства для 16-го и 17-го разделов с mknod , потому что второстепенный 16 будет следующим диском, например:

# ls -l /dev/sda? /dev/sda?? /dev/sdb
brw-rw----  1 root disk  8,   0 May 24 08:09 /dev/sda
brw-rw----  1 root disk  8,   1 May 24 08:09 /dev/sda1
brw-rw----  1 root disk  8,   2 May 24 08:09 /dev/sda2
...
brw-rw----  1 root disk  8,  14 May 24 08:09 /dev/sda14
brw-rw----  1 root disk  8,  15 May 24 08:09 /dev/sda15
brw-rw----  1 root disk  8,  16 May 24 08:09 /dev/sdb

Изменение было сделано в версии ядра Linux около 2.6.20, в соответствии с темой http://forums.justlinux.com/showthread.php?149956-Howto-get-44-logical-partitions-out-of-a-SCSI- SATA-PATA-USB-диск - «Как извлечь 44 логических раздела из диска SCSI/SATA/PATA/USB»

Linux, использующий ядро 2.6.20 или более поздней версии, теперь вызывает все жесткие диски SCSI, Sata, Pata и USB по одному и тому же соглашению об именах, используя имена дисков sda, sdb, sdc, sdd, sde и т.д. В настоящее время стандартным является максимум 16 имен устройств для каждого диска. Для первого диска sda 16 устройств называются sda и от sda1 до sda15. Sda1, sda2, sda3 и sda4 зарезервированы для 4 основных разделов, даже если некоторые из них не используются, а остальные sda5 - sda15 - это 11 имен логических разделов.

Это было сделано "libata", которая реализует PATA/SATA поверх подсистемы SCSI:

http://kernelnewbies.org/Linux_2_6_19#head-cdcbaa9c1b476decdc064e0a75d23d1328b1ddce

Слияние Libata PATA (Parallel ATA) Под "Parallel ATA" мы подразумеваем все контроллеры и диски ATA/IDE, которые мы использовали за годы до SATA. Почти с самого начала одной из целей некоторых хакеров ядра было заменить драйверы IDE, доступные в drivers/ide (все в меню конфигурации «Драйверы устройств -> поддержка ATA/ATAPI/MFM/RLL»), на переопределение поверх libata (то есть: "слой SATA"). ... Это означает, что 2.6.19 может иметь два драйвера для вашего устройства на основе PATA: старый драйвер IDE в разделе «Драйверы устройств -> поддержка ATA/ATAPI/MFM/RLL» и альтернативный драйвер в разделе «Драйверы устройств -> Serial ATA (prod)» и Parallel ATA (экспериментальные) драйверы »(вместе с остальными драйверами SATA)

Проблема была известна еще в 2006 году:http://www.redhat.com/archives/rhl-list/2006-October/msg00218.html

  1. Подсистема SCSI допускает только 15 (я думаю) разделов на диске. А со стандартными таблицами разделов в стиле MS-DOS это всегда включает все четыре основных раздела. Таким образом, один основной + одиннадцать логических разделов является пределом.

  2. Поддержка либаты для дисков SATA использует подсистему SCSI и наследует те же ограничения.

  3. Поддержка libata для IDE (= PATA) была объединена и должна быть доступна для 2.6.19. Это не будет набор драйверов по умолчанию , и вряд ли он станет стандартным во время выпуска Fedora Core, но, учитывая цели и инженеров Fedora, я не удивлюсь, если он будет включен в официальные ядра Fedora для выпуска FC7 , (Если нет, FC8. Мы, вероятно, говорим о следующем году или около того.)

Когда libata поддержка включена для параллельного IDE, то существующие разделы на IDE устройств выше / разработчика / hdx15 станет размонтированием.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .