Проект

Общее

Профиль

Debian-replace-root » История » Редакция 4

Редакция 3 (Андрей Волков, 2024-06-01 14:14) → Редакция 4/16 (Андрей Волков, 2024-06-01 14:40)

h1. Debian-replace-root 

 h2. Подготовка 

 h3. Устанавливаем необходимое 

 <pre><code class="shell"> 
 apt-get install lsof psmisc 
 </code></pre> 

 h3. Останавливаем все важное 

 <pre><code class="shell"> 
 systemctl 
 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-resolved systemd-networkd 
 systemctl restart getty@tty1.service user@0.service 
 systemctl status -n0 587 
 systemctl restart serial-getty@ttyS0.service 
 systemctl restart cron.service 
 systemctl stop qemu-guest-agent.service 
 logout 
 </code></pre>