LINUX.ORG.RU

Linux не видит таблицу разделов

 


0

3

Привет, ЛОР!

Такая вот штука: есть microsd карта, на ней есть два раздела. Windows и MacOS без проблем их видят и монтируют. Linux же не создаёт девайс ноды для разделов. Скажи, в какую сторону копать?

Дамп fdisk:

~ sudo fdisk /dev/sdb

Welcome to fdisk (util-linux 2.33.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sdb: 119.1 GiB, 127865454592 bytes, 249737216 sectors
Disk model: MassStorageClass
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xa1af3cba

Device     Boot     Start       End   Sectors  Size Id Type
/dev/sdb1            2048 186648575 186646528   89G  7 HPFS/NTFS/exFAT
/dev/sdb2       186648576 249737215  63088640 30.1G ee GPT

Дёргать blockdev –rereadpt и partprobe я тоже пробовал, но это не помогает.

Ответ на: комментарий от shkolnik_2022

Восстановить что? Таблица разделов в порядке. Windows, MacOS и девайс, в котором эта флешка работает, разделы видят. Их только Linux не видит почему-то.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от hotpil

Что значит «не видит»?

Linux же не создаёт девайс ноды для разделов.

Что будет, если сделать mount?

На что сделать mount? Поясню: в /dev нет файлов sdb1 и sdb2. Только sdb.

hateyoufeel ★★★★★ ()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от anonymous
~ sudo gdisk -l /dev/sdb
GPT fdisk (gdisk) version 1.0.5

Partition table scan:
  MBR: hybrid
  BSD: not present
  APM: not present
  GPT: not present


***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. 
***************************************************************

Disk /dev/sdb: 249737216 sectors, 119.1 GiB
Model: MassStorageClass
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): F141C537-02B4-4B9A-B98D-EDD183AFDF9B
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 249737182
Partitions will be aligned on 2048-sector boundaries
Total free space is 63090621 sectors (30.1 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048       186648575   89.0 GiB    0700  Microsoft basic data

Думаешь, линукс видит невалидную GPT и пытается её интерпретировать вместо того, чтобы использовать MBR? Как это вообще проверить можно? В логах ядра ничего криминального не вижу.

hateyoufeel ★★★★★ ()
Последнее исправление: hateyoufeel (всего исправлений: 2)
Ответ на: комментарий от hateyoufeel

Partition table scan: MBR: hybrid

Грубо говоря, в таблице разделов непонятно что. Поэтому и возможны всякие глюки. Где-то работает, где-то нет.

andytux ★★★★ ()
Ответ на: комментарий от Khnazile
 ▲ ~ sudo blockdev -v --rereadpt /dev/sdb
reread partition table succeeded.

 ▲ ~ sudo partprobe -v /dev/sdb          
partprobe (GNU parted) 3.2
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by <http://git.debian.org/?p=parted/parted.git;a=blob_plain;f=AUTHORS>.

 ▲ ~ ls -l /dev/sdb*
brw-rw---- 1 root disk 8, 16 Mar 21 07:17 /dev/sdb
hateyoufeel ★★★★★ ()
Ответ на: комментарий от hateyoufeel

Интересно, что никаких ошибок и даже предупреждений. А в логах ядра после этих команд ничего не появилось?

Еще есть такая мысль: возможно, на этом диске есть суперблок фейкрейда, и разделы на самом деле появляются в /dev/mapper/. Но я не уверен, что это правда именно так работает, просто рандомная мысль.

Khnazile ★★★★★ ()
Ответ на: комментарий от hateyoufeel

как это починить?

Запоминай оффсеты разделов, сноси их и создавай заново через тот же fdisk. Ну и сделай бэкап с помощью dd, на случай если выяснится, что там было что-то сложнее кривой таблицы разделов.

unicorne ()
Последнее исправление: unicorne (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Вот, чисто на поржать - загрузись с лайф-флэшки любого РАСПРОСТРАНЁННОГО дистрибутива линукс и попробуй эту эсдэшку вставить.

А, и ещё, серьёзнее - а чья карточка? когда-то в лохматые года кто-то из производителей карточек стабильно не виделся в линуксе. Может это опять всплыло?

ChekPuk ★★★ ()
Ответ на: комментарий от Khnazile

Интересно, что никаких ошибок и даже предупреждений. А в логах ядра после этих команд ничего не появилось?

Нет. В логах только то что сама карта задетектилась и всё.

Еще есть такая мысль: возможно, на этом диске есть суперблок фейкрейда, и разделы на самом деле появляются в /dev/mapper/. Но я не уверен, что это правда именно так работает, просто рандомная мысль.

Точно нет. Это просто флешка от одного девайса. Форматировалась и разделы на ней создавались в венде.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от ChekPuk

Вот, чисто на поржать - загрузись с лайф-флэшки любого РАСПРОСТРАНЁННОГО дистрибутива линукс и попробуй эту эсдэшку вставить.

Пробовал прокидывать в виртуалку с убантой. То же самое.

А, и ещё, серьёзнее - а чья карточка? когда-то в лохматые года кто-то из производителей карточек стабильно не виделся в линуксе. Может это опять всплыло?

Карточка SanDisk Ultra 128G. Ещё раз, сама карточка линуксом опознаётся. fdisk позволяет на ней разделы делать. dd пишет и читает. Только девайс-ноды для разделов не создаются.

hateyoufeel ★★★★★ ()

В общем, это похоже косяк в линуксе. Если тип второго раздела сменить с GPT (0xEE) на что-то другое, то девайс-ноды создаются. Проблема в том, что так делать нельзя: флешка в девайсе не будет работать :( Пока накостылил скрипт, чтобы монтировать разделы по оффсету.

Если кому интересно, вот первые 512 байт флешки с таблицей разделов в base64:

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6PK+hAAAAICEAB1VzYgAI
AAAAACALAFV0Yu5rMrkACCALAKjCAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVao=
hateyoufeel ★★★★★ ()
Ответ на: комментарий от hateyoufeel

https://www.rodsbooks.com/gdisk/hybrid.html#reactions

If you adjust the hybrid MBR with fdisk so that the 0xEE partition covers a later area of the disk, older versions of Linux become unable to find any partitions on the disk. Newer versions of Linux will accept the disk, but they’ll interpret it as an MBR disk.

Судя по всему, hybrid MBR это не часть стандарта EFI и все просто делают кто во что горазд:

Hybrid MBRs are not part of Intel’s EFI GPT standard. Thus, the details of how different OSes and utilities interpret them varies considerably.

kirk_johnson ★☆ ()
Последнее исправление: kirk_johnson (всего исправлений: 3)
Ответ на: комментарий от kirk_johnson

Newer versions of Linux will accept the disk, but they’ll interpret it as an MBR disk.

Насколько новым должен быть Linux? Потому что у меня 5.4. Мб это поведение где-то настраивается?

hateyoufeel ★★★★★ ()
Ответ на: комментарий от hateyoufeel

Вроде как, с 2013 года все эти проверки убраны и ядро видит диск как MBR в таком случае. Покажи dmesg после того, как вставил.

kirk_johnson ★☆ ()
Ответ на: комментарий от kirk_johnson

Вот.

[72088.161596] scsi 0:0:0:1: Direct-Access     Generic  MassStorageClass 1536 PQ: 0 ANSI: 6
[72088.484013] sd 0:0:0:1: [sdb] 249737216 512-byte logical blocks: (128 GB/119 GiB)
[72088.485005] sd 0:0:0:0: [sda] Attached SCSI removable disk
[72088.486571] sd 0:0:0:1: [sdb] Write Protect is off
[72088.486576] sd 0:0:0:1: [sdb] Mode Sense: 21 00 00 00
[72088.487281] sd 0:0:0:1: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[72088.701636] sd 0:0:0:1: [sdb] Attached SCSI removable disk

Это всё, что там есть про sdb.

hateyoufeel ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.