Жизненные обстоятельства были таковы, что пришлось достать из одного системного блока жёсткий диск и установить на него систему уже на другом оборудовании. Установка прошла успешно, но после возвращении диска к родному оборудованию система перестала грузиться. Точнее говоря, загрузчик отрабатывал штатно, потом без проблем загружалось ядро, а на следующем этапе - initrd - по прошествию n-ного времени выводилась ошибка
rdshell: the waiting time expired
и запускалась отладочная консоль.
Чтобы сгенерировать initrd для нового оборудования, на данном компьютере нужно загрузиться с флешки в live или rescue режим. Далее системе нужно поменять корневой каталог.
[rescue]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 465,8G 0 disk ├─sda1 8:1 0 255M 0 part ├─sda2 8:2 0 4,1G 0 part ├─sda3 8:3 0 59,6G 0 part ├─sda4 8:4 0 1K 0 part ├─sda5 8:5 0 20,5G 0 part └─sda6 8:6 0 381,3G 0 part sdb 8:0 0 8,0G 0 disk / sr0 11:0 1 1024M 0 rom
Корневым каталогом должен стать корневой раздел системы, установленной на жёсткий диск - /dev/sda3. Монтируем его и некоторые разделы текущей системы - они пригодятся в процессе генерации - в /mnt.
[rescue]# mount /dev/sda3 /mnt [rescue]# mount --bind /proc /mnt/proc [rescue]# mount --bind /dev /mnt/dev [rescue]# mount --bind /sys /mnt/sys
Меняем корень
[rescue]# chroot /mnt
Перед генерацией initrd следует узнать, какое ядро установлено по умолчанию. Его можно посмотреть в меню загрузчика.
Генерация initrd
[rescue /]# ls -1d /lib/modules/* /lib/modules/3.14.22-std-def-alt1 /lib/modules/3.14.23-std-def-alt1 /lib/modules/3.16.6-un-def-alt1
[rescue /]# make-initrd --kernel=3.14.22-std-def-alt1
После того как отработала команда нужно покнуть среду croot. Это делается сочетанием клавиш Ctrl + D.
Можно перезагружаться
[rescue]# reboot