Programming, electronics, lifestyle
Как видно из скриншота ниже, в ОС для удобства обращения к блочным устройствам автоматически создаются различные симлинки.
UUID задается при форматировании файловой системы и хранится в её суперблоке. Поэтому при побайтовом копировании разделов UUID
не меняется.
При подключении нескольких блочных устройств с одинаковыми UUID
, в /dev/disk/by-uuid
отображается только последнее подключенное устройство. Подробнее rus-linux.net.
PARTUUID также не меняется при побайтовом копировании. А также не меняется при ручном изменении размера файловой системы. Однако, как пример, в Raspberry Pi при первом запуске системы вызывается raspi-config
для расширения rootfs
раздела до максимально возможного. При её исполнении меняется partuuid
, а также меняется partuuid
указанный в /boot/cmdline.txt
.
Подробнее о разнице UUID
и PARTUUID
здесь raspberrypi.stackexchange.com.
Файл /boot/cmdline.txt
содержит сроку аргументов для загрузчика. В параметре “root” указывается путь к разделу rootfs
.
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=7d8d8169-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
Вместо указания конкретного PARTUUID
(например root=PARTUUID=37665771-02
), можно использовать root=/dev/sda2
.
Не работают следующие варианты:
root=UUID=<валидный UUID как в /dev/disk/by-uuid/\*>
root=PATH=<валидный путь как в /dev/disk/by-path/\*>
root=/dev/disk/by-path/<валидный идентификатор пути>
В
raspi-config
жестко прописаны/dev/mmcblk0
и/dev/mmcblk0p2
, поэтому, чтобы сделать resize с помощью этой утилиты на usb-флешкарте нужно заменить эти строки на пути mountpoint'ам usb-флешки, например на/dev/sda
и/dev/sda2
.cp /usr/bin/raspi-config ~ sed -i 's/mmcblk0p/sda/' ~/raspi-config sed -i 's/mmcblk0/sda/' ~/raspi-config sudo ~/raspi-config
Для копирования ОС можно воспользоваться утилитой dd
. Она умеет побайтово копировать. Она работает с абстракцией файла, поэтому может производить копирование блочных устройств в файлы и наоборот совершенно прозрачно.
sudo dd status=progress if=/dev/mmcblk0 of=<filename.img> bs=100M count=3065
if
– устройство источникof
– устройство получательbs
– размер чанка для копированияcount
– количество чанков для копирования (можно указать чуть больше)status
– вывод в терминал статуса копирования. В некоторых пакетах dd
не предусмотрен показ статус, тогда для этого можно воспользоваться утилитой pv
. Подробнее на askubuntu.com.Также у этой утилиты есть и другие параметры, например параметр смещения seek
.
Форматирование фaйловой системы mkfs
sudo mkfs -t ext4 -L root /dev/sda6
mkfs [options] [-t <type>] [fs-options] <device> [<size>]
Резервирование места на диске
sudo tune2fs -m1 /dev/mmcblk0p2
tune2fs 1.43.4 (31-Jan-2017)
Setting reserved blocks percentage to 1% (19287 blocks)
Источники