Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Разбор msdos партишна linuxом
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
vvj
Один из имеющихся четырёх флэшек (usb) не мог определиться в linuxе(2.6) - unknown partition. Полез в исходники - в сравнении с другими usb-дисками (жёсткими в том числе) , оказалось что не проходит проверку на старший бит в partition->boot_ind
http://kernel.org/pub/linux/kernel/people/...-checking.patch
так как там у него "сидит" не 0x80 а 0x20!
Тем временем Windowsы работают с этой флэшкой(128M) корректно. Там же форматнул её FATом. Значение boot_ind - которое теперь читает linux - стало 0x6F, а у второй партишн - 0x69 (у "нормальных" флэшек все три следующие по нулям). Форматнул её FAT32ым. Всё то же.

Что делать?
forever failure
У флэшек бывает такая фигня, что иногда на них создаётся единственный раздел с ФС, а иногда
ФС создаётся без разбиения флэшки. В первом случае она монтируется как
#mount /dev/sda1 /mnt/mount_point, во втором -
#mount /dev/sda /mnt/mount_point, где
/dev/sda - скази-девайс, эмулирующий флэшку. Попробуйте оба способа.
makc
Если флешка была отформатирована в Windows XP, то таблицы разделов на ней нет (Windows XP ее не создает) и загрузочный сектор FAT размещается в первом секторе носителя. Т.е. там, где должен быть MBR. Такая особенность.
Поэтому, как Вам правильно сказали, монтировать нужно не раздел (sda1, sda2, ... , sdaN), а сам носитель - /dev/sda.
vvj
Да, но что если маунтить нечего?
Вот лог подключения usb-винта, который впоследствии успешно маунтится:
Код
/ $ usb 1-1: USB disconnect, address 6
usb 1-1: new high speed USB device using ST40-ehci and address 7
usb 1-1: Product: Mass Storage Device
usb 1-1: Manufacturer: Prolific Technology Inc.
usb 1-1: configuration #1 chosen from 1 choice
scsi6 : SCSI emulation for USB Mass Storage devices
  Vendor: TOSHIBA   Model: MK8025GAS         Rev: KA02
  Type:   Direct-Access                      ANSI SCSI revision: 00
SCSI device sda: 156301488 512-byte hdwr sectors (80026 MB)
sda: Write Protect is off
sda: assuming drive cache: write through
SCSI device sda: 156301488 512-byte hdwr sectors (80026 MB)
sda: Write Protect is off
sda: assuming drive cache: write through
sda:<7>usb-storage: queuecommand called
sda1
sd 6:0:0:0: Attached scsi disk sda

А вот лог подключения usb-флэшки:
Код
/ $ usb 1-1: USB disconnect, address 2
usb 1-1: new high speed USB device using ST40-ehci and address 3
usb 1-1: Product: USB DISK
usb 1-1: Manufacturer: SMI
usb 1-1: SerialNumber: AA04012700553
usb 1-1: configuration #1 chosen from 1 choice
scsi2 : SCSI emulation for USB Mass Storage devices
  Vendor: SMI       Model: USB DISK          Rev: 3000
  Type:   Direct-Access                      ANSI SCSI revision: 00
SCSI device sda: 252928 512-byte hdwr sectors (129 MB)
sda: Write Protect is off
sda: assuming drive cache: write through
SCSI device sda: 252928 512-byte hdwr sectors (129 MB)
sda: Write Protect is off
sda: assuming drive cache: write through
sda:<7>usb-storage: queuecommand called
unknown partition table
sd 2:0:0:0: Attached scsi removable disk sda

В случае с винтом видно что встал он под sda1, а здесь - unknown partition.
Как я понимаю - и маунтить то нечего!
А почему партишн анноун - потому как мусор всякий в поле partition->boot_ind.
Посмотрите ещё раз линк из первого поста - этот патч на детекцию мсдос партиции на данный день официально "имплементирован" (как покажут исходники Ваших ядер).
У винта(и у других флэшек) там в первой структуре 0х80 и по нулям в трёх следующих: если поле отлично от нуля и старший бит стоит - быть здесь мсдос партиции а если не стоИт то это не мсдос -> подбираем тип партиции дальше (и в конечном счёте обламываемся со всеми)
Из комментариев к исходникам видно что старший бит означает что партишн активный.
Так вот вопрос что это за boot_ind, нафик его проверяют и где вообще про него почитать?
В WXP флэшка работает корректно.
makc
Тут же прямо написано - SCSI device sda. И еще добавлено Attached scsi removable disk sda.
Вот sda и нужно монтировать, т.к. на нем нет таблицы разделов. И, следовательно, sda1 ... sdaN для него не существуют.

Еще раз повторяю, на флэшках, созданных (отформатированных) под Windows XP таблицы разделов НЕТ .
vvj
Цитата
Еще раз повторяю, на флэшках, созданных (отформатированных) под Windows XP таблицы разделов НЕТ .
Вы уверены? Вот другая флэшка - только что форматнул в WXP. Как в FAT так и FAT32 - пробовал оба.
Код
/ $ usb 1-1: USB disconnect, address 5
usb 1-1: new high speed USB device using ST40-ehci and address 6
usb 1-1: Product: Flash Disk
usb 1-1: Manufacturer: USB 2.0
usb 1-1: SerialNumber: 91974500ab14b5
usb 1-1: configuration #1 chosen from 1 choice
scsi5 : SCSI emulation for USB Mass Storage devices
  Vendor: USB 2.0   Model: Flash Disk        Rev: 0.00
  Type:   Direct-Access                      ANSI SCSI revision: 02
SCSI device sda: 2015231 512-byte hdwr sectors (1032 MB)
sda: Write Protect is off
sda: assuming drive cache: write through
SCSI device sda: 2015231 512-byte hdwr sectors (1032 MB)
sda: Write Protect is off
sda: assuming drive cache: write through
sda:<7>usb-storage: queuecommand called
sda1
sd 5:0:0:0: Attached scsi removable disk sda
makc
Цитата(vvj @ Jan 17 2007, 13:52) *
Цитата
Еще раз повторяю, на флэшках, созданных (отформатированных) под Windows XP таблицы разделов НЕТ .
Вы уверены? Вот другая флэшка - только что форматнул в WXP. Как в FAT так и FAT32 - пробовал оба.


Уверен и проверял на Windows XP Corporate SP2 Rus. Но при этом отсутствие таблицы разделов на флешках, отформатированных в XP, является фактом эмпирическим. Причем это не только мое наблюдение, т.к. я встречал такие слова:
Цитата
Сейчас флэшки по состоянию "из магазина" обычно имеют таблицу разделов с одним разделом на весь объем. Стандартный форматер Винды не будет создавать разделы (я его заставить не смог, хотя флэшка была девственно занулена). Он сделает раздел с самого начала флэшки (т. е. вместо MBR будет сразу загрузочный сектор раздела). Если Вам хочется таблицу разделов с одним разделом, это несложно сделать в WinHex, там есть шаблон MBR. Чтобы Винда нормально работала с разделом, CHS-координаты можно не задавать. Необходимо задать смещение начала раздела (в секторах), размер раздела (в секторах), сигнатуру 55 AA (в двух последних байтах нулевого сектора). Это так, если поиграть захочется..
vvj
Спасибо - замаунтил! Под sda. Но точно могу сказать что тот флэш который с партишном (sda1) как был с ней - так и отался. Несмотря на форматирование в WXPSP2.
makc
Цитата(vvj @ Jan 17 2007, 15:37) *
Спасибо - замаунтил! Под sda. Но точно могу сказать что тот флэш который с партишном (sda1) как был с ней - так и отался. Несмотря на форматирование в WXPSP2.


Я уже сейчас точно не помню, как нужно форматировать, чтобы потерять таблицу разделов. А попробовать сейчас не на чем - все флешки мне нужны. smile.gif
Возможно дело в опции "быстрого" форматирования, при установке которой таблица разделов не стирается. Но я точно помню последний факт форматирования, когда на битой флешке (у нее в первых 16 мегабайтах было множество битых секторов и для их обхождения была создана соответсвующая таблица разделов), после форматирования в Windows XP, пропала таблица разделов и, соответственно, пропала возможность нормального использования этой флешки. Пришлось переразбивать ее снова из-под Linux'a. glare.gif
forever failure
Есть партишн на флэшке или нет - винда прочитает её одинаково. А вот в никсах есть отличия.
Зато винда не может обратится к нескольким разделам на флэшке, если их несколько, а в никсах -
запросто.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.