initramfs에서 무엇을 마운트하고 마운트 해제해야 합니까?

initramfs에서 무엇을 마운트하고 마운트 해제해야 합니까?

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
  • sysfsinstall to /sys; 는 어디에서 왔으며 sysfs이름이 다른 이유는 무엇입니까?
  • 예제를 보았 /dev으니 마운트할 디렉토리를 어떻게 알 수 있나요?

답변1

이 initramfs 예제가 마운트 해제된 이유는 무엇 proc이며 이동 sys해야 합니까 ?switch_root

이것매뉴얼 페이지당신은 문서를 읽었습니다루트 디렉터리 전환제공:유틸리티Linux. 말씀하신 대로 이 명령은 일부 가상 파일 시스템을 새 루트 디렉터리로 이동합니다. 그러나 제공한 스크립트에는셰르본 #!/bin/busybox sh, 이는 다음을 사용한다는 의미입니다.바쁜 상자. BusyBox는 자체적으로 제공합니다.루트 디렉터리 전환, 이는 이러한 파일 시스템을 이동하지 않습니다. BusyBox의 목적은 여러 패키지를 하나로 결합하는 것이므로 이 스크립트는 BusyBox 버전의 switch_root.

sysfsinstall 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 sysfssysfs 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

관련 정보