Як зламати процес завантаження Linux за допомогою Control-C


2

За допомогою ядра 3.10.55я можу порушити процес завантаження Linux, натиснувши Ctrl+ C.

Але з найновішими ядрами ( 4.1і 4.4) Ctrl+ Cпід час завантаження не працює - він відображає, ^Cале не порушує сценарій init.

Я використовую Slackware 64 14.1 і маю простий тест на нього: додайте у свій rc.localфайл наступні команди:

echo "Test for Control-C - if does not work then press Enter"
read 

І мені потрібно натиснути, Enterщоб продовжити процес завантаження.


Якщо я запускаю ./rc.local з командою read після закінчення процесу завантаження Control-C працює, але НЕ працює під час завантаження.
Користувач Slackware

1
Чому б ви насправді це робили?
Сет

У мене є конкретне завантажувальне зображення, яке запускає певне серверне програмне забезпечення. Але іноді мені потрібно завантажувати лише голую систему Linux без цього програмного забезпечення і натискання Control-C у певний період завантаження дозволяє мені це робити.
Користувач Slackware

1
Чому б не надати додатковий запис для завантаження, який просто переходить у режим одного користувача чи нижчий рівень запуску?
Сет

1
Отже, ви включили stty -aу свій сценарій і подивитесь, коли ^Cце пов'язано з потрібною справою? ^Cяк правило, не викликає SIGKILLпочатку, але, швидше, SIGINTабо можливо SIGTERM. Може, це краще підходить для Unix Stackexchange ?
Сет

Відповіді:


0

Нарешті, мені вдалося змусити Control-C працювати під час завантаження. АЛЕ рішення - це хак :( Під час завантаження сценарії запуску мають / dev / console як stdin / stdout, і це не може бути налаштовано stty. Проблема полягає у встановленні цього пристрою як NOCTTY в модулі ядра tty_io.c. Просто змінення * noctty = 1 до 0 і відновлення ядра працює для мене добре.


-2

Біжи

ps aux | grep <ваше ім'я процесу>

Перший набір номерів у списку результатів кожного рядка - ваш під.

Біжи

вбити <номер pid>

Щоб убити цей процес


1
у вас немає інтерактивної оболонки під час завантаження.
Подорожник Geek

Дякую за відповіді. Але це процес завантаження, і я все ще не ввійшов у систему. І як налаштувати інтерактивну оболонку для процесу завантаження? Дуже прикро, що для одного ядра воно працює, а для іншого не працює, і я не знаю, де знайти інформацію про ці зміни.
Користувач Slackware

Якщо я ввійшов у систему за допомогою ssh та exes kill -2 <pid_of_read_from_boot_script>, це вбиває процес, але Control-C, натиснуте на консолі завантаження, не робить. Можливо, це спеціально поводиться з драйвером у Tty під час завантаження.
Користувач Slackware
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.