blkid, не работающий сразу после cdrecord

Я нашел замечательное объяснение здесь . Однако позвольте мне попытаться поставить в более короткий формат того, что я понял в ответ.

Более короткая версия

  1. , в то время как системные сапоги нуждается в раннем пространстве. Может быть достигается с помощью initramfs или initrd.
  2. initrd загружен в Ramdisk, который является фактической файловой системой .
  3. initramfs не файловая система .
  4. Для используется initrd pivot_root и для initramfs используется Switch_root .

Дольше версия

Теперь до подробного объяснения того, что я поставил выше.

в то время как initramfs, так и initrd служат той же цели, там 2 различия. Наиболее очевидная разница в том, что initrd загружен в рамдиск. Он состоит из фактической файловой системы (обычно Ext2) который установлен в рамадиске. Initramfs, с другой стороны, это не файловая система. Это просто (сжатый) CPIO Archive (типа Newc), который распакован в TMPF. Это имеет побочный эффект создания initramfs немного более оптимизирован и способен загрузки немного Ранее в процессе загрузки ядра, чем initrd. Кроме того, размер initramfs в памяти меньше, так как ядро ​​может адаптировать размер TMPF к тому, что на самом деле загружен, а не полагается на предопределенные размеры Ramdisk, и он также может очистить оперативную память, которая была Используются, тогда как Ramdisks имеют тенденцию оставаться в использовании (из-за деталей Реализация pivot_root).

Существует также другая побочная разница: как корневое устройство (и Переключение к нему) обрабатывается. Поскольку initrd - это фактическая файловая система Распаковывается в оперативную память, корневое устройство должно быть на самом деле Ramdisk. За initramfs, есть ядро ​​«rootfs», которое становится TMPF, которые initramfs распакован (если ядро ​​загружает initramfs; если нет, то rootfs - это просто файловая система, указанная через root = Параметр загрузки ядра), но эти временные rootfs не должны быть указано в качестве корня = параметр загрузки (и не будет способа Сделайте это, так как к нему нет устройства). Это означает, что вы все еще может пройти ваше настоящее root-устройство в ядро ​​при использовании initramfs. С initrd вы должны обрабатывать, что реальный корень Устройство сам. Также, поскольку «настоящее» корневое устройство с initrd Является ли Ramdisk, ядро ​​должно действительно свисать корневые устройства от одного Реальное устройство (Ramdisk) к другому (ваш реальный корень). В случае initramfs, пространство initramfs (TMPFS) не является настоящим устройством, Таким образом, ядро ​​не переключает реальные устройства. Таким образом, пока команда pivot_root используется с initrd, другая команда должна быть использована для initramfs. Busybox предоставляет switch_root сделать это, Пока Klibc предлагает New_root.

1
15.01.2015, 17:42
2 ответа

Ну, у меня нет времени, чтобы следовать советам @ Derobert и бегать по всей стране в этот момент (другие задачи ждут). Для текущего выпуска я просто добавил -T ISO9660 в команду mount после вызова CDRecord , который красиво окажется по всей проблеме. Учитывая, что мое программное обеспечение только что записало компакт-диск, я могу быть совершенно уверенным, что файловая система ISO9660 в этом случае, поэтому я могу уйти с этим трюком для неопределенного будущего.

0
28.01.2020, 01:48

Программы, которые вы использовали, взяты из неисправной вилки и дистрибутивов Linux, которые не распространяют оригинальный cdrecord, но форк, созданный в мае 2004 года, никогда не обновлял программное обеспечение, чтобы получить более свежие функции и исправления ошибок. Дистрибутивы, которые поставляют "wodim", также поставляют другое дефектное программное обеспечение, такое как, например, genisoimage вместо настоящего mkisofs.

Даже в исходном mkisofs от мая 2004 года было много ошибок, но в Debian genisoimage добавлено много дополнительных ошибок в 2004 году.

Летом 2006 года все известные ошибки были исправлены в исходном программном обеспечении, а с мая 2004 года (когда вилка вы используете, было создано) оригинальное программное обеспечение удвоило его функции.

Используемый вами genisoimage создает образы файловой системы со структурными ошибками. Если у вас есть проблемы, я рекомендую обновиться до последней оригинальной версии программного обеспечения с:

https://sourceforge.net/projects/cdrtools/files/

Если автоматическое определение файловой системы не работает, это либо вызвано проблемами в фактической файловой системе или из-за ошибки в программе обнаружения.

Если ваша проблема не исчезнет при проверке образа файловой системы, созданного настоящим mkisofs, пожалуйста, сообщите об ошибке в программе обнаружения.

0
28.01.2020, 01:48

Теги

Похожие вопросы