소스에서 컴파일된 ISO 이미지를 사용하여 VMware 내에서 Linux 커널을 실행하려고 합니다.
현재 initramfs를 시작하려고 하는데 어떤 이유로 충돌이 발생합니다. 내 문제는 TTY의 크기 때문인데 그 이유를 모르겠습니다.
.config 파일에서 CONFIG_DUMMY_CONSOLE_ROWS를 25에서 60으로 변경했지만 아무 것도 변경되지 않았습니다.
또 무엇을 할 수 있나요?
답변1
VMware에서 초기 부팅 문제를 해결할 때 직렬 포트를 콘솔로 사용하도록 커널을 구성하는 것이 유용할 수 있습니다. 이를 위해서는 커널 부팅 옵션이 필요합니다. 귀하의 경우 이를 지정하는 유일한 방법은 커널 CONFIG_CMDLINE
구성 옵션을 통하거나 .FDARGS="..."
FDINITRD=
make isoimage
귀하의 경우 console=ttyS0,115200 console=tty0
가상 COM1 직렬 포트의 모든 출력을 파일에 저장하도록 옵션을 추가하고 VMware를 구성해야 할 수도 있습니다. 이렇게 하면 Linux 커널 부팅 메시지의 전체 목록을 파일에 넣어야 합니다.
(이 console=tty0
섹션에서는 콘솔 출력도 VMware 콘솔 창으로 보내도록 보장합니다. 이를 사용하지 않으면 콘솔 출력이 직렬 포트로 전송됩니다.오직, VGA 가상 디스플레이를 전혀 사용하지 않습니다. )
이러한 직렬 포트를 성공적으로 사용하려면 커널 구성 옵션 CONFIG_SERIAL_8250=y
과 CONFIG_SERIAL_8250_CONSOLE=y
.
내 생각에는 CONFIG_DUMMY_CONSOLE_ROWS
가상 CONFIG_DUMMY_CONSOLE_COLUMNS
"가상" 콘솔 장치에만 영향을 미치며 실제 콘솔 장치 드라이버가 인계받을 때까지만 작동합니다. 실제 콘솔 드라이버는 콘솔에서 사용되는 디스플레이 모드에 따라 행/열을 설정합니다.
이것처음에 댓글 달기drivers/video/console/dummycon.c
이것을 확인하는 것 같습니다 :
// SPDX-License-Identifier: GPL-2.0-only
/*
* linux/drivers/video/dummycon.c -- A dummy console driver
*
* To be used if there's no other console driver (e.g. for plain VGA text)
* available, usually until fbcon takes console over.
*/
게다가,drivers/video/console/vgacon.c
(즉, 실제 VGA 콘솔 텍스트 모드 드라이버)은 CONFIG_DUMMY_CONSOLE_ROWS
전혀 사용되지 않습니다.
vgacon.c
위에서 언급한 대로 구성된 클래식 VGA 텍스트 콘솔을 사용하는 경우 Artem S Tashkinov의 설명에서 제안한 대로 CONFIG_VGA_CONSOLE=y
커널 부팅 옵션 vga=ask
(결과 출력을 보고 적절한 (S)VGA 텍스트 모드 번호를 선택하면 ) vga=<mode number>
질문이 적절합니다.
최신 Linux 배포판은 CONFIG_FRAMEBUFFER_CONSOLE=y
일반적으로 initramfs에서 적절한 프레임 버퍼 장치 드라이버를 로드합니다. 이는 기존 VGA보다 더 높은 해상도 모드를 갖기 때문입니다. 하지만 초기 부팅 문제를 해결하는 것이므로 모니터(VMware 표시 창)에 출력할 수 있도록 커널에 넣어야 합니다. 레거시 BIOS 스타일을 사용하여 가상 머신을 부팅하는 경우(아마도 make isoimage
그렇게 하는 방법) 문제의 드라이버는 입니다 CONFIG_FB_VESA=y
. UEFI 스타일을 사용하여 부팅하는 경우 CONFIG_FB_EFI=y
좋은 생각입니다.
CONFIG_FB_VESA
레거시 이유로 인해 부팅 vga=
옵션은 초기 콘솔 디스플레이 해상도를 설정하는 데에도 사용되지만 이러한 모드는 vga=ask
; 바라보다Documentation/fb/vesafb.rst는 여기에 있습니다.또는 선택할 수 있는 모드 목록과 자세한 내용을 보려면 커널 소스 트리를 참조하세요.
UEFI(또는 기본적으로 다른 프레임 버퍼 콘솔 드라이버 CONFIG_FB_VESA
)를 사용하는 경우 부팅 매개변수를 사용하여 원하는 디스플레이 모드를 지정해야 합니다 video=
.Documentation/fb/modedb.rst
커널 소스 트리에서자세한 내용을 확인하세요.
간단히 말해서, 비디오 모드 선택 매개변수 CONFIG_FB_EFI
(실제로 VESA가 아닌 프레임 버퍼 콘솔과 유사)는 다음과 같습니다.
video=efifb:1280x1024@60
그러면 비디오 모드에 적합한 텍스트 해상도가 자동으로 선택됩니다.