Вы могли также записать udev-правило, которое позволяет Вам указывать, что сделать когда соединенный диск:
# cat /etc/udev/rules.d/99-usb-mount.rules
SUBSYSTEM=="usb", ACTION=="add", ENV{ID_SERIAL_SHORT}=="XXXXXXXXXX", RUN+="/path/to/script1.sh"
SUBSYSTEM=="usb", ACTION=="remove", ENV{ID_SERIAL_SHORT}=="XXXXXXXXXX", RUN+="/path/to/script2.sh"
Можно автоматизировать резервное копирование на дисковом соединении, например
Измените параметр загрузки ядра, установив параметр root = / dev / sdaX
. sdaX
будет вашим /
или корневым
разделом. При следующей загрузке вы увидите, что ваш initramfs
пытается смонтировать раздел, прежде чем пытаться получить доступ к / etc / fstab
и смонтировать файловые системы.
См. Вопрос « Использует ли initramfs / etc / fstab? » для получения более подробной информации.
Что вам нужно знать о initramfs
, так это то, что это файловая система. Начиная с ядра 2.6, это, по сути, единственная файловая система, навязанная ядром (не считая VFS, которая , возможно, также является файловой системой) на вашем компьютере. Ваш образ initramfs
- это образ диска.
В вашем образе initramfs
будут все файлы, которые ваш дистрибутив решил, что они достаточно важны, чтобы требовать их до того, как будет найден корневой диск. Обычно это Busybox и любые модули ядра, необходимые для поиска и монтирования корневого устройства. Это не работает для вас.
Однако, учитывая все обстоятельства, здесь нет никакой тайны. Если вы можете ориентироваться в командной строке терминала, вы можете перейти к initramfs.
Но сначала вы должны демистифицировать это.
Прежде всего и еще раз - это просто /.
Это корень Linux, который выполняет задачи корневого типа Linux. Фактически, если он находится в отдельном файле от вашего ядра, на самом деле это уже ваше второе корневое устройство. Каждое ядро Linux содержит в основном пустой /
, который он сначала монтирует перед загрузкой ваших initramfs.
Более того, initramfs
- это реальный корень. Именно здесь ядро Linux инициализирует пользовательское пространство, выполнив init
и впоследствии снимая с себя всякую ответственность за любые проблемы, с которыми вы можете столкнуться в дальнейшем. Ваш init
кажется Busybox, как и многие другие, что означает, что управление его действиями должно быть таким же простым, как редактирование сопровождающих его сценариев оболочки.
Тогда почему возникает ошибка о том, что не удается найти init?
Почти определенно это относится к программе с именем init
, которой ваш фактический init
был проинструктирован через сценарий оболочки чтобы запустить себя.
Больше всего меня поразило то, что псевдофайловые системы ядра - dev sys proc
- не монтируются. Это либо очень беспокоит, либо очень хорошая подсказка. Вы упоминаете KVM, что заставляет меня сомневаться в возможностях ядра, но прежде чем мы пойдем по этой темной и изрезанной дороге, можем ли мы сначала попробовать что-нибудь еще?
cd /root || mkdir /root
Мне кажется, что сообщение об ошибке повторяется постоянно:
Нет такого файла или каталога
В противном случае вам необходимо перестроить образ initramfs
. Для этого загрузитесь с живого диска и запустите любой инструмент, который предоставляет ваш дистрибутив для достижения этой цели. О, и пожалуйста, убедитесь , что этот живой диск загружен в режиме EFI .
Итак, вот единственная действительно необычная вещь в initramfs - switchroot.
Ядро Linux предоставляет очень специальный системный вызов, предназначенный для раннего пользовательского пространства и обработки перехода от initramfs
к корневому диску.Он работает, сначала монтируя корневой диск в точку монтирования в initramfs
, а затем перемещая в него корневую файловую систему. Я предполагаю, что ваша целевая точка монтирования initramfs
- это root
, судя по тому, как он постоянно жалуется на это. Почему бы не удостовериться, что он там?
Для дальнейшего расследования вам понадобится немного твердости. Настройте загрузчик так, чтобы он передавал ...
init=/bin/sh
... в качестве параметра ядра.
У меня была такая же проблема. То, что сказал Алексей, верно. Сначала я поправил свой fstab
, но это не помогло. Итак, я проверил свой GRUB. Если у вас есть возможность доступа к меню GRUB.
initramfs
, набрав 'blkid
', и беру uuid, на каком разделе установлен мой линукс. Это решило мою проблему. После перезагрузки моему Linux потребовалось больше времени, чтобы начать проверку диска. Но теперь снова работает.
Надеюсь, я смогу вам помочь.
С уважением