LINUX.ORG.RU

Многотомная загрузочная флешка

 ,


0

2

Есть одна флешка:

# fdisk -l /dev/sdb

Disk /dev/sdb: 500 GiB, 536870912000 bytes, 1048576000 sectors
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: 0xe61e9c33

Device    Boot     Start        End    Blocks  Id System
/dev/sdb1 *         2048    8390655   4194304   c W95 FAT32 (LBA)
/dev/sdb2        8390656 1048575999 520092672   c W95 FAT32 (LBA)
# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                                
Model: General UDisk (scsi)
Disk /dev/sdb: 537GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  4296MB  4295MB  primary  fat32        boot, lba
 2      4296MB  537GB   533GB   primary  fat32        lba

(parted) q

На первый раздел уже установлена systemrescuecd с помощью скрипта на их диске. Проблема: старые компьютеры (без UEFI) по usb с этой флешки не грузятся - выбирается носитель, далее наблюдается чёрный экран.

★★★★★

Попробуй на загрузочный раздел (/dev/sdb1) выставить id=6 (FAT16) или id=e (W95 FAT16 (LBA)). Ось определяет тип диска на основе boot сектора, в mbr главное - тип (FAT) без конкретики, но загрузчик BIOS может не распознавать раздел, отличный от FAT16 (например, отсутствует распознавание usb hdd, только usb fdd или usb cdrom).

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

Есть другая флешка:

Disk /dev/sdb: 7.5 GiB, 8019509248 bytes, 15663104 sectors
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: 0x000a4873

Device    Boot Start       End  Blocks  Id System
/dev/sdb1 *        1  15663103 7831551+  c W95 FAT32 (LBA)

С неё всё нормально грузится.

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

Попробуй на загрузочный раздел (/dev/sdb1) выставить id=6 (FAT16) или id=e (W95 FAT16 (LBA)).

Нет, не работает.

ados ★★★★★ ()

Чего это за флеш такой, в полтерабайта размером? Я делал флешку путем создания на ней разделов, копированием на разделы файлов, установкой загрузчиков на разделы и еще одного в MBR. Можно было загрузчики на разделы и не ставить, но я хотел именно так. В качестве загрузчиков был syslinux в MBR и он же, в виде extlinux - на разделах.

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

Учитывая твоё замечание, можно попробовать перенести /dev/sdb2 в расширенный раздел. Возможно, BIOS не понимает два основных одного типа.

pS ()
Ответ на: комментарий от pS
# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.24.1).
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: 500 GiB, 536870912000 bytes, 1048576000 sectors
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: 0x000a0334

Device    Boot     Start        End    Blocks  Id System
/dev/sdb1 *         2048    8390655   4194304   b W95 FAT32
/dev/sdb2        8390656 1048575999 520092672   5 Extended
/dev/sdb5        8392704 1048575999 520091648   b W95 FAT32

Command (m for help): q

Не работает.

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

установкой загрузчиков на разделы и еще одного в MBR.

Спасибо тебе. Одна команда:

dd bs=440 count=1 conv=notrunc if=/usr/share/syslinux/mbr.bin of=/dev/sdb

и всё заработало.

Чего это за флеш такой, в полтерабайта размером?

Обыкновенная на вид флешка. Необычен только объём памяти. Новая, может подвох есть.

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

Хм. Вообще-то загрузчик занимает не 440, а 446 байт, но раз работает... хз.

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

Не знаю. Я думал скрипт из systemrescuecd его поставил (syslinux там). А как это узнать?

ados ★★★★★ ()
Ответ на: комментарий от yars068
# du -b /usr/share/syslinux/mbr.bin
440    /usr/share/syslinux/mbr.bin

syslinux у меня версии 4.07.

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

Вроде этот скрипт сам код загрузчика mbr не трогает, не помню. Но ты загрузчик затёр. Как ранее создавалась флеха — неизвестно. А так можно на дамп медитировать.

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