Отключить консоль в 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.

Статьи и новости схожей тематики:

Комментариев: 18

  1. Сергей:

    вот это я угадал) мы одновременно сидим чтоли в инете ? сейчас почитаю :)

    Ответить

    Igorka Reply:

    Да одновременно :)

    Ответить

  2. Сергей:

    отлично :)

    Ответить

    Igorka Reply:

    Получилось?

    Ответить

    Сергей Reply:

    Да, получилось.
    только у меня в /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:

    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:

    Я завтра допишу в статье как я дошел до этого решения.

    Ответить

    Сергей Reply:

    Ждемссс! Хотелось бы по подробнее.

    Ответить

    Сергей Reply:

    Вы что-то хотели добавить на счет того как это работает. опишите в кратце, пожалуйста.

    Ответить

    Igorka Reply:

    Я добавил в конце статьи. Начиная со слов “Несколько слов как нашел команду update-initramfs -u.” и т.д. Но я добавил, как и обещал, как я наткнулся на это решение, а вот ПОЧЕМУ именно так, а не иначе, пока не могу точно сказать. Все больше догадки пока. А их и так в интернете хватает. :) Вот если разберусь почему так, тогда еще добавлю.

    Ответить

  3. Сергей:

    Уважаемый Игорь, не могли бы продолжить тему?

    Ответить

    Igorka Reply:

    Какую именно? Все, что знал по отключению консоли добавил уже.

    Ответить

  4. Сергей:

    Уважаемый Игорь, попробовал провернуть по этой же схеме в Ubuntu 10.10 ! не получилось, остались “мертвые консоли” c 3 по 6

    Как сделать? подскажите как. Если не трудно.

    Спасибо.

    Ответить

    Igorka Reply:

    Здравствуйте Сергей. Нужно разбираться, что там и как. Если найду решение - отпишу.

    Ответить

  5. Сергей:

    Спасибо заранее.

    цитирую Вас:
    ….Выяснил, что есть такая команда 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)и все консоли остались. Только почему то шестая консоль была с другим шрифтом…. уж не знаю почему.

    Ответить

  6. Сергей:

    Игорь, прошу Вас уделите внимание этой задаче.
    Спасибо.

    Ответить

  7. Рамиль:

    Игорь, спасибо за подробное объяснение!

    Ответить

  8. Денис:

    Можете подсказать как отключить консоли только для пользователей кроме админа

    Ответить

Оставьте свой отзыв