나는우분투 Jammy 데스크탑QEMU의 가상 머신. 호스트 시스템도 Ubuntu Jammy입니다. 명령은 다음과 같습니다:
qemu-system-x86_64 \
-nodefaults \
-machine q35,accel=kvm \
-cpu host \
-smp 2 \
-m 2G \
-chardev vc,id=monitor \
-mon monitor \
-serial vc \
-bios /usr/share/qemu/OVMF.fd \
-cdrom jammy-desktop-amd64.iso
Ctrl
++를 사용하여 Alt
직렬 콘솔에 들어가면 2
예상대로 GRUB 메뉴를 볼 수 있습니다. 그런 다음 Enter 키를 눌러 시스템을 시작했습니다. 이 시점부터 콘솔은 조용하게 유지됩니다.로그인 프롬프트가 없습니다.
Mac(M2)에서 호스트와 똑같은 작업을 수행했는데 항상 다음과 같은 로그인 프롬프트가 표시되었기 때문에 혼란스럽습니다.
Linux/AMD64에서 이것이 작동하지 않는 이유는 무엇입니까?
답변1
Linux에 로그인 콘솔을 시작할 위치를 알려주는 것이 없기 때문에 이는 작동하지 않습니다. 이는 기본값이 아닙니다. Ubuntu가 ARM의 부팅 가능한 ISO를 위해 특별히 수행하는 작업입니다.
Ubuntu는 부트로더와 Linux 콘솔을 사용 가능한 직렬 포트로 리디렉션하기 위해 ARM 이미지를 미리 구성한 것으로 보입니다. 이는 종종 ARM 기반 시스템의 유일한 출력이기 때문입니다. (이것은멀리사용자가 MacBook보다 Raspberry Pi와 같은 장치에서 ARM 배포판을 부팅하는 것이 더 일반적입니다. )
반면 x86 장치에는 일반적으로 이 문제가 없습니다. 항상 펌웨어에서 제공하는 텍스트 콘솔 출력을 사용할 수 있습니다. 이는 GRUB와 Linux 모두에서 사용되는 기본 콘솔입니다. 직렬 포트로의 리디렉션(x86 1,2 에서는 점점 더 드물어짐 )은 대부분의 배포판에서 결코 기본값이 아닙니다. 이러한 구성은 일반적으로 사용자에게 맡겨집니다.
(또한 실제로는 하나의 장치만 /dev/console의 대상으로 설정할 수 있으므로 직렬로 리디렉션하면 펌웨어 VGA 콘솔에 시스템 부팅 메시지가 표시되지 않습니다(Plymouth와 같은 배포판을 사용하지 않는 한, 메시지를 복사할 수 있습니다. - 로그인 프롬프트가 나타날 때까지 자동으로 유지됩니다.
부트 로더 화면에 액세스할 수 있는 경우 커널 명령줄을 편집하여 console=ttyS0,115200
/dev/console의 리디렉션을 지정하면 부팅 출력이 첫 번째 직렬 포트(COM1)로 이동하게 됩니다. 그러면 Systemd는 자동으로 serial-getty@ttyS0
서비스를 시작하여 로그인 프롬프트를 제공합니다.
부트로더 화면에 액세스할 수 없는 경우 ISO 이미지를 수정하여 부트로더 구성(GRUB 또는 Syslinux/isolinux일 가능성이 높음)을 편집해야 합니다. 이렇게 하면 직렬을 통해 부트로더 자체를 리디렉션하는 데 필요한 옵션을 추가할 수도 있습니다.
최근 시스템 버전에는 DMI 데이터(Qemu에 옵션이 있음)를 통해 추가 부팅 옵션을 전달하는 메커니즘이 있지만 아직 살펴보지 않았습니다. 나머지 부팅 프로세스는 표시되지 않지만 직렬 getty 서비스를 시작하는 데 도움이 됩니다(이 메커니즘은 커널이 아닌 init에 의해 처리됩니다).
1 (매우 느린 속도로 설정하거나 네트워크로 리디렉션하는 등. 존재하지 않는 직렬 포트에 데이터를 출력하려고 하면 문제가 발생할 수 있습니다.)
2 (희귀함을 제외하면, x86 시스템에서는 비터미널 장치가 ttyS0에 연결되는 것이 매우 일반적이며, 많은 사람들이 ModemManager가 GPS 수신기나 기타 장치에 프로브 "AT" 명령을 보내는 것에 대해 불평하는 것을 보았습니다. 마찬가지로 Windows 또한 부팅할 때마다 모든 마우스의 직렬 포트를 검색하는 작업이 자주 사용되며 Linux 사용자는 이를 비웃는 것을 좋아하므로 기본적으로 "ubuntu login:"을 보내는 것은 인기가 없을 것 같습니다.