initramfs에/sys를 채우는 방법은 무엇입니까?

initramfs에/sys를 채우는 방법은 무엇입니까?

데비안 커널을 사용하여 운영 체제(리눅스 커널)를 부팅하려고 하므로 initramfs를 사용해야 합니다(모든 것이 모듈로 빌드되므로). 그러나 initramfs로 부팅한 후 /sys/blocks를 다음으로 채우지 않는 것 같습니다.

# mdev -s

장치(/dev/sd[az][0-9])로 개발자를 채울 수 없습니다.

그렇다면 "/sys"를 어떻게 올바르게 입력해야 할까요? 저는 qemu를 사용하여 시스템을 부팅하고 원본 이미지를 "hd"로 사용하고 있습니다.

참고:
* 이것은 데비안(또는 다른 배포판)이 아닙니다. 제 initramfs는 처음부터 생성되었습니다.
* 저는 mdev를 사용하고 있습니다.
* /init 스크립트는 다음과 같습니다:

mount -n -t proc none /proc
mount -n -t sysfs none /sys
mkdir /.root
mdev -s
mount -n -t $rootfstype $device /.root
umount /proc
umount /sys
exec switch_root /.root $init $@

편집 : 내 질문아니요개발자를 채우세요. 필요한 경우 수동으로 수행할 수 있습니다. "/sys"를 살펴보고 "mknod"를 사용하세요. 문제는 "/sys"에 "/sys/block/sd[az][0-9]" 장치가 없다는 것입니다.

정보:https://bin.privacytools.io/?d50e11eea81d8158#1ga51UE+NI6nX49SbkdjGitXOyZpalWUu2I3BuEMx+o=
(qemu 저주에서 복사할 때 뭔가 놓쳤을 수도 있습니다)

답변1

를 사용하려면 커널 구성에 명령을 추가한 후 다음 명령을 실행해야 mdev합니다 .CONFIG_UEVENT_HELPER=ymdev -s

echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

원천:젠투 위키

기본 Debian 10 커널에는 CONFIG_UEVENT_HELPER설정이 없으므로 mdev사용할 수 없습니다. 대신 다음과 같이 CONFIG_DEVTMPFS=y할 수 있습니다.

mount -n -t proc none /proc
mount -n -t sysfs none /sys
mount -n -t devtmpfs none /dev
mkdir /.root
# this would be a great place to run "fsck -C0 $device" if required by $rootfstype
mount -n -t $rootfstype $device /.root
umount /proc
umount /sys
umount /dev
exec switch_root /.root $init $@

...실제 루트 파일 시스템으로의 전환이 완료되면 devtmpfs파일 시스템을 다시 마운트할 수 있습니다.

mount -n -t devtmpfs none /dev

관련 정보