Gentoo Wiki에서 다음과 같은 간단한 initramfs 예제를 찾았습니다.
#!/bin/busybox sh
# Mount the /proc and /sys filesystems.
mount -t proc none /proc
mount -t sysfs none /sys
# Do your stuff here.
echo "This script just mounts and boots the rootfs, nothing else!"
# Mount the root filesystem.
mount -o ro /dev/sda1 /mnt/root
# Clean up.
umount /proc
umount /sys
# Boot the real thing.
exec switch_root /mnt/root /sbin/init
proc
및 /proc
에 설치 sysfs
됩니다 /sys
. 마지막으로 이전에 switch_root
제거합니다. 그러나 man switch_root
내가 읽은 후에는 다음과 같습니다.
switch_root moves already mounted /proc, /dev, /sys and /run to newroot and makes newroot the new root filesystem and starts init process
- 이 initramfs 예제가 마운트 해제된 이유는 무엇
proc
이며 이동sys
해야 합니까 ?switch_root
sysfs
install to/sys
; 는 어디에서 왔으며sysfs
이름이 다른 이유는 무엇입니까?- 예제를 보았
/dev
으니 마운트할 디렉토리를 어떻게 알 수 있나요?
답변1
이 initramfs 예제가 마운트 해제된 이유는 무엇
proc
이며 이동sys
해야 합니까 ?switch_root
이것매뉴얼 페이지당신은 문서를 읽었습니다루트 디렉터리 전환제공:유틸리티Linux. 말씀하신 대로 이 명령은 일부 가상 파일 시스템을 새 루트 디렉터리로 이동합니다. 그러나 제공한 스크립트에는셰르본 #!/bin/busybox sh
, 이는 다음을 사용한다는 의미입니다.바쁜 상자. BusyBox는 자체적으로 제공합니다.루트 디렉터리 전환, 이는 이러한 파일 시스템을 이동하지 않습니다. BusyBox의 목적은 여러 패키지를 하나로 결합하는 것이므로 이 스크립트는 BusyBox 버전의 switch_root
.
sysfs
install to/sys
; 는 어디에서 왔으며sysfs
이름이 다른 이유는 무엇입니까?
이것산이 스크립트의 명령은 다음을 사용합니다.mount -t [type] [device] [dir]
:
cat /proc/filesystems
목록[type]
.cat /proc/filesystems
파일 시스템이 다음과 같이 나열nodev
되어 있는 경우가상 파일 시스템, 그리고[device]
임의적입니다(보통none
).[dir]
마운트 지점입니다.
파일 시스템의 현재 마운트 지점을 보려면 find file system을 실행 mount
하고 사용하십시오 . 내 시스템 grep
에서는 .mount | grep sysfs
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
예제를 보았
/dev
으니 마운트할 디렉토리를 어떻게 알 수 있나요?
어떤 가상 파일 시스템을 마운트해야 하는지 어떻게 알 수 있는지는 모르지만 Gentoo의 예를 신뢰합니다. initramfs에서 할 일이 더 있다면(아마도 그렇게 할 것입니다) 다음을 수행하는 것이 좋습니다.
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t devtmpfs devtmpfs /dev
mkdir /dev/pts
mount -t devpts devpts /dev/pts