Вопрос или проблема
У меня есть старая система Debian, у которой вышел из строя жесткий диск. Я подключил диск к работающей системе и скопировал все данные с коревого раздела с помощью dd
. Мне кажется, что все данные в порядке, поэтому я решил просто скопировать их на новый диск и сделать его загрузочным. Я купил новый диск, разделил его, смонтировал первый раздел и скопировал все данные на этот раздел. Моя система Legacy, не EFI. Я отредактировал /etc/fstab
на этом разделе, чтобы изменить UUID на UUID нового диска. Я выполнил grub-install --boot-directory=/mnt/newdriveroot/boot /dev/sdb
, чтобы сделать его загрузочным, и отредактировал /boot/grub/grub.cfg
на этом разделе, чтобы изменить UUID коревого раздела на UUID первого раздела нового диска.
Когда я пытаюсь загрузиться с него, Grub загружается, показывая меню так же, как это было до выхода из строя старого диска. Когда я выбираю дефолтный вариант, Linux начинает загружаться. Он очищает экран и затем:
Загрузка Linux 3.2.0-4-amd64 ...
Загрузка начального ramdisk ...
затем снова очищает экран и затем:
Загрузка, пожалуйста, подождите...
[ 4.882479] EXT4-fs (sda1): ошибка загрузки журнала
mount: монтирование /dev/disk/by-uuid/e14dc4cb-4b45-8418-e7a6-b2c8d6036749 на /root не удалось: Неверный аргумент
mount: монтирование /dev на /root/dev не удалось: Нет такого файла или каталога
Целевая файловая система не имеет запрашиваемого /sbin/init.
Инициализатор не найден. Попробуйте передать init= в параметрах загрузки.
Затем он сбрасывает меня в встроенную оболочку с подсказкой (initramfs)
.
Попытки исправить это
На этом этапе я могу смонтировать коревой раздел с помощью:
mount -o ro,noload /dev/sda1 /root
хотя я не знаю, что это мне дает. (Если я затем выйду из оболочки, процесс загрузки пытается продолжиться, но это приводит к ошибкам о том, что /root/sys
и /root/proc
не существуют.) Но, возможно, тот факт, что оба ro
и noload
необходимы для монтирования, является полезной информацией? И сейчас, вероятно, хорошее время, чтобы вспомнить, что когда он подключен к работающей системе, я могу смонтировать раздел без проблем (ни ro
, ни noload
не нужны).
Я не знаю, на что смотреть в выводе dmesg
; единственное, что я замечаю, это то, что незадолго до вышеупомянутой ошибки журнала есть строка, которая говорит:
JBD2: Неизвестные функции журнала
Я запустил fsck
и fsck -f
, но не было найдено никаких проблем.
Похожие проблемы
Я не нашел постов, подобных той ситуации, с которой я сталкиваюсь. В частности, каждая ошибка “ошибка загрузки журнала” происходит вместе с ошибками, найденными fsck, или с невозможностью смонтировать раздел. В моей ситуации fsck ничего не находит, и раздел может быть смонтирован без проблем с работающей системы.
Информация о системе
Что еще было бы полезно мне опубликовать? Какие-либо файлы Grub? Не думаю, что это важно, но вот вывод от lsblk
, когда он подключен к моей работающей системе:
$ lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb 8:16 0 119.2G 0 disk
├─sdb1 8:17 0 20G 0 part
├─sdb2 8:18 0 1K 0 part
├─sdb5 8:21 0 10G 0 part
├─sdb6 8:22 0 8G 0 part
├─sdb7 8:23 0 2G 0 part
└─sdb8 8:24 0 79.2G 0 part
(Я выделил sdb6 как раздел подкачки. 5 предназначен для /var, 7 для /tmp, а 8 для /home.)
Вот /etc/fstab
(UUID-ы удалены для удобочитаемости):
UUID=<...> / ext4 errors=remount-ro 0 1
UUID=<...> /home ext4 defaults 0 2
UUID=<...> /tmp ext4 defaults 0 2
UUID=<...> /var ext4 defaults 0 2
UUID=<...> none swap sw 0 0
Я пропустил какой-то важный шаг в создании загрузочным диска?
Ответ или решение
Чтобы сделать новый накопитель загрузочным и устранить возникшие ошибки, следуйте этим детализированным шагам:
1. Подготовка нового диска
-
Проверка разметки: Убедитесь, что вы правильно создали таблицу разделов на новом диске. Для этого вы можете использовать такие утилиты, как
fdisk
илиparted
. Например, для создания новой таблицы разделов:sudo fdisk /dev/sdb
-
Создание файловых систем: Если вы ещё не создали файловую систему на разделах, используйте следующую команду для первого раздела:
sudo mkfs.ext4 /dev/sdb1
2. Копирование данных
Поскольку вы уже скопировали данные с помощью dd
, убедитесь, что скопированные файлы находятся на правильных местах:
sudo mount /dev/sdb1 /mnt/newdriveroot
sudo cp -a /путь/к/данным/* /mnt/newdriveroot/
3. Настройка fstab
Проверьте, правильно ли вы обновили UUID в /etc/fstab
. Чтобы проверить UUID нового раздела, выполните:
blkid
Убедитесь, что у вас правильные UUID для всех разделов, которые вы указали.
4. Установка GRUB
-
Установка GRUB: Убедитесь, что вы устанавливаете GRUB на правильный дисковый носитель. Переходите в магазин:
sudo grub-install --boot-directory=/mnt/newdriveroot/boot /dev/sdb
-
Конфигурация GRUB: Проверьте конфигурацию и корректность указанных UUID в
/boot/grub/grub.cfg
. Если у вас нет этой конфигурации, вы можете сгенерировать её с помощью:sudo update-grub
5. Проверка и поиск ошибок
Если при загрузке возникают ошибки, такие как:
EXT4-fs (sda1): error loading journal
Это может указывать на повреждение журнала. Однако, поскольку fsck
не выявляет проблем, возможно, стоит проверить, нет ли в журнале новых флагов или опций. Запустите fsck
с различными параметрами, например:
sudo fsck -f /dev/sdb1
sudo fsck.ext4 -c /dev/sdb1
6. Дебаггинг загрузки
Если продолжаете получать initramfs
, подключитесь к командной строке и проверьте, как выглядит монтирование:
mount /dev/sda1 /root
Если это работает, точка в том, что система может быть неправильно настроена для поиска файлов при загрузке.
7. Логи
Проверьте вывод dmesg
для поиска конкретных сообщений об ошибках, которые могли бы подсказать, что может быть не так. Обратите внимание на строки, указывающие на проблемы с журналом файловой системы.
Заключение
Ваш подход к восстановлению системы выглядит правильным, но важно проверить каждую деталь, чтобы убедиться, что параметры загрузки, файловой системы и GRUB настроены корректно. Если после этих шагов ваша система всё ещё не загружается, возможно, имеет смысл начать с чистого установочного процесса на новый диск и переносить данные по частям.
Если возникнут дополнительные вопросы или проблемы, пожалуйста, наберите их, и мы можем рассмотреть их вместе.