О том, как я сломал Ubuntu и убил день на то, чтобы починить
Подход к решению проблемы с входом, изложенный в этой статье, не серебряная пуля и может не сработать. Возможно, существуют другие способы выхода из ситуации, я делюсь тем, который сработал в моем случае.
Бывало у вас такое, что Snapd User Session Agent входит в бесконечный цикл? Вы вводите правильный пароль и… попадаете на тот же экран входа.
Это широко известная ситуация, которая может происходить из-за самых разных факторов. Не менее широко известен и универсальный рецепт: попадите в терминал bash через tty (Ctrl + Alt + F1), найдите проблему и устраните её.
Однако что, если вы не можете попасть в терминал по какой-либо причине? Например, раскладка вашей клавиатуры по умолчанию отличается от раскладки вашего логина и пароля? Этому особому кейсу я и хотел бы посвятить статью, так как потратил на него уйму времени и ещё больше — нервных клеток.
Итак, вы впервые сталкиваетесь с infinite login loop и пытаетесь залогиниться в терминал при помощи tty. Но тут вас встречает «родная» русская раскладка вместо английской. Никакие хоткеи не работают: вы попробовали Shift + Alt, Alt + Shift, Cmd (Win) + пробел и все до единой остальные. Ничего не помогает. Можно сколько угодно стрессовать и сомневаться в своей вменяемости («каким идиотом надо быть, чтобы поставить русскую раскладку как основную на машине Ubuntu???»), но это не отменяет тупиковой ситуации. Как итог — вход невозможен. Вы перезагружаете машину, зажимаете Esc (иногда также Shift, но не в моем случае), чтобы попасть в grub menu и входите в recovery mode. Но — о ужас — и тут вас преследует ненавистная русская раскладка.
На просторах форумов и тредов StackOverflow вы встретите людей, которые дошли до этого этапа из-за греческой или русской раскладки и отчаялись, попросту переустановив операционную систему с флешки или другого физического накопителя. Не поступайте так, суицид — не выход.
Итак, снова перезагружаем машину и попадаем в grub menu, зажав Esc или Shift. В меню выбираем вариант Advanced options for Ubuntu.
Попав на самый верхний вариант `Ubuntu with Linux… generic`, нажимаем на клавиатуре E (aka Edit). В строчке ядра (начинающейся с linux) в конце через пробел добавляем init=/bin/bash
и нажимаем Ctrl + X (запуск с этими изменениями).
Вы попадете в терминал bash и наконец увидите английскую раскладку, которую уже отчаялись когда-либо вернуть. Последнее усилие — отредактировать файл keyboard
, который находится в /etc/default
. Сначала запустите команду mount -o remount,rw /
, чтобы не нарваться на ошибку Read-only File System.
Вероятно, в этом файле вы найдете такую строку или подобную ей:
XKBLAYOUT="ru,us"
Все, что нужно сделать, как вы уже догадались, — поменять заветные ключевые слова ru и us местами при помощи nano
или любого другого редактора. После этого можно перезапускать компьютер и заходить в bash через tty.
Вероятность столкнуться с такой проблемой ничтожно мала, ведь для этого вам надо
обожать Ubuntu настолько, что это ваша единственная ОС на компьютере
поставить русскую раскладку по умолчанию для системы
поймать баг с циклическим входом через Snapd User Agent
обнаружить, что горячие клавиши не работают в tty (допускаю, что те же Shift + Alt могут сработать на другой машине).
И тем не менее, надеюсь, что эта статья найдет своего читателя и позволит ему сэкономить время и нервы.