Есть ли способ определить текущий загрузочный носитель, используемый для загрузки ОС Linux Live? В реальной операционной системе я бы хотел однозначно определить текущий загрузочный носитель (CD/USB), который использовался для загрузки диска. Я хотел бы определить это на уровне ОС, а не на уровне загрузчика.
Текущий загрузочный носитель в моем случае означает носитель, на котором находится загрузчик, который использовался для запуска ОС.
Я проверил следующее, но, похоже, ни у кого нет информации о пути разработки текущего загрузочного носителя (как, например, /dev /sr0, указывающий, что текущий путь загрузки - это cd)
- Проверка журналов systemd journalctl .
- Проверка логов dmesg .
- Возможные интерфейсы в утилитах udev и udevadm .
- Busybox rdev вроде предложен в http://free-electrons.com/blog/find-root-device/ . Процедура сравнения stat / с мажорной: младший номер устройства / dev / sr0, похоже, не совпадает.
Я также проверил в GRUB2, http://git.savannah.gnu.org/cgit/grub.git/tree/grub-core/kern/i386/pc/init.c, где установлены переменные среды GRUB root и префикс. Например, в оболочке GRUB2, которая была загружена с компакт-диска, если я наберу echo $ root, я получу hd31. Теперь, как мне сопоставить это с путем к блочному устройству Linux, таким как /dev/sr0 для компакт-диска или каким-либо /dev/sdb1 для дисковода? Я также проверил Linux: получите имя текущего загрузочного диска и https://stackoverflow.com/questions/6787819/how-to-determine-the-booting-device, но оба они, похоже, не помогают.
В идеале я хотел бы избежать монтирования каждого CD/USB (/dev/sr0 или /dev/sdb1 и т. П.), Чтобы вручную проверять наличие файлов initrd и kernel. Этот метод не является надежным. Есть ли простой способ сделать это?