Разбираем и чиним установщик LMDE 2 Betsy

В сети
Аватара пользователя

Автор темы
Chocobo
Сообщения: 5556
Зарегистрирован: 27 авг 2016, 19:57
Решено: 130
Откуда: НН
Благодарил (а): 411 раз
Поблагодарили: 1440 раз

Разбираем и чиним установщик LMDE 2 Betsy

Сообщение Chocobo » 13 сен 2017, 07:38

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

Хватит это терпеть! :write: Исправим досадную оплошность.

Сам установщик находится в пакете live-installer, а интересовать нас оттуда будут файлы
  • /usr/lib/live-installer/frontend/gtk_interface.py - для правки поведения в live-окружении
  • /usr/lib/live-installer/installer.py - дляисправления раскладок вносимых в устанавливаемую им систему
В файле gtk_interface.py используется конструкция вызова setxkbmap в тот момент, когда выбираем раскладки из списка
Найдем строки (651-654 в текущей версии)

Код: Выделить всё

if self.setup.keyboard_variant:
            os.system('setxkbmap -variant ' + self.setup.keyboard_variant)
        else:
            os.system('setxkbmap -layout ' + self.setup.keyboard_layout)
И просто добавим к опциям английскую раскладку:

Код: Выделить всё

if self.setup.keyboard_variant:
            os.system('setxkbmap -variant ' + self.setup.keyboard_variant)
        else:
            os.system('setxkbmap -layout ' + self.setup.keyboard_layout + ',us')
Половина дела сделана, теперь полечим возможность смены раскладки в mdm при первом входе в систему, берем installer.py, ищем (~463 строка)

Код: Выделить всё

print " --> Setting the keyboard"
        our_current += 1
        self.update_progress(total=our_total, current=our_current, message=_("Setting keyboard options"))
        consolefh = open("/target/etc/default/console-setup", "r")
        newconsolefh = open("/target/etc/default/console-setup.new", "w")
        for line in consolefh:
            line = line.rstrip("\r\n")
            if(line.startswith("XKBMODEL=")):
                newconsolefh.write("XKBMODEL=\"%s\"\n" % setup.keyboard_model)
            elif(line.startswith("XKBLAYOUT=")):
                newconsolefh.write("XKBLAYOUT=\"%s\"\n" % setup.keyboard_layout)
            elif(line.startswith("XKBVARIANT=") and setup.keyboard_variant is not None):
                newconsolefh.write("XKBVARIANT=\"%s\"\n" % setup.keyboard_variant)
            else:
                newconsolefh.write("%s\n" % line)
Аналогичным образом добавляем к парамерам английскую раскладку, а заодно и дополняем условную конструкцию строкой с XKBOPTIONS на переключение этих самых раскладок по Alt+Shift

Код: Выделить всё

        for line in consolefh:
            line = line.rstrip("\r\n")
            if(line.startswith("XKBMODEL=")):
                newconsolefh.write("XKBMODEL=\"%s\"\n" % setup.keyboard_model)
            elif(line.startswith("XKBLAYOUT=")):
                newconsolefh.write("XKBLAYOUT=\"%s,us\"\n" % setup.keyboard_layout)
            elif(line.startswith("XKBVARIANT=") and setup.keyboard_variant is not None):
                newconsolefh.write("XKBVARIANT=\"%s\"\n" % setup.keyboard_variant)
            elif(line.startswith("XKBOPTIONS=")):
                newconsolefh.write("XKBOPTIONS=grp:alt_shift_toggle")
            else:
                newconsolefh.write("%s\n" % line)
на этом багфикс окончен, если внести эти правки прямо в лайв - можно вызывать инсталлер, и ставить систему не опасаясь остаться без латиницы.
Если самим в коде ковыряться влом - для своих нужд я пересобрал дебпакет с уже внесенными правками, осталось только заменить им имеющийся.
live-installer.zip
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Вернуться в «Linux Mint Debian Edition»