Ты не хочешь rootfstype=ramfs
. Я уверен. Хотя AFAICT это не настоящая проблема.
Монтаж ramfs
игнорирует блочное устройство(root=/dev/ram0
в этом случае ). ramfs
не поддерживается никаким файлом устройства. Он изначально пустой.
Следовательно, если rootfstype=ramfs
вступит в силу, он просто смонтирует пустую fs. Следовательно, не будет init
запускаемой программы. (Это также будет генерировать ошибку 2 = ENOENT = «Нет такого файла или каталога», когда ядро пытается смонтировать devtmpfs на /dev
, как вы видите в своем журнале ).
Вы показываете, что используете новый -стиль initramfs, то есть архив cpio вместо образа файловой системы. Это хорошо. Но тогда вы должны получить сообщение типа "Распаковка initramfs...", когда ядро обнаружит новый формат стиля -и распаковывает его.
В оригинальном документе говорится, что initramfs должен быть cpio, сжатым с помощью gzip. Однако я думаю, что текущий код также доволен несжатым cpio.
Как вы сказали, у вас, похоже, проблема в том, что ядро не распознает initramfs.
По крайней мере, initrd_start
выглядит как 0
при вводе populate_rootfs()
. Если бы это было не -нулевое значение, вы бы увидели по крайней мере одно сообщение или ошибку, связанную с initrd -или initramfs -.
https://elixir.bootlin.com/linux/v4.1/source/init/initramfs.c#L608
ИЛИ, initramfs.c
даже не включается в ядро, потому что вы не включили CONFIG _BLK _DEV _INITRD. Вот что говорит мне init/Makefile .
initrd:https://www.kernel.org/doc/html/v4.18/admin-guide/initrd.html
initramfs:https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt
Корень вашей проблемы может заключаться в функции автоматической приостановки USB в TLP (управлении питанием ), если она поставляется с вашим дистрибутивом.
Попробуйте отключить его, запустив systemctl disable tlp.service
и перезагрузившись.
Если вы хотите, чтобы он работал, вы также можете добавить свой аудиоинтерфейс в черный список, как описано в документации:https://linrunner.de/tlp/settings/usb.html
Существует также пользовательский интерфейс для настройки конфигурации под названием tlpui.
Подробнее здесь :https://wiki.archlinux.org/index.php/TLP#USB_autosuspend
Присоедините GDB к работающему демону PulseAudio и дайте ему продолжить работу:
$ gdb -p $(pgrep pulseaudio) -ex continue /usr/bin/pulseaudio
Когда сигнал доставлен, GDB поймает его и позволит вам изучить его . Например:
(gdb) ptype $_siginfo
[...]
(gdb) print $_siginfo._sifields._kill
$2 = {si_pid = 19569, si_uid = 1234}
человеческая сигнатура дает некоторую предысторию.