LINUX.ORG.RU

512kb в debian.iso для загрузки по схеме MBR

 , , ,


0

1

Есть 32bit образ Debian и документация к нему. В этой документации предлогают готовить флешку следующим образом:

# cp debian.iso /dev/sdX
# sync

Мне вот интересно как будет работать Legacy BIOS в данной ситуации. Ведь Legacy BIOS запускает первичный загрузчик который находиться в первом секторе диска. Каким образом это реализуется при копировании данных черзе cp?

И как это совпадает с файловой системой. Там наверно есть какой-то файл который размещен в певром секторе. Интересно и не понятно.

UPD:

Там же на флешке еще должен быть bootable раздел, или при таком копироании флешка становиться ISO 9660 и в таком случае bootable partition не требутеся?

Возникает впрос прочему cp, а не dd. В данном контексте от root сp ведет себя как dd?

UPD1:

Раскрываем секреты загрузочных ISO-образов от artyomsoft

https://habr.com/ru/companies/ruvds/articles/706070/

Спасибо, @Flotsky за ссылку на статью.



Последнее исправление: lbvf50txt (всего исправлений: 4)

У меня подозрение, что это удалит файл /dev/sdX и вместо него попытается скопировать файл, но места в deftmpfs не хватит.

Есть кто-нибудь, кому не лень проверить?

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

Ну что за глупости вы пишете? Записывать загрузочную флешку через dd это общая практика. dd еще более низкоуровенвый чем cp.

lbvf50txt
() автор топика
Ответ на: комментарий от Xenius

но места в deftmpfs не хватит.

Это просто копирование. То же самое если копировать данные с одного диска на другой. Файловая система в RAM тут ни каким боком не стоит.

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

Ну что за глупости вы пишете? Записывать загрузочную флешку через dd это общая практика. dd еще более низкоуровенвый чем cp.

Я как раз про cp и говорю. Мне почему-то кажется что он удалит файл устройства и запишет обычный файл по тому же имени, если так сделать, но надо бы проверить.

dd-то конечно запишет данные на флешку, тут я уверен, а вот про cp не уверен.

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

Если идти от идеи «в linux всё файл», то вполне спокойно перезапишет, разве что такого блочного устройства не будет, тогда пойдёт тратить tmpfs раздела.

Не популярно, привычнее dd использовать.

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

У меня подозрение, что это удалит файл /dev/sdX и вместо него попытается скопировать файл

Странно, что там не cat debian.iso > /dev/sdX

devl547 ★★★★★
()
Ответ на: комментарий от Xenius
[lbvf50txt ~]# lsblk
NAME                                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
sdc                                             8:32   1  28,9G  0 disk  
└─sdc1                                          8:33   1    26G  0 part  /run/media/lbvf50txt/F698-C679
sr0                                            11:0    1  1024M  0 rom   
[lbvf50txt ~]# isofile="/home/lbvf50txt/Debian/debian-12.5.0-amd64-DVD-1.iso"
[lbvf50txt ~]# time cp $isofile /dev/sdc
cp: переписать '/dev/sdc'? y
real	13m29,294s
user	0m0,257s
sys	0m14,627s
[lbvf50txt ~]# lsblk -f
NAME                                          FSTYPE      FSVER            LABEL                 UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sdc                                           iso9660     Joliet Extension Debian 12.5.0 amd64 1 2024-02-10-12-53-14-00                              
└─sdc1                                        vfat        FAT32                                  F698-C679                              25,5G     2% /run/media/lbvf50txt/F698-C679
sr0                                                                                                                                                  
[lbvf50txt ~]# 

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

А размонтировать перед копированием?

u5er ★★
()

Хватит всем. Гейтс посрамлён

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

После cp не изменилась метка F698-C679, то есть или тут по второму кругу то же самое копировалось или не получилось.

И надо было размонтировать раздел прежде чем перезаписывать.

Более надёжно было бы выполнить команду:

ls -l /dev/sd*

Сразу видно было бы, остался /dev/sdc блочным устройством или был заменен на обычный файл.

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

копировалось или не получилось.

Все получилось. Надо было размонировать перед началом копирования. Но даже без размонтирования получилось.

Посе cp метка раздела изменилась на DEB0-0001, предидущая метка F698-C679 была от GPT раздела, вероятно сохранилась в kernel так как файловую систему не размонтировали. После вынимания и вставления флешки и перезапуска X вот как отображается.

sdc                               iso9660     Joliet Extension Debian 12.5.0 amd64 1 2024-02-10-12-53-14-00                              
├─sdc1                            iso9660     Joliet Extension Debian 12.5.0 amd64 1 2024-02-10-12-53-14-00                     0   100% /run/media/lbvf50txt/Debian 12.5.0 amd64 1
└─sdc2                            vfat        FAT16                                  DEB0-0001     

Еще до начала записи у меня глючила система по не понянтым причинам, после записи я перезапустил X сервер и заново вставил флешку. В любом случае надо перезаписывать образ на i386.

Эксперемент показал, что cp переписывает iso файл, около 4GB за 13 минут.

Сейчас зашел через sudo -i, запустил lsblk и ls для /dev/sdc*.

[lbvf50txt ~]# lsblk
NAME                                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
sdc                                             8:32   1  28,9G  0 disk  
├─sdc1                                          8:33   1   3,7G  0 part  /run/media/lbvf50txt/Debian 12.5.0 amd64 1
└─sdc2                                          8:34   1   9,3M  0 part  
sr0                                            11:0    1  1024M  0 rom   
[lbvf50txt ~]# ls -l /dev/sdc*
brw-rw---- 1 root disk 8, 32 сен 23 20:01 /dev/sdc
brw-rw---- 1 root disk 8, 33 сен 23 20:01 /dev/sdc1
brw-rw---- 1 root disk 8, 34 сен 23 20:01 /dev/sdc2

lbvf50txt
() автор топика
Последнее исправление: lbvf50txt (всего исправлений: 6)

bootable раздел создается размером в 1мб.

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

Ну, видимо, cp тоже работает. Но dd лучше тем, что позволяет смотреть прогресс, особенно с status=progress или можно pv для прогресс-бара взять.

В общем суть там такова, что на компакт диске первый сектор 2048 байт не используется, поэтому если туда записать загрузочный код и таблицу разделов, то работоспособность загрузки по el-torito не портится. Так что ничего не мешает сделать образ загрузочный одновременно по четырём протоколам:

UEFI / flash, UEFI / cd, BIOS / flash, BIOS / cd.

Если есть желание, можно сделать загрузочную флешку и не через dd, а вручную, причём универсальную, и для BIOS и для UEFI, используя другую файловую систему вместо iso9660, что может быть полезно если есть желание добавлять/редактировать флешку после записи или одновременно использовать её и для переноса данных. хотя для второго можно просто создать ещё один раздел.

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

Cогласен: возможность отслеживать прогрес в dd большое подоспорье.

dd if=debian-xx.iso of=/dev/sdb bs=4M status=progress; 
sync;

Вчера пока 13 минут копировалось через cp отслеживал происходящие через:

cat /proc/diskstats | grep sdc

Считал как измениись показатели, идет ли чтение.

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

В данном применении, это аналоги. Не лучше и не хуже. Плохие в том аспекте, что после них придётся «восстанавливать» флешку к нормальному функционированию.

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

«восстанавливать» флешку к нормальному функционированию.

Да. Надо при помощи parted создать новую таблицу разделов. Потом эти разделы отоформатировать. Перед этим узнать как называется флешка через lsblk. В моем случае sdc.

lsblk 
sudo parted sdc
sudo umount /dev/sdX1
sudo mkfs.vfat -I /dev/sdc1

ВНИМАНИЕ ЧИТАЮЩИМ: при запуске parted необходимо указать устройство, parted sdX, инчае запуститься для sda и можно посносить разделы на основном винте.

lbvf50txt
() автор топика
Ответ на: комментарий от andytux

В данном применении, это аналоги.

Т.е. cp копирует не файлы а блоки в данной ситуации? Где про этом можно почитать?

UPD: Логично что да, копируем файл в файл.

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

А где ты там увидел файлы?.. В обоих случаях, единственный файл *.iso. И пункт назначения одинаковый.

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

/dev это не файловая система, /sys это не файловая система, /proc это не файловая система.

sudo cp m_storage.img /dev/m_storage
cp: error writing '/dev/m_storage': No space left on device
sudo cp m_storage.img /sys/m_storage
cp: cannot create regular file '/sys/m_storage': Permission denied
sudo cp m_storage.img /proc/m_storage
cp: cannot create regular file '/proc/m_storage': No such file or directory

Ты когда в них пишешь, через VFS дергаются определенные функции в ядре.

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

Видимо это зависит от конкретного дистрибутива, уменя вот файлы в /dev вполне себе создаются. Написано devtmpfs в /proc/mounts.

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

/dev это не файловая система, /sys это не файловая система, /proc это не файловая система.

Да, /dev не файловая система что на диске опереляет файлы и каталоги, это интерфейсы к драйверам устройств позволяющие обращаться к ним через I/O ситемные вызовы. У Курячего c Маслинским в книге названо просто «файлы-дырки».

Хороший комментарий. Сейчас зашел еще раз перечитать про FHS. И запустил file /dev/sdc, получил отклик - блочное устройство.

Чем дальше гуглю, тем интересней.

lbvf50txt
() автор топика
Последнее исправление: lbvf50txt (всего исправлений: 2)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.