Действия
Debian-replace-root¶
Подготовка¶
Устанавливаем необходимое¶
dpkg --list lsof psmisc
apt-get install lsof psmisc
Останавливаем все важное¶
systemctl --state running
systemctl stop docker.socket docker.service
Клонируем старую систему, если нужно:¶
lsof / |grep -i [0-9][uw]
systemctl stop systemd-journal*
mount -o remount,ro /
df -h /
e2image -rap /dev/vda2 /dev/system/root
mount -o remount,rw /
systemctl start --all systemd-journal*
Отключаем swap¶
swapon -s
systemctl stop ...
Создаём точки монтирования¶
mkdir /mnt/newroot
mount /dev/system/root /mnt/newroot
mkdir /mnt/newroot/mnt/oldroot
Переводим видимость / в private¶
findmnt -o TARGET,PROPAGATION /
findmnt -o TARGET,PROPAGATION
mount --make-rprivate /
findmnt -o TARGET,PROPAGATION /
Переключение¶
Подмена корневой ФС¶
Выполнять команды нужно вместе, иначе есть риск обрыва консоли
pivot_root /mnt/newroot /mnt/newroot/mnt/oldroot && \
for MNT in dev proc sys run; do mount --move /mnt/oldroot/$MNT /$MNT; done
Перезапуск ssh¶
systemctl restart ssh
systemctl status ssh -n0
Перезапуск сервисов¶
systemctl daemon-reexec
fuser -vm /mnt/oldroot
systemctl restart dbus
systemctl restart systemd-logind systemd-udevd systemd-journald systemd-resolved systemd-networkd systemd-timesyncd
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
Размонтирование старой файловой системы¶
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
Переводим видимость / в shared¶
findmnt -o TARGET,PROPAGATION
mount --make-rshared /
findmnt -o TARGET,PROPAGATION
Последующие шаги¶
Загрузчик¶
dpkg-reconfigure grub-pc
update-grub
update-initramfs -u
Обновлено Андрей Волков 16 дня назад · 16 изменени(я, ий)