Отключить консоль в Ubuntu
Несколько дней назад посетитель сайта Сергей оставил комментарий с вопросом об отключении консолей в Ubuntu. Вопрос оказался интересным, так как я не нашел решения в Интернете и пришлось искать решение самому. Решение нашел. Итак стоит задача отключить консоль 3,4,5 и 6 в Ubuntu, так, чтобы при переключении в несуществующую (отключенную) консоль, оставаться в текущей консоли. Сначала опишу кратко, а потом более расширенно. Опыт проводился на домашней системе Ubuntu 9.10 установленной с нуля.
Сначала редактируем конфигурационные файлы /etc/init/tty3.conf-/etc/init/tty6.conf. Необходимо закомментировать строку start on runlevel [23], чтобы получилось вот так:
1 2 3 4 5 6 7 8 9 10 | # tty3 - getty # # This service maintains a getty on tty3 from the point the system is # started until it is shut down again. #start on runlevel [23] stop on runlevel [!23] respawn exec /sbin/getty -8 38400 tty3 |
После этого редактируем файл /etc/default/console-setup. Ищем строку
1 | ACTIVE_CONSOLES="/dev/tty[1-6]" |
и изменяем на
1 | ACTIVE_CONSOLES="/dev/tty[1-2]" |
После этого выполняем команду:
1 2 | $ sudo update-initramfs -u update-initramfs: Generating /boot/initrd.img-2.6.31-14-generic |
После этого перегружаемся и получаем требуемый результат. Переключатся можно только в первую или вторую консоль, если переключаться в консоль с третьей по шестую, то будем оставаться в текущей консоли.
Несколько слов как нашел команду update-initramfs -u. Можно сказать, что нашел случайно :) . Все свои рассуждения писать не буду, так как передумал много и чтобы все написать нужно много времени. В процессе поиска зашел в каталог /etc/init.d/, чтобы посмотреть какие есть связанные с консолью скрипты. Открыл скрипт /etc/init.d/console-setup (не путайте с файлом /etc/default/console-setup) и увидел там следующий комментарий:
1 2 3 4 | # Only use --save if we aren't in the boot sequence, to avoid # slowing down the boot too much. Outside the boot sequence, # this means that 'dpkg-reconfigure console-setup' automatically # saves the font and keymap. |
Переводить дословно не буду, так как меня сразу заинтересовала команда dpkg-reconfigure console-setup. Команда dpkg-reconfigure, как известно позволяет перенастроить в интерактивном виде пакет, в данном случае console-setup. После запуска команды dpkg-reconfigure console-setup действительно запустился графический конфигуратор в текстовом режиме, в котором задавались вопросы по настройке параметров. Последний вопрос касался количества активных консолей. Задав там параметр [1-2] и нажав на завершение, увидел сообщения о выполнении настроек и прочие сообщения, среди которых была строка update-initramfs: Generating /boot/initrd.img-2.6.31-14-generic. Дальше просто уже. Выяснил, что есть такая команда update-initramfs и при обновлении она берет параметры из файла /etc/default/console-setup.
Сергей:
вот это я угадал) мы одновременно сидим чтоли в инете ? сейчас почитаю :)
Ответить
Igorka Reply:
ноября 22, 2009 at 23:35
Да одновременно :)
Ответить
Сергей:
отлично :)
Ответить
Igorka Reply:
ноября 22, 2009 at 23:36
Получилось?
Ответить
Сергей Reply:
ноября 23, 2009 at 0:03
Да, получилось.
только у меня в /etc/init/tty3.conf-/etc/init/tty6.conf
эти строки стали такими:
#start on runlevel 2
stop on runlevel [!23] (было start on runlevel 2 или start on runlevel 3)
Еще бы понять что я этой манипуляцией сделал?
Что значит “остановить если уровень запуска не 2 или 3″ - если я правильно понял?
И после всего я что , командой update-initramfs -u
ядро пересобрал(перекомпилировал) получается?
Ответить
Igorka Reply:
ноября 23, 2009 at 0:23
stop on runlevel [!23] - да это остановить если уровень запуска не 2 или 3.
И после всего я что , командой update-initramfs -u
ядро пересобрал(перекомпилировал) получается?
Нет это не совсем ядро. Ядро это файл /boot/vmlinuz-2.6.31-14-generic, а изменения вносятся в файл /boot/initrd.img-2.6.31-14-generic - файл который загружается в оперативную память на самом начальном этапе загрузки, создавая так называемый ramdisk, который используется в качестве начальной корневой файловой системы. А потом уже начинает загружаться ядро и монтироваться реальная корневая файловая система или точнее происходит изменение корневой файловой системы на реальную с помощью команды chroot.
Ответить
Igorka Reply:
ноября 23, 2009 at 0:25
Я завтра допишу в статье как я дошел до этого решения.
Ответить
Сергей Reply:
ноября 23, 2009 at 16:24
Ждемссс! Хотелось бы по подробнее.
Ответить
Сергей Reply:
ноября 27, 2009 at 14:51
Вы что-то хотели добавить на счет того как это работает. опишите в кратце, пожалуйста.
Ответить
Igorka Reply:
ноября 27, 2009 at 14:58
Я добавил в конце статьи. Начиная со слов “Несколько слов как нашел команду update-initramfs -u.” и т.д. Но я добавил, как и обещал, как я наткнулся на это решение, а вот ПОЧЕМУ именно так, а не иначе, пока не могу точно сказать. Все больше догадки пока. А их и так в интернете хватает. :) Вот если разберусь почему так, тогда еще добавлю.
Ответить
Сергей:
Уважаемый Игорь, не могли бы продолжить тему?
Ответить
Igorka Reply:
ноября 27, 2009 at 14:13
Какую именно? Все, что знал по отключению консоли добавил уже.
Ответить
Сергей:
Уважаемый Игорь, попробовал провернуть по этой же схеме в Ubuntu 10.10 ! не получилось, остались “мертвые консоли” c 3 по 6
Как сделать? подскажите как. Если не трудно.
Спасибо.
Ответить
Igorka Reply:
января 4, 2011 at 21:05
Здравствуйте Сергей. Нужно разбираться, что там и как. Если найду решение - отпишу.
Ответить
Сергей:
Спасибо заранее.
цитирую Вас:
….Выяснил, что есть такая команда update-initramfs и при обновлении она берет параметры из файла /etc/default/console-setup….
Так вот теперь похоже не берет настройки из этого файла. Интересно что программа конфигуратор установщик Ubuntu задавала вопрос конкретно в этот раз, сколько панелей сделать и выводила строку(по умолчанию):
/dev/tty[1-6] -куда руками нужно ввести цифры. я поправил на:
/dev/tty[1-2] -но после установки консолей все равно осталось шесть!
а в файле /etc/default/console-setup я нашел :) запись /dev/tty[1-2].
То есть разработчики что то изменили, но все равно сами пошли по старому пути (запись в console-setup)и все консоли остались. Только почему то шестая консоль была с другим шрифтом…. уж не знаю почему.
Ответить
5 января 2011, 6:30Сергей:
Игорь, прошу Вас уделите внимание этой задаче.
Спасибо.
Ответить
23 января 2011, 15:43Рамиль:
Игорь, спасибо за подробное объяснение!
Ответить
11 октября 2011, 23:05Денис:
Можете подсказать как отключить консоли только для пользователей кроме админа
Ответить
1 декабря 2013, 17:14