Переносим Debian sid на другой диск

prolinux

Опубликован:  2023-07-17T06:48:49.073050Z
Отредактирован:  2023-07-17T06:48:49.073050Z
Статус:  публичный
43
0
0

Привет, Интернет... Продолжаем приключения с Debian sid на внешнем HDD. Пришло время перенести систему на лэптоп. Я старательно довёл систему до нужных кондиций, настроил окружение рабочего стола, пользовательские программы, некоторые системные возможности, загрузил с внешнего HDD полученную систему на разных компьютерах, протестировал поддержку их оборудования. И в этой демонстрации я покажу, как эту, уже готовую систему, перенести на другой HDD, например, на стационарный диск компьютера.

Необходимые принадлежности

  1. Мне нужен лэптоп, который умеет грузиться с USB накопителей, в моём случае это старенький Acer с достаточно слабым процессором AMD и 4ГБ RAM, его стационарный диск имеет 500ГБ дискового пространства, он предварительно размечен и отформатирован по соответствующей схеме;

  2. Живая флешка, с которой можно загрузить компьютер, можно использовать любой официальный дистрибутив, в этой демонстрации я буду использовать собственную сборку с копией этой же операционной системы;

  3. Внешний HDD на котором установлен и настроен Debian sid, который можно использовать как донор многократно для нескольких компьютеров.

Готовим окружение

Подключаю "живую" флешку в USB-разъём своего лэптопа, включаю компьютер и загружаю его с этого накопителя. В операционной системе на моей флешке окно терминала появляется автоматически, программа в автозагрузке. В этом терминале становлюсь суперпользователем.

$ sudo -i

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

Подключаю в соседний USB-разъём внешний HDD, на котором установлен Debian sid. Необходимо определиться с идентификаторами разделов, так как у компьютера есть несколько накопителей:

  • USB-флешка;

  • внешний HDD;

  • стационарный диск компьютера.

Все эти устройства являются блочными, так их называют, и файлы всех этих устройств хранятся в системном каталоге /dev, нужно определить, какой файл какому накопителю соответствует. Посмотрим на выхлоп программы lsblk.

# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0    7:0    0   1,6G  1 loop /run/initramfs/memory/bundles/01-core.sb
sda      8:0    0 465,8G  0 disk 
├─sda1   8:1    0    51G  0 part 
└─sda2   8:2    0 414,8G  0 part 
sdb      8:16   1   3,8G  0 disk 
├─sdb1   8:17   1   2,8G  0 part /run/initramfs/memory/changes
│                                /run/initramfs/memory/data
└─sdb2   8:18   1     1G  0 part 
sdc      8:32   0 232,9G  0 disk 
├─sdc1   8:33   0    50G  0 part 
└─sdc2   8:34   0 182,9G  0 part 
sr0     11:0    1  1024M  0 rom  
zram0  254:0    0   512M  0 disk

Как видно из представленного выхлопа, стационарный диск компьютера определился как sda, на нём есть два раздела, оба раздела не имеют точки монтирования. Внешний HDD определился как sdc, на нём тоже два раздела, и, аналогично, оба раздела не имеют точки монтирования. Флешка в системе определилась как sdb, один из разделов флешки имеет точку монтирования, с него загружена действующая операционная система.

Таким образом у меня есть раздел sda1 - на него я буду копировать файлы и каталоги операционной системы, установленной на разделе sdc1, оба раздела, чтобы продолжить работу с ними, должны быть смонтированы.

В системном каталоге /mnt создаю два вложенных каталога с именами sda и sdc, в них будут расположены точки монтирования соответствующих разделов.

# mkdir /mnt/sda /mnt/sdc

Монтирую каждый раздел в соответствующий каталог. Начну с sda1.

# mount /dev/sda1 /mnt/sda

В каталог /mnt/sda я буду копировать файлы. Монтирую второй раздел.

# mount /dev/sdc1 /mnt/sdc

Из каталога /mnt/sdc я буду копировать файлы в каталог /mnt/sda.

Копируем файлы и каталоги операционной системы

Оба только что смонтированных раздела имеют файловую систему ext4, это значит, что в каждой точке монтирования, которые я создал, есть каталог журнала с именем lost+found, и его необходимо исключить из списка копируемых файлов и каталогов. В "живой" системе, которая на текущий момент загружена, есть консольный файловый менеджер Midnight Commander, он и поможет мне выполнить операцию копирования без всяких затруднений. Запускаю его и захожу на обе только что созданные точки монтирования в левой и правой панелях менеджера.

# mc

В точке монтирования /mnt/sdc с помощью клавиши Insert выделяю все вложенные файлы и каталоги, кроме каталога журнала - lost+found, в панели в итоге все выделенные объекты поменяли цвет на желтый.

qDk1YJLkMr.png

Жму клавишу F5, в модальном псевдо окне задаю параметры копирования, и жму псевдо кнопку "Дальше".

bMxqQODU1g.png

Файловый менеджер начинает копировать файлы и каталоги, их много, всего около 8.5 ГиБ.

Pz0IrKAdsf.png

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

5Qy8AYFZZ5.png

Покидаю файловый менеджер (клавиша F10). Внешний HDD больше не нужен, его нужно отмонтировать.

# umount /mnt/sdc

Отключить на его разъёме питание.

# udisksctl power-off -b /dev/sdc

И извлечь его разъём из гнезда USB. Он больше не нужен.

Устанавливаем загрузчик на стационарный HDD

У операционной системы Debian sid есть системный файл /etc/fstab, в нём вписаны все устройства, которые система монтирует при загрузке, и на текущий момент в этом файле указан идентификатор раздела sdc1 внешнего HDD. Его необходимо заменить в этом файле на идентификатор раздела sda1. Определить идентификатор можно с помощью программы blkid.

# blkid /dev/sda1
/dev/sda1: LABEL="rootfs" UUID="e2f0ac78-eff5-403e-8d70-989a6ff42d1a" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="94bd6c95-01"

Копирую полученный UUID в буфер обмена, запускаю текстовый редактор NeoVim и открываю в нём соответствующий fstab из точки монтирования /mtn/sda.

# nvim /mnt/sda/etc/fstab

Вписываю полученный UUID в окне редактора с помощью буфера обмена.

Q4TdUIu7Y7.png

Сохраняю изменения в файл и покидаю текстовый редактор.

Чтобы компьютер мог загрузить операционную систему с раздела sda1 своего стационарного HDD, в MBR этого накопителя нужно установить базовый загрузчик - GRUB. Для этого монтирую временные файловые системы, выполняю последовательно следующие четыре команды.

# mount --bind /dev /mnt/sda/dev
# mount --bind /sys /mnt/sda/sys
# mount --bind /proc /mnt/sda/proc
# mount --bind /dev/pts /mnt/sda/dev/pts

Меняю окружение в текущем терминале.

# LANG=C.UTF-8 chroot /mnt/sda /bin/bash

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

EHgVfs8ijD.png

Устанавливаю базовый загрузчик на стационарный HDD компьютера.

# grub-install /dev/sda

Команда откликнется следующим выхлопом.

Installing for i386-pc platform.
Installation finished. No error reported.

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

# update-grub

У этой команды выхлоп тоже не содержит ошибок.

Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-6.3.0-2-amd64
Found initrd image: /boot/initrd.img-6.3.0-2-amd64
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
done

Done! Покидаю текущее окружение и отмонтирую временные файловые системы.

# exit
# umount /mnt/sda/dev/pts
# umount /mnt/sda/proc
# umount /mnt/sda/sys
# umount /mnt/sda/dev

Отключаю точку монтирования /mnt/sda

# umount /mnt/sda

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

4TkVLXLhiX.png

Цель достигнута. На стационарном диске компьютера установлена операционная система Debian sid с внешнего HDD в три приёма.

Продолжение следует

Если обратить внимание на выхлоп lsblk на крайнем нижнем снимке экрана, можно увидеть, что только один раздел диска sda имеет точку монтирования - sda1. Второй раздел диска - sda2 - всё ещё не подключен. В одном из следующих выпусков этого блога я покажу, как перенести на него "хомяк" полученной системы. Продолжение следует...