====== Перегенерация initrd ====== ==== Почему это понадобилось ==== Жизненные обстоятельства были таковы, что пришлось достать из одного системного блока жёсткий диск и установить на него систему уже на другом оборудовании. Установка прошла успешно, но после возвращении диска к родному оборудованию система перестала грузиться. Точнее говоря, загрузчик отрабатывал штатно, потом без проблем загружалось ядро, а на следующем этапе - initrd - по прошествию n-ного времени выводилась ошибка rdshell: the waiting time expired и запускалась отладочная консоль. {{::the_wating_time_expired_initrd_error.png?400|}} ==== Как сделать ==== Чтобы сгенерировать 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