Записываем загрузочный iso-образ на флеш накопитель в Debian

prolinux

Опубликован:  2023-07-03T10:11:06.834832Z
Отредактирован:  2023-07-03T10:11:06.834832Z
Статус:  публичный
46
0
0

В повседневной практике использования персонального компьютера случаются ситуации, когда USB-накопитель с записанной на нём живой операционной системой необходим как воздух. С такой флешки всегда можно загрузить машину, если штатная операционная система дала сбой, и поправить на стационарном диске некоторые файлы. В этом цикле статей мы рассматриваем одну из таких ситуаций, нам необходимо разметить стационарный диск компьютера, и в этой статье я покажу запись iso-образа на флешку под управлением Debian.

О задаче

Дистрибутивные iso-образы с живой операционной системой обычно делаются гибридными, с такого образа можно загрузить машину с любого типа носителя: USB-flash, CD/DVD привод, карта памяти и т.п., при этом, запись на каждый тип носителя должна производиться соответствующим конкретному типу способом.

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

Базовая операционная система

Все описанные действия я буду выполнять и показывать на базе операционной системы Debian, для всех других операционных систем с ядром Linux эти действия будут абсолютно аналогичными.

Большинство пользователей компьютера сегодня используют на своих домашних машинах коммерческую ОС всем известной и одиозной корпорации из Северной Америки, увы, описанные здесь действия под управлением этой ОС вряд ли возможны, в любом случае, в моём распоряжении такой системы нет, и эта демонстрация бесполезна для такого рода пользователей.

Готовим накопитель

Итак.., я скачал с ftp.yandex.ru два файла, вот как они выглядят в командной строке моего терминала:

$ ls -1
SHA256SUM
slinux-live-10.1-x86_64.iso

Первый файл - это текстовый файл с контрольными суммами, второй - iso-образ SimplyLinux. Для начала стоит убедиться, что загрузка образа прошла ровно и без ошибок, для этого достаточно проверить контрольную сумму файла.

$ sha256sum slinux-live-10.1-x86_64.iso 
7e3f7307f813f31847a3fba7f4d78ced81da83532ef5d42506b0d1181d4adbfe  slinux-live-10.1-x86_64.iso

Сравним полученное значение с эталоном из файла SHA256SUM.

$ grep slinux-live-10.1-x86_64.iso SHA256SUM 
7e3f7307f813f31847a3fba7f4d78ced81da83532ef5d42506b0d1181d4adbfe  slinux-live-10.1-x86_64.iso

Контрольные суммы совпадают до знака. Уточним размер исходного образа.

$ du -b slinux-live-10.1-x86_64.iso 
1951244288  slinux-live-10.1-x86_64.iso

По странному стечению обстоятельств в моей текущей событийности в моём распоряжении есть стандартный флеш-накопитель с неизвестным мне размером дискового пространства, маркировка на устройстве стёрлась от старости. Подключаю накопитель в разъём. Идентифицировать устройство в системе мне поможет программа lsblk.

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 119,2G  0 disk 
└─sda1   8:1    0 119,2G  0 part /
sdb      8:16   1   3,8G  0 disk 
├─sdb1   8:17   1   2,8G  0 part 
└─sdb2   8:18   1     1G  0 part 
sr0     11:0    1  1024M  0 rom

Из выхлопа lsblk я определяю, что моё устройство инициализировано системой как sdb и на нём существуют два каких-то раздела, ни один раздел накопителя на текущий момент не смонтирован, в графе MOUNTPOINTS напротив каждого раздела отсутствует отметка - важная деталь, на которую обязательно следует обращать внимание. Уточним размер дискового пространства накопителя в байтах, чтобы сравнить с размером исходного iso-образа.

$ udisksctl info -b /dev/sdb | grep Size
    Size:                       4027580416

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

$ sudo wipefs -a /dev/sdb
[sudo] пароль для newbie: 
/dev/sdb: 2 bytes were erased at offset 0x000001fe (dos): 55 aa
/dev/sdb: calling ioctl to re-read partition table: Выполнено

Для этой операции требуются права суперпользователя системы, их я получил при помощи программы sudo и пароля текущего пользователя. Накопитель готов, можно приступать к записи.

Записываем iso-образ на накопитель

Низкоуровневую запись iso-образа на накопитель по силам реализовать программе dd, в этом случае её опять нужно запускать с правами суперпользователя, опять sudo решает.

$ sudo dd oflag=direct if=slinux-live-10.1-x86_64.iso of=/dev/sdb bs=1M status=progress

В команде я указал флаг of, и задал в нём идентификатор накопителя, /dev/sdb в данном случае. Вот как это выглядит в моём терминале (нижний край окна):

kZbzkcCbvE.png

Как видно на снимке экрана, процесс dd занял терминал на время записи, нужно дождаться завершения этого процесса, когда в терминале вновь появится приглашение командной строки, это будет означать, что iso-образ успешно записан на флешку. Но не торопитесь вынимать накопитель из разъёма USB...

Проверяем накопитель по контрольной сумме

В результате записи образа на накопитель в моём терминале появился следующий выхлоп:

1949302784 bytes (1,9 GB, 1,8 GiB) copied, 253 s, 7,7 MB/s1951244288 bytes (2,0 GB, 1,8 GiB) copied, 253,267 s, 7,7 MB/s

1860+1 records in
1860+1 records out
1951244288 bytes (2,0 GB, 1,8 GiB) copied, 253,377 s, 7,7 MB/s

В последней строчке я вижу размер записанного образа, он совпадает со значением, которое показала программа du в этой демонстрации на стадии подготовки накопителя. Это значение необходимо, чтобы проверить контрольную сумму полученного накопителя, проверять будем контрольную сумму блока этого же размера на флешке, делается это такой командой.

$ sudo head -c 1951244288 /dev/sdb | sha256sum 
7e3f7307f813f31847a3fba7f4d78ced81da83532ef5d42506b0d1181d4adbfe  -

Поднимаю взгляд по окну терминала чуть выше, где проверял контрольную сумму образа и сравнивал её с эталоном из файла SHA256SUM, и вижу, что контрольная сумма полученная на накопителе совпадает с эталоном.

hQVc4q0tm1.png

Всё, задача решена, iso-образ записан на накопитель без сбоев и ошибок, флешку можно вынимать из разъёма и грузить с неё любой компьютер, который умеет грузиться с таких устройств. Совпавшая контрольная сумма даёт определённую гарантию, накопитель готов к использованию.

Выводы и умозаключения

  1. Перед записью следует убедиться, что размер дискового пространства выбранного накопителя полностью вмещает записываемый iso-образ;

  2. Записать гибридный iso-образ на USB-flash накопитель можно различными способами, но если на вашем компьютере уже есть операционная система с ядром Linux, то самый простой способ - это терминал и программа dd;

  3. Перед записью следует убедиться, что ни один раздел флешки не смонтирован, и если какой-то раздел смонтирован, его следует отмонтировать;

  4. Проверка контрольной суммы на уже записанном накопителе избавит в перспективе от многих хлопот и гарантирует полную аутентичность полученного носителя исходному iso-образу.

Метки:  linux, debian, lsblk, partitioning, simply, dd, grep, head, pipe, iso