Проект

Общее

Профиль

Debian-replace-root » История » Версия 4

Андрей Волков, 2024-06-01 14:40

1 1 Андрей Волков
h1. Debian-replace-root
2
3
h2. Подготовка
4
5
h3. Устанавливаем необходимое
6
7 2 Андрей Волков
<pre><code class="shell">
8 1 Андрей Волков
apt-get install lsof psmisc
9 2 Андрей Волков
</code></pre>
10 1 Андрей Волков
11
h3. Останавливаем все важное
12
13 2 Андрей Волков
<pre><code class="shell">
14 1 Андрей Волков
systemctl
15
systemctl stop docker.socket docker.service
16 2 Андрей Волков
</code></pre>
17 1 Андрей Волков
18
h3. Отключаем swap
19
20 2 Андрей Волков
<pre><code class="shell">
21 1 Андрей Волков
swapon -s
22
systemctl stop ...
23 2 Андрей Волков
</code></pre>
24 1 Андрей Волков
25
h3. Создаём точки монтирования
26
27 2 Андрей Волков
<pre><code class="shell">
28 1 Андрей Волков
mkdir /mnt/newroot
29
mount /dev/system/root /mnt/newroot
30
mkdir /mnt/newroot/mnt/oldroot
31 2 Андрей Волков
</code></pre>
32 3 Андрей Волков
33
h3. Переводим видимость / в private
34
35
<pre><code class="shell">
36
findmnt -o TARGET,PROPAGATION /
37
findmnt -o TARGET,PROPAGATION
38
39
mount --make-rprivate /
40
findmnt -o TARGET,PROPAGATION /
41
</code></pre>
42 4 Андрей Волков
43
h2. Переключение
44
45
h3. Подмена корневой ФС
46
47
Выполнять команды нужно вместе, иначе есть риск обрыва консоли
48
49
<pre><code class="shell">
50
pivot_root /mnt/newroot /mnt/newroot/mnt/oldroot && \
51
 for MNT in dev proc sys run; do mount --move /mnt/oldroot/$MNT /$MNT; done
52
</code></pre>
53
54
h3. Перезапуск ssh
55
56
<pre><code class="shell">
57
systemctl restart ssh
58
systemctl status ssh -n0
59
</code></pre>
60
61
62
h3. Перезапуск сервисов
63
64
<pre><code class="shell">
65
systemctl daemon-reexec
66
fuser -vm /mnt/oldroot
67
systemctl restart dbus
68
systemctl restart systemd-logind systemd-journald systemd-udevd systemd-resolved systemd-networkd
69
systemctl restart getty@tty1.service user@0.service
70
systemctl status -n0 587
71
systemctl restart serial-getty@ttyS0.service
72
systemctl restart cron.service
73
systemctl stop qemu-guest-agent.service
74
logout
75
</code></pre>