Debian-replace-root » История » Редакция 13
Редакция 12 (Андрей Волков, 2024-06-20 00:24) → Редакция 13/16 (Андрей Волков, 2024-09-06 19:44)
h1. Debian-replace-root h2. Подготовка h3. Устанавливаем необходимое <pre><code class="shell"> dpkg --list lsof psmisc apt-get install lsof psmisc </code></pre> h3. Останавливаем все важное <pre><code class="shell"> systemctl --state running systemctl stop docker.socket docker.service </code></pre> h3. Отключаем swap <pre><code class="shell"> swapon -s systemctl stop ... </code></pre> h3. Создаём точки монтирования <pre><code class="shell"> mkdir /mnt/newroot mount /dev/system/root /mnt/newroot mkdir /mnt/newroot/mnt/oldroot </code></pre> h3. Переводим видимость / в private <pre><code class="shell"> findmnt -o TARGET,PROPAGATION / findmnt -o TARGET,PROPAGATION mount --make-rprivate / findmnt -o TARGET,PROPAGATION / </code></pre> h2. Переключение h3. Подмена корневой ФС Выполнять команды нужно вместе, иначе есть риск обрыва консоли <pre><code class="shell"> pivot_root /mnt/newroot /mnt/newroot/mnt/oldroot && \ for MNT in dev proc sys run; do mount --move /mnt/oldroot/$MNT /$MNT; done </code></pre> h3. Перезапуск ssh <pre><code class="shell"> systemctl restart ssh systemctl status ssh -n0 </code></pre> h3. Перезапуск сервисов <pre><code class="shell"> systemctl daemon-reexec fuser -vm /mnt/oldroot systemctl restart dbus systemctl restart systemd-logind systemd-journald systemd-udevd systemd-journald systemd-resolved systemd-networkd systemctl restart getty@tty1.service user@0.service systemctl restart serial-getty@ttyS0.service systemctl restart cron.service systemctl status -n0 587 systemctl stop qemu-guest-agent.service logout </code></pre> h3. Размонтирование старой файловой системы <pre><code class="shell"> umount /mnt/oldroot grep /mnt/oldroot /proc/*/mounts grep /mnt/oldroot /proc/*/mounts | cut -d / -f3 | xargs systemctl status -n0 | grep -iPo '[a-z0-9@-]*\.service(?= - )' grep /mnt/oldroot /proc/*/mounts | cut -d / -f3 | xargs systemctl status -n0 | grep -iPo '[a-z0-9@-]*\.service(?= - )' | xargs systemctl restart grep /mnt/oldroot /proc/*/mounts rmdir /mnt/oldroot </code></pre> h3. Переводим видимость / в shared <pre><code class="shell"> findmnt -o TARGET,PROPAGATION mount --make-rshared / findmnt -o TARGET,PROPAGATION </code></pre> h2. Последующие шаги h3. Загрузчик <pre><code class="shell"> dpkg-reconfigure grub-pc update-grub update-initramfs -u </code></pre>