LINUX.ORG.RU
ФорумAdmin

Ubuntu 18.04 LTS - как гарантированно перезагрузить ОС, если «/» раздел в RO

 ,


1

1

Иногда, основной раздел («/») переходит в состояние Read Only, а так как доступ к компу удаленный, то почти всегда не получается перезагрузить комп следующими командами: sudo reboot или sudo systemctl –force –force reboot

Обычно, после выполнения этих команд комп зависает. Есть ли ~ 100% способ(ы) перезагрузить комп, находящийся в таком состоянии ? Либо м.б. есть 100% рабочий вариант перемонтировать RO раздел/диск в RW.



Последнее исправление: vdk10 (всего исправлений: 1)

kexec позволяет перезагрузить ядро без перезагрузки железа, просто сообщаете ему имя ядра и initramfs.

интересный факт: uptime системы сбрасывается, потому что оказывается, ОС не знает время работы железа, а uptime который мы все видим это время работы ядра с момента запуска)))

Spoofing ★★★★★
()
Ответ на: комментарий от Spoofing

если у вас нет подходящего ядра и initramfs для загрузки, вы можете загрузить своё по сети.

куда? mount -t tmpfs tmpfs /mnt и потом curl'ом или wget'ом скачаете в эту папку своё ядро и initramfs и загрузитесь в них через kexec. и тем самым перезагрузив систему.

ядро и initramfs могут быть вплот до кастомных, ну то есть тупа из любого дистрибутива их достать и на месте где установлена ubuntu получите какую-нибудь fedora или gentoo))

ну главное чтобы CONFIG_KEXEC=y было у обоих ядер.

Spoofing ★★★★★
()

вообще странно что за хрень такая где у вас нету хард-ресета???

потому что даже в qemu можно запустить на прослушку fifo-сокет и отправить туда сочетания клавиш или на худой конец сделать hard reset, то есть, симитировать нажатие кнопки reset на корпусе, но только в виртуалке.

а если / в RO то естественно ей вообще пофигу что будет выполнен hard reest

Spoofing ★★★★★
()

Обычно, после выполнения этих команд комп зависает. Есть ли ~ 100% способ(ы) перезагрузить комп, находящийся в таком состоянии ?

Про Sysrq почитать уже посоветовали. Локально можно нажать Alt-PrnScr+B, если в терминале, то так:

echo b > /proc/sysrq-trigger
Pinkbyte ★★★★★
()

Полностью кросс-ОС способ на любом компе начиная с IBM PC/AT (80286 проц) и дальше по линейке.

#include <sys/io.h>

int main(void) {
  iopl(3);
  outb(0xFE, 0x64);
  return 0;
}

Теоретически может сработать не с первого раза (спецификация порта 0x64 позволяет ему быть «занятым» и не принимающим данные, для проверки занятости надо опрашивать ещё один порт в цикле и ждать в нём какой-то бит), но на практике ни разу такого не случалось, по крайней мере с железом, выпущенным позже 1990 года.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)