Linux 라이브 OS는 동일한 미디어에 있는 커널 및 rootfs를 부팅하는 데 사용되는 현재 부팅 미디어(CD/USB)를 결정합니다.

Linux 라이브 OS는 동일한 미디어에 있는 커널 및 rootfs를 부팅하는 데 사용되는 현재 부팅 미디어(CD/USB)를 결정합니다.

감지할 수 있는 방법이 있나요?현재 부팅 미디어부팅하는 데 사용됨리눅스 라이브 OS? 라이브 OS 시스템에서 현재 부팅 미디어를 고유하게 결정하고 싶습니다(CD/USB) 디스크를 부팅하는 데 사용되었습니다. 나는하고 싶다부트로더 수준이 아닌 OS 수준에서 이를 결정합니다.

현재 부팅 미디어내 경우에는 미디어를 의미한다OS를 시작하는 데 사용된 부트 로더가 있는 위치입니다.

다음을 검사했지만 현재 부팅 미디어의 개발 경로 정보가 없는 것 같습니다(예: 현재 부팅 경로가 cd임을 나타내는 /dev/sr0).

  • 시스템 확인 중저널로그.
  • 확인 중dmesg로그.
  • 가능한 인터페이스udev그리고udevadm공익사업.
  • 비지박스 rdev에서 제안한 것처럼http://free-electrons.com/blog/find-root-device/. stat /를 /dev/sr0의 major:minor 장치 번호와 비교하는 절차가 일치하지 않는 것 같습니다.

GRUB2에서도 확인했는데,http://git.savannah.gnu.org/cgit/grub.git/tree/grub-core/kern/i386/pc/init.cGRUB 환경 변수뿌리그리고접두사설정되어 있습니다. 예를 들어, CD에서 부팅된 GRUB2 쉘에서 다음을 입력하면$root 에코, 나는 얻다HD31. 이제 이것을 다음과 같은 Linux 블록 장치 경로에 매핑하는 방법은 무엇입니까?/dev/sr0CD 또는 일부/dev/sdb1펜 드라이브에? 나도 확인했다Linux: 현재 부팅 디스크의 장치 이름을 가져옵니다.그리고https://stackoverflow.com/questions/6787819/how-to-determine-the-booting-device하지만 둘 다 별 도움이 안 되는 것 같아요.

이상적으로는장착을 피하십시오모든 CD/USB(/dev/sr0 또는 /dev/sdb1 등)를 사용하여 initrd 및 커널 파일이 있는지 수동으로 확인합니다. 이 방법은 완벽하지 않습니다. 이를 수행하는 간단한 방법이 있습니까?

답변1

다음을 찾았지만 무엇을 설정할지 잘 모르겠습니다. 커널/grub일 수도 있습니다. 이 경우 설정해야 합니다.

"다른 LiveOS 파일 시스템의 마운트 지점에 대한 장치 노드 참조일 수도 있습니다.현재 실행 중인 항목(예: 부팅된 Live CD/DVD/USB, 여기서 /run/initramfs/livedev는 부팅된 LiveOS 장치에 연결됨)을 포함합니다.)."

에서 https://www.mankier.com/8/livecd-iso-to-disk

답변2

Linux 커널 자체는 로드되는 위치에 관심이 없으며 이를 부트로더의 작업으로 간주합니다. 이상적으로 부트로더는 커널이 나중에 얻을 수 있는 어딘가에 이 정보를 기록할 것입니다. 이는 U-Boot 부트로더에서는 사소한 일이지만 x86 BIOS/UEFI는 그리 많지 않습니다.

결과적으로, 루트 파일 시스템이 있는 곳은 아마도 대부분의 시간 동안 Linux가 로드된 곳일 것입니다. 하지만 Linux 자체에서 이 정보를 얻을 수는 없다고 생각합니다. 한 곳에서 커널을 로드하고 다른 곳에서 루트 파일 시스템을 가져오는 것이 100% 가능합니다. 이는 임베디드 플랫폼에서 흔히 발생합니다.

그래서 시도해 볼 수 있는 몇 가지가 있습니다.

  • cat /proc/cmdline아마도 루트 파일 시스템이 로드된 위치를 알려줄 것입니다. root=커널 명령줄 매개변수는 커널이 로드될 때 루트 파일 시스템을 찾도록 지시받은 위치를 알려줍니다.

  • mount명령을 실행하고 /파일 시스템을 찾고 해당 장치를 살펴볼 수도 있습니다 .

관련 정보