О том, как я сломал Ubuntu и убил день на то, чтобы починить

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

Бывало у вас такое, что Snapd User Session Agent входит в бесконечный цикл? Вы вводите правильный пароль и… попадаете на тот же экран входа.

a81f2d49d2923885c352325fa9d43ef9.jpg

Это широко известная ситуация, которая может происходить из-за самых разных факторов. Не менее широко известен и универсальный рецепт: попадите в терминал 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.

964e522de77c59be284d99cb5eadfe35.png

Попав на самый верхний вариант `Ubuntu with Linux… generic`, нажимаем на клавиатуре E (aka Edit). В строчке ядра (начинающейся с linux) в конце через пробел добавляем init=/bin/bash и нажимаем Ctrl + X (запуск с этими изменениями).

f0c05a923de09a4849ea62e970122a8e.png

Вы попадете в терминал bash и наконец увидите английскую раскладку, которую уже отчаялись когда-либо вернуть. Последнее усилие — отредактировать файл keyboard, который находится в /etc/default. Сначала запустите команду mount -o remount,rw /, чтобы не нарваться на ошибку Read-only File System.

Вероятно, в этом файле вы найдете такую строку или подобную ей:

XKBLAYOUT="ru,us"

Все, что нужно сделать, как вы уже догадались, — поменять заветные ключевые слова ru и us местами при помощи nano или любого другого редактора. После этого можно перезапускать компьютер и заходить в bash через tty.

Вероятность столкнуться с такой проблемой ничтожно мала, ведь для этого вам надо 

  1. обожать Ubuntu настолько, что это ваша единственная ОС на компьютере

  2. поставить русскую раскладку по умолчанию для системы

  3. поймать баг с циклическим входом через Snapd User Agent

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

И тем не менее, надеюсь, что эта статья найдет своего читателя и позволит ему сэкономить время и нервы.

© Habrahabr.ru