Я пробовал на виртуалке смоделировать похожую ситуацию. Установил систему в пустой диск с шифрованием всего диска способом, который предлагает установщик по умолчанию. Он так же как у автора вынес /boot на отдельный маленький нешифрованный раздел. Дальше я загрузился LiveCD и намеренно "повредил" (спаковал в архив) файлы в разделе /boot. Система так же, как у автора перестала загружаться.
Приступаем к лечению.
Создаем точку монтирования для раздела boot
sudo mkdir /mnt/boot
Смотрим, как система назвала наши разделы
sudo blkid
раздел с /boot будет иметь тип фс TYPE="ext2", а шифрованный корень - TYPE="crypto_LUKS"
запоминаем или записываем на бумажке, у меня получилось:
sda5 для /
sda1 для /boot
Обозначим корневой раздел sdaX (у меня это sda5), а загрузочный /boot обозначим sdaY (у меня sda1), а Вы подставьте свои значения.
Создаем виртуальный раздел с нашим корнем:
sudo cryptsetup luksOpen /dev/sdaX sdaX_crypt
(внимание: вместо X после sda в двух местах подставьте свое значение)
по запросу Enter passphrase for /dev/sdaX: вводим пароль, которым шифровали раздел
Монтируем уже расшифрованный виртуальный корневой раздел
sudo mount /dev/mapper/ubuntu--vg-root /mnt
Монтируем раздел /boot
sudo mount /dev/sdaY /mnt/boot
(внимание: вместо Y подставьте свое значение)
Монтируем системные процессы и устройства, чтобы у нас в новом корне работал интернет и все остальное
sudo cp -L /etc/resolv.conf /mnt/etc/
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
Переходим в среду нашего расшифрованного и примонтированного корня:
sudo chroot /mnt /bin/bach
Если все прошло благополучно, то изменится приглашение командной строки, будет что-то вроде root@ubuntu:/#
Теперь мы уже находимся в корне своей зашифрованной системы и можем делать все операции по установке и удалению пакетов от ее имени. Например, можем почистить систему от старых ядер:
apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1)
Можно работать без sudo, так как мы и так действуем от имени суперпользователя.
Затем можно для пущей чистоты сделать
apt-get autoremove
Проверяем результат:
ls /boot
дожны остаться по два файла ядер последних версий и дополнительные файлы initrd и проч.
Если файлов ядра по какой-нибудь причине не оказалось, или они повреждены, ставим ядро командой
apt-get install linux-image-generic
apt-get install linux-headers-generic
Если поврежден только initrd лечим командой
update-initramfs -c -k all
Предыдущие команды (установки ядра или initrd) должны обновить меню загрузчика автоматически, если эти команды не запускались, то запускаем обновление вручную:
update-grub
Выходим из chroot
exit
Перезагружаемся и запускаемся уже с шифрованного диска. Все должно работать.
Зы: для входа систему с шифрованным корнем с LiveCD, чтобы не набирать каждый раз команды расшифрования и монтирования, можно написать коротенький скрипт и разместить его на LiveCD, тогда можно будет заходить в систему одной командой. Это может понадобиться в будущем, если опять появятся какие-нибудь сбои.