일부 Linux 시스템에서 루트 파일 시스템이 mtab에서 / dev / <real device node> 대신 / dev / root로 표시됩니까?


11

실제 장치 노드 (예 :) 대신 /dev/sda1루트 장치가 /dev/root실제 파일 시스템 대신에 나타나는 다양한 Linux 시스템에서 본 mtab파일 시스템은 rootfs(실제 파일 시스템으로 표시 /proc/filesystems되지만 에 코드가 없습니다 <linux-kernel-source-tree>/fs). 실제 루트 장치 노드 (예 : rdev 및 Chromium OS rootdev)를 결정하기 위해 특정 속성을 사용하도록 다양한 유틸리티가 만들어졌습니다. 매우 작은 임베디드 장치가 항상 /dev루트 장치에 대한 장치 노드 를 가질 필요가없는 곳을 읽는 것 외에는 이것에 대한 논리적 설명을 찾을 수 없습니다 . (이 사실인가, 그렇다면, 내 질문에 대한 대답은?이다) 왜 mtab 파일 때때로 말하는가 /dev/root(그리고 나는이 말을 본 것 같아요rootdev한 번) 실제 장치 노드 대신 항상 실제 장치 노드를 어떻게 말할 수 있습니까? 커널 첫번째 마운트 다음 루트 장치 root설명 할 cmdline의 매개 변수는 다음 init/systemd다시 마운트가에 따라 fstab, 정확한을? 그렇다면 init유지 한다고 가정 합니다 mtab. 내 이론이 맞다면 어떻게 init실제 루트 장치 노드를 쓸 수 mtab있습니까? 나는 이것이 /etc/mtab실제로 심볼릭 링크 라는 것을 알았습니다 . 이것은 커널에 의해 유지 /proc/mounts된다는 것을 의미 mtab합니다. 어떻게 내가 대신 루트 디바이스 노드 경로는 말의에 커널 패치 / 구성해야합니까 /dev/root, 한 mtab실제 장치 노드를 포함?

답변:


4

이것은 일반적으로 initramfs를 사용하는 결과입니다.

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

rootfs 란 무엇입니까?

Rootfs는 항상 2.6 시스템에있는 ramfs (또는 활성화 된 경우 tmpfs)의 특수 인스턴스입니다. init 프로세스를 죽일 수없는 것과 같은 이유로 rootfs를 마운트 해제 할 수 없습니다. 빈 목록을 확인하고 처리하는 특수 코드가 아닌 커널이 특정 목록을 비워 둘 수 없도록 작고 간단합니다.

대부분의 시스템은 rootfs를 통해 다른 파일 시스템을 마운트하고 무시합니다. 비어있는 ramfs 인스턴스가 차지하는 공간은 아주 작습니다.

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

와 관련하여 /dev/root, 나는 이것에 대해 확신하지 못하지만 /dev/root, initrd (initramfs와 동일하지 않음)를 사용할 때 올바르게 리콜하면 생성됩니다.


mount제공 rootfs on / type rootfs (rw)된 initrd과 /dev/root on / type ext2 (rw,relatime,block_validity,barrier,user_xattr)EXT2 하드 디스크에 대해 이 설정을 가진 .
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功

/dev/rootinitramfs의 일부 구현에서는 사용되지만 다른 구현에서는 사용되지 않습니다. 이러한 경우 커널 때문이 아닙니다. initramfs를 사용 하지 않을 때는 커널이 사용하는 자리 표시 자 값인 것 같습니다. (아마도 나중에 커널 버전에서 제거 될 수 있습니다). stackoverflow.com/questions/37310046/…
sourcejedi


2

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

당신이 중 하나를 사용 readlink /dev/root하거나 cat /proc/cmdline볼 수 root부팅 된 커널의 매개 변수를, 따라서 그 뒤에 실제 장치를 찾을 수 있습니다.

남자에서 dracut(8)

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


/dev/rootRedHat 기반 배포판의 인공물 인지 확실하지 않습니다 .
Rui F Ribeiro

글쎄, 내 데비안 8에는이 없습니다 /dev/root/. 오래된 CentOS에서는 심볼릭 링크 대신 실제 장치 노드 인 것 같습니다.
ilkkachu

1
글쎄, OpenEmbedded의 base-files레시피에 대한fstab 언급 /dev/root은 그것을 사용하는 Red Hat에서 나온 배포판이 아닙니다.
ack
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.