Переносим Debian sid на другой диск
prolinux
Опубликован: | 2023-07-17T06:48:49.073050Z |
Отредактирован: | 2023-07-17T06:48:49.073050Z |
Статус: | публичный |
Привет, Интернет... Продолжаем приключения с Debian sid на внешнем HDD. Пришло время перенести систему на лэптоп. Я старательно довёл систему до нужных кондиций, настроил окружение рабочего стола, пользовательские программы, некоторые системные возможности, загрузил с внешнего HDD полученную систему на разных компьютерах, протестировал поддержку их оборудования. И в этой демонстрации я покажу, как эту, уже готовую систему, перенести на другой HDD, например, на стационарный диск компьютера.
Необходимые принадлежности
-
Мне нужен лэптоп, который умеет грузиться с USB накопителей, в моём случае это старенький Acer с достаточно слабым процессором AMD и 4ГБ RAM, его стационарный диск имеет 500ГБ дискового пространства, он предварительно размечен и отформатирован по соответствующей схеме;
-
Живая флешка, с которой можно загрузить компьютер, можно использовать любой официальный дистрибутив, в этой демонстрации я буду использовать собственную сборку с копией этой же операционной системы;
-
Внешний 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
, в панели в итоге все выделенные объекты поменяли цвет на желтый.
Жму клавишу F5
, в модальном псевдо окне задаю параметры копирования, и жму псевдо кнопку "Дальше".
Файловый менеджер начинает копировать файлы и каталоги, их много, всего около 8.5 ГиБ.
Дожидаюсь полного завершения копирования, в итоге окно файлового менеджера выглядит следующим образом, в обеих точках монтирования расположен одинаковый набор файлов и каталогов.
Покидаю файловый менеджер (клавиша 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 в окне редактора с помощью буфера обмена.
Сохраняю изменения в файл и покидаю текстовый редактор.
Чтобы компьютер мог загрузить операционную систему с раздела 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
В результате выполнения этой команды приглашение командной строки изменило внешний вид, и теперь в нём вместо тильды красуется дробная черта.
Устанавливаю базовый загрузчик на стационарный 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.
Цель достигнута. На стационарном диске компьютера установлена операционная система Debian sid с внешнего HDD в три приёма.
Продолжение следует
Если обратить внимание на выхлоп lsblk на крайнем нижнем снимке экрана, можно увидеть, что только один раздел диска sda
имеет точку монтирования - sda1
. Второй раздел диска - sda2
- всё ещё не подключен. В одном из следующих выпусков этого блога я покажу, как перенести на него "хомяк" полученной системы. Продолжение следует...