일부 Linux 시스템에서 루트 파일 시스템이 /dev/ 대신 /dev/root로 나타나는 이유는 무엇입니까?엠탭에서?

일부 Linux 시스템에서 루트 파일 시스템이 /dev/ 대신 /dev/root로 나타나는 이유는 무엇입니까?엠탭에서?

/dev/sda1/dev/root다양한 Linux 시스템에서 루트 장치가 실제 장치 노드(예: )가 아니고 로 나타나 거나 실제 파일 시스템이 아니지만 ( system 에서 실제 파일로 표시되지만 mtab이라는 파일 시스템 이 없음을 확인했습니다. 시스템의 코드 . 특정 속성을 사용하여 실제 루트 장치 노드(예: rdev 및 Chromium OS rootdev)를 결정하는 다양한 유틸리티가 개발되었습니다. 매우 작은 임베디드 장치가 항상 루트 장치에 장치 노드를 제공할 필요는 없다는 내용을 읽는 것 외에는 논리적인 설명을 찾을 수 없습니다. (이것이 사실인가요? 그렇다면 이것이 내 질문에 대한 답변입니까?) mtab이 가끔 실제 장치 노드 대신 (한 번 본 것 같습니다 )이라고 말하는 이유는 무엇이며 항상 그렇게 만들 수 있는 방법은 무엇입니까? 실제 장치에 대해 이야기 노드? 커널은 먼저 cmdline의 매개변수에 따라 루트 장치를 마운트한 다음 매개변수에 따라 다시 마운트합니다 . 그렇죠? 그렇다면 유지하는 것이 좋을 것 같습니다 . 내 이론이 맞다면 어떻게 실제 루트 장치 노드에 쓸 수 있습니까 ? 나는 이것이 실제로 커널에 의해 유지 관리되는 에 대한 심볼릭 링크라는 것을 알았습니다. 그렇다면 루트 장치 노드 경로가 이라고 말하는 대신 실제 장치 노드를 포함하도록 커널을 구성/패치하려면 어떻게 해야 합니까 ?rootfs/proc/filesystems<linux-kernel-source-tree>/fs/dev/dev/rootrootdevrootinit/systemdfstabinitmtabinitmtab/etc/mtab/proc/mountsmtab/dev/rootmtab

답변1

이는 일반적으로 initramfs 사용으로 인한 아티팩트입니다.

커널 문서에서 (https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt)

rootfs란 무엇입니까?

Rootfs는 2.6 시스템에 항상 존재했던 ramfs(또는 활성화된 경우 tmpfs)의 특수 인스턴스입니다. rootfs를 마운트 해제할 수 없는 이유는 init 프로세스를 종료할 수 없는 것과 거의 같습니다. 빈 목록을 확인하고 처리하기 위해 특수 코드를 사용하는 대신 커널은 특정 목록이 종료되지 않도록 더 작고 간단하게 보장할 수 있습니다. 텅 비게 된다.

대부분의 시스템은 rootfs에 다른 파일 시스템을 마운트하고 이를 무시합니다. ramfs의 빈 인스턴스는 매우 적은 양의 공간을 차지합니다.

따라서 이는 rootfsinitramfs용으로 생성된 루트 파일 시스템이므로 마운트 해제할 수 없습니다.

에 관해서 /dev/root는 잘 모르겠지만, 제 기억이 맞다면 /dev/root(initramfs와는 달리) initrd를 사용할 때 생성된 것 같습니다.

답변2

젠투에는 이를 수행하는 패치가 있습니다(실제 루트 장치가 표시되는지 확인). 여기에서 찾을 수 있습니다:https://lkml.org/lkml/2013/1/31/574

답변3

Linux에서는 /dev/root부팅 시 생성된 실제 장치에 대한 심볼릭 링크입니다.

부팅 커널의 매개변수를 사용 readlink /dev/root하거나 cat /proc/cmdline확인하여 root그 뒤에 있는 실제 장치를 찾을 수 있습니다.

남자들에게서dracut(8)

그러나 성공적인 부팅을 계속하려면 루트 볼륨을 찾고 파일 시스템 /dev/root에 대한 심볼릭 링크를 생성하는 것이 목표입니다.

관련 정보