Настройка раскладки клавиатуры в Ubuntu Server: полное руководство

Работа с Ubuntu Server через терминал часто требует смены раскладки клавиатуры — особенно если вы администрируете сервер на русском языке или используете специальные символы. В отличие от десктопных версий, серверная редакция Ubuntu не имеет графического интерфейса для управления языками, поэтому все манипуляции выполняются через командную строку. Эта статья поможет разобраться, как добавить новую раскладку, настроить переключение между ними и устранить типичные ошибки конфигурации.

Мы рассмотрим два основных метода: временное изменение раскладки (актуально для разовых задач) и постоянную настройку через конфигурационные файлы. Особое внимание уделим нюансам работы с локалью системы, так как неправильные настройки могут привести к сбоям в отображении символов или работе приложений. Если вы столкнулись с ситуацией, когда после перезагрузки сервера раскладка сбрасывается — здесь вы найдёте решение.

Инструкция подходит для актуальных версий Ubuntu Server 22.04 LTS и 24.04 LTS, но большинство команд универсальны и работают в других дистрибутивах на базе Debian. Для выполнения всех действий потребуются права sudo.

Почему в Ubuntu Server нет графического переключателя раскладок

Серверные редакции Linux оптимизированы для минимального потребления ресурсов и безопасности, поэтому в них отсутствует графическая оболочка (GUI). Это означает, что:

  • 📌 Все настройки выполняются через TTY или SSH-терминал
  • 🔧 Нет стандартного апплета для смены языка (как в GNOME или KDE)
  • 💻 Раскладка управляется системными утилитами loadkeys, localectl и конфигурационными файлами

Более того, по умолчанию Ubuntu Server устанавливается с минимальным набором локалей. Если вы выбирали английский язык при установке, система может не поддерживать кириллические символы до ручной настройки. Это проявляется в виде "кракозябров" (некорректного отображения текста) или невозможности ввода русских букв.

📊 Какой метод настройки раскладки вы предпочитаете?
Через localectl
Ручное редактирование конфигов
Временное изменение (loadkeys)
Не знаю, выберу по инструкции

Важно понимать, что настройка раскладки и настройка локали системы — это два разных процесса. Локаль определяет кодировки, форматы даты/времени и региональные стандарты, тогда как раскладка отвечает только за сопоставление клавиш символам. В следующих разделах мы разберём оба аспекта.

Проверка текущих настроек раскладки и локали

Прежде чем вносить изменения, убедитесь в актуальных настройках системы. Выполните в терминале:

localectl status

Команда выведет информацию в формате:

   System Locale: LANG=en_US.UTF-8

VC Keymap: us

X11 Layout: n/a

Обратите внимание на параметры:

  • VC Keymap — текущая раскладка для виртуальной консоли (именно её мы будем менять)
  • System Locale — языковые настройки системы (влияет на отображение текста)

Если в выводе отсутствует строка X11 Layout — это нормально для серверной версии без графического интерфейса. Для проверки доступных раскладок используйте:

localectl list-keymaps | grep -i "ru"

Эта команда покажет все варианты с "ru" в названии (например, ru, ruwin_cplk-UTF-8, ru_typewriter). Запомните точное название нужной раскладки — оно потребуется для дальнейших действий.

Временное изменение раскладки (без сохранения после перезагрузки)

Если вам нужно срочно ввести текст на другом языке, но сохранять настройки не требуется, используйте команду loadkeys. Например, для переключения на русскую раскладку:

sudo loadkeys ru

Чтобы вернуться к английской:

sudo loadkeys us

Список доступных раскладок для loadkeys можно посмотреть в директории:

ls /usr/share/keymaps/i386/qwerty/

Этот метод удобен для разовых задач, но имеет ограничения:

  • ❌ Настройки сбрасываются после перезагрузки
  • ❌ Не работает для SSH-сессий (только для локальной консоли)
  • ❌ Не влияет на локаль системы (символы могут отображаться неправильно)
Что делать если loadkeys выдаёт ошибку "No such map"

Ошибка означает, что указанная раскладка отсутствует в системе. Установите пакет с дополнительными keymaps командой sudo apt install console-data, затем повторите попытку.

Постоянная настройка раскладки через localectl

Для сохранения изменений после перезагрузки используйте утилиту localectl. Например, чтобы установить русскую раскладку:

sudo localectl set-keymap ru

Для применения изменений без перезагрузки выполните:

sudo localectl set-keymap ru --no-convert

Проверьте результат:

localectl status

В выводе должна появиться строка VC Keymap: ru. Если вы хотите настроить несколько раскладок с переключением, потребуется дополнительная конфигурация (об этом — в следующем разделе).

⚠️ Внимание: После изменения раскладки через localectl клавиатура в текущей сессии может работать некорректно. Закройте и откройте терминал заново или подключитесь по SSH повторно.

Если вам нужна специфическая раскладка (например, русская с раскладкой клавиш как в Windows), укажите её полное имя:

sudo localectl set-keymap ruwin_cplk-UTF-8

Настройка нескольких раскладок и переключение между ними

Ubuntu Server не поддерживает "горячие клавиши" для смены раскладки из коробки, но можно настроить переключение через комбинации или создать скрипты. Вот два рабочих метода:

Метод 1: Переключение через консольные команды

Создайте два alias’а в файле ~/.bashrc:

echo "alias ru='sudo loadkeys ru'" >> ~/.bashrc

echo "alias us='sudo loadkeys us'" >> ~/.bashrc

source ~/.bashrc

Теперь вы можете переключаться командами ru и us. Чтобы изменения сохранялись после перезагрузки, добавьте эти alias в /etc/profile.d/custom_aliases.sh.

Метод 2: Использование XKB-расширений (для SSH-сессий)

Если вы подключаетесь к серверу по SSH с локальной машины, раскладку можно менять на клиентской стороне. Например, в Windows с помощью PuTTY или Windows Terminal, а в Linux — через setxkbmap:

setxkbmap -layout "us,ru" -option "grp:alt_shift_toggle"

Эта команда настроит переключение между английской и русской раскладками по Alt+Shift на вашем локальном компьютере, не затрагивая сервер.

Метод Преимущества Недостатки Подходит для
loadkeys Быстрое временное изменение Сбрасывается после перезагрузки Локальная консоль
localectl Постоянные настройки Требует прав sudo Локальная консоль и SSH
Alias в .bashrc Простое переключение Нужно настраивать для каждого пользователя Любые терминалы
setxkbmap (клиентская сторона) Не затрагивает сервер Работает только при SSH-подключении Удалённое администрирование

Установите пакет console-data|Проверьте доступные раскладки через localectl list-keymaps|Создайте резервную копию /etc/default/keyboard|Решите, какой метод переключения вам нужен (команды/горячие клавиши)-->

Настройка локали для корректного отображения символов

Даже после смены раскладки вы можете столкнуться с проблемой отображения кириллицы — вместо русских букв появляются знаки ???? или иероглифы. Это означает, что в системе не настроена локаль для русского языка.

Проверьте текущие локали:

locale -a

Если в списке отсутствует ru_RU.UTF-8, сгенерируйте её:

sudo locale-gen ru_RU.UTF-8

Затем обновите переменные окружения:

sudo update-locale LANG=ru_RU.UTF-8

Для применения изменений к текущей сессии выполните:

export LANG=ru_RU.UTF-8
⚠️ Внимание: Изменение локали может повлиять на формат вывода даты, чисел и сортировки в некоторых программах (например, ls, sort). Если вам критично сохранение английского формата, используйте LC_ALL=C перед командами.

Чтобы вернуть английскую локаль по умолчанию, выполните:

sudo update-locale LANG=en_US.UTF-8

Устранение распространённых проблем

При настройке раскладок в Ubuntu Server пользователи часто сталкиваются с типичными ошибками. Вот самые частые из них и способы решения:

Проблема 1: Клавиатура не переключается в SSH-сессии

Раскладка, установленная через localectl или loadkeys, действует только на серверной стороне. Если вы подключаетесь по SSH, символы обрабатываются вашим локальным терминалом. Решения:

  • 🔄 Настройте переключение раскладки на клиентском ПК (см. раздел про setxkbmap)
  • 🖥️ Используйте терминалы с поддержкой X11-forwarding (например, MobaXterm для Windows)

Проблема 2: После перезагрузки сбрасывается раскладка

Если изменения через localectl не сохраняются, проверьте:

  1. Правильно ли указано имя раскладки в /etc/default/keyboard (параметр XKBMODEL)
  2. Установлен ли пакет keyboard-configuration (sudo apt install keyboard-configuration)
  3. Нет ли конфликтов с другими сервисами (например, console-setup)

Проблема 3: Не работают специальные символы (например, @, #, $)

Это связано с тем, что некоторые раскладки (например, ru) переназначают клавиши. Решения:

  • 🔠 Используйте раскладку ruwin_cplk-UTF-8 (соответствует Windows)
  • 🔧 Настройте кастомный keymap через dumpkeys и loadkeys
  • 📋 Временно переключайтесь на us для ввода специальных символов

Дополнительные инструменты для управления раскладками

Помимо стандартных утилит, существуют альтернативные инструменты для гибкой настройки клавиатуры:

1. console-data — расширенные keymaps

Пакет предоставляет дополнительные раскладки, включая редкие варианты (например, ru_typewriter для печатных машинок). Установите его:

sudo apt install console-data

Затем выберите раскладку интерактивно:

sudo dpkg-reconfigure console-data

2. ckbcomp — компиляция кастомных раскладок

Если вам нужна уникальная раскладка, её можно создать вручную. Установите утилиту:

sudo apt install console-setup

Отредактируйте файл раскладки (например, /usr/share/keymaps/i386/qwerty/ru.custom), затем скомпилируйте его:

sudo ckbcomp ru.custom | sudo loadkeys

3. fbset — настройка шрифтов консоли

Если символы отображаются коряво, возможно, проблема в шрифте консоли. Установите пакет:

sudo apt install kbd

Затем выберите шрифт с поддержкой кириллицы:

sudo setfont cyr-sun16

Список доступных шрифтов:

ls /usr/share/consolefonts/ | grep -i cyr
Как создать собственную раскладку с нуля

1. Скопируйте базовую раскладку: cp /usr/share/keymaps/i386/qwerty/us /usr/share/keymaps/i386/qwerty/my_layout

2. Отредактируйте файл my_layout в текстовом редакторе (например, nano)

3. Пропишите новые сопоставления клавиш в формате: keycode 30 = a A a A (где 30 — скэн-код клавиши)

4. Скомпилируйте и загрузите: sudo loadkeys my_layout

FAQ: Частые вопросы по настройке раскладок в Ubuntu Server

Можно ли настроить переключение раскладки по Ctrl+Shift, как в Windows?

В чистом Ubuntu Server без графического интерфейса нет встроенной возможности назначить горячие клавиши для смены раскладки. Однако вы можете:

  1. Использовать клиентское ПО (например, Windows Terminal или iTerm2), где настроить переключение на своей машине.
  2. Установить xserver-xorg и xinit для эмуляции X11 (ресурсоёмко, не рекомендуется для серверов).
  3. Создать скрипт, который будет переключать раскладку по нажатию комбинации через acpid (продвинутый метод).

Для большинства задач достаточно alias’ов в .bashrc (см. раздел про несколько раскладок).

После смены раскладки некоторые клавиши работают не так (например, / становится .). Как исправить?

Это типичная проблема при использовании раскладки ru, где некоторые символы переназначены. Решения:

  • Используйте раскладку ruwin_cplk-UTF-8, которая повторяет клавиши Windows:
  • sudo localectl set-keymap ruwin_cplk-UTF-8
  • Временно переключайтесь на us для ввода специальных символов.
  • Создайте кастомную раскладку (см. раздел про ckbcomp).

Если вам нужна конкретная клавиша (например, /), вы можете переназначить её отдельно через dumpkeys и loadkeys.

Как сделать, чтобы раскладка автоматически устанавливалась при входе по SSH?

Для этого отредактируйте файл /etc/ssh/sshrc (или создайте его, если отсутствует) и добавьте строку:

loadkeys ru

Однако этот метод имеет ограничения:

  • Будет работать только для SSH-сессий, но не для локальной консоли.
  • Может конфликтовать с настройками клиентского терминала.

Более надёжный способ — настроить раскладку на клиентской машине (см. раздел про setxkbmap).

Почему после обновления Ubuntu Server сбросились настройки раскладки?

Это происходит из-за того, что пакеты keyboard-configuration или console-setup были обновлены и перезаписали конфигурационные файлы. Чтобы предотвратить проблему:

  1. Создайте резервную копию файла /etc/default/keyboard:
  2. sudo cp /etc/default/keyboard /etc/default/keyboard.bak
  3. Пометите файл как конфигурационный для dpkg, чтобы предотвратить автоматическое обновление:
  4. sudo dpkg-divert --local --divert /etc/default/keyboard.divert --rename /etc/default/keyboard
  5. После обновлений вручную проверяйте настройки через localectl status.

Если раскладка уже сбросилась, повторите настройку через sudo localectl set-keymap ru.

Можно ли использовать раскладки для других языков (например, украинский, немецкий)?

Да, процесс настройки аналогичен. Главное — знать точное название раскладки. Посмотрите доступные варианты:

localectl list-keymaps | grep -i "ua"

Для украинской раскладки:

sudo localectl set-keymap ua

Не забудьте также сгенерировать соответствующую локаль:

sudo locale-gen uk_UA.UTF-8

Список всех поддерживаемых локалей можно посмотреть в файле /usr/share/i18n/SUPPORTED.