콘솔에서 KVM 게스트가 설치되었습니다. 그러나 손님의 콘솔에가는 방법?


28

커맨드 라인 만 (하이퍼 바이저와 게스트 모두)을 사용하여 KVM (RHEL 6)에 완전 가상화 게스트 (Fedora 14 x86_64)를 설치하려고합니다. 오류가없고 확실한 결과가 없습니다. 텍스트 전용 설치 방법을 알고 싶습니다.

그래서 여기 내가 한 일이 있습니다.

# virt-install \
--name=FE --ram=756 --vcpus=1 \
--file=/var/lib/libvirt/images/FE.img  --network bridge:br0 \
--nographics --os-type=linux  \
--extra-args='console=tty0' -v \
--cdrom=/media/usb/Fedora-14-x86_64-Live-Desktop.iso 


Starting install...
Creating domain...                                                                                                                                                        |    0 B     00:00     
Connected to domain FE
Escape character is ^]
ÿ

이제 뭐? 며칠 동안 인터넷 검색을 한 후 텍스트 설치에서 손님의 결과를 볼 수 있지만 아무 일도 일어나지 않습니다. virt-viewer는 연결할 수 없으며 --help (내가 한)를 추가하여 모든 옵션을 탐색 할 것을 제안합니다. virsh와 다시 연결하면 다음을 볼 수 있습니다.

Domain installation still in progress. You can reconnect to 
the console to complete the installation process.
[root@v ~]
# virsh console FEConnected to domain FE
Escape character is ^]

이것은 VM이 실행 중임을 나타냅니다.

# virsh list
 Id Name                 State
----------------------------------
  8 FE                   running

Qemu 로그 :

LC_ALL=C PATH=/sbin:/usr/sbin:/bin:/usr/bin /usr/libexec/qemu-kvm -S -M rhel6.0.0 -enable-kvm -m 756 -smp 1,sockets=1,cores=1,threads=1 -name FE -uuid 6989d008-7c89-424c-d2d3-f41235c57a18 -nographic -nodefconfig -nodefaults -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/FE.monitor,server,nowait -mon chardev=monitor,mode=control -rtc base=utc -no-reboot -boot d -drive file=/var/lib/libvirt/images/FE.img,if=none,id=drive-ide0-0-0,format=raw,cache=none -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -drive file=/media/usb/Fedora-14-x86_64-Live-Desktop.iso,if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,fd=20,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:0a:65:8d,bus=pci.0,addr=0x2 -chardev pty,id=serial0 -device isa-serial,chardev=serial0 -usb -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 
char device redirected to /dev/pts/1

/etc/libvirt/qemu/FE.xml의 출력

# cat /etc/libvirt/qemu/FE.xml 
<domain type='kvm'>
  <name>FE</name>
  <uuid>6989d008-7c89-424c-d2d3-f41235c57a18</uuid>
  <memory>774144</memory>
  <currentMemory>774144</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='rhel6.0.0'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/var/lib/libvirt/images/FE.img'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>
    <disk type='block' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:0a:65:8d'/>
      <source bridge='br0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target port='0'/>
    </console>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </memballoon>
  </devices>
</domain>

나는 많은 다른 사람들이하지 않은 것을 분명히 놓치고 있지만 무엇입니까? 미리 감사드립니다!


3
--extra-args 스위치를 어떻게 --cdrom과 함께 사용할 수 있었습니까? virt-install 맨 페이지에 따르면 --extra-args는 --location에서만 작동합니까?
slm

4
나는 제거 --network bridge:br0, 변경 cdromlocation, 그리고 extra-args--extra-args='console=tty0 console=ttyS0,115200n8 serial'그것은 일했다!

2
나는 cdrom을 위치로 바꾸고 "extra-args"를 추가했다. --network 옵션을 제거 할 필요가 없습니다.
twan163

1
어떤 이유로 든 --cdrom여분의 인수로는 작동하지 않지만 --location(또는 -l)에서는 작동하지 않습니다. 같은 길과 모든 것.
Rick Chatham

답변:


9

--extra-args='console=ttyS0'지난 번에 인터넷 어딘가에 복사 했는데 작동합니다!

  • 두 개의 "콘솔"명령이 필요 없으며 하나의 콘솔 대신 두 개의 콘솔 만 열림
  • 전송 속도를 수동으로 지정할 필요가 없습니다.
  • "-직렬"옵션은 더 이상 사용되지 않습니다
  • RedHat 콘솔 장치는 "/ dev / tty0"이 아닌 "/ dev / ttyS0"입니다.

참조 : http://anaconda-installer.readthedocs.io/en/latest/boot-options.html


7

--nographicstty0 콘솔 외에 게스트에 콘솔을 설정하지 않았습니다. 그래픽 콘솔, 특히 원격에서 사용하려면 vga 및 vnc 또는 qxl 및 spice를 활성화해야합니다. 이것은 예입니다 : http://www.linux-kvm.com/content/tip-how-run-headless-guest-machine-using-vnc-kvm

http://www.linux-kvm.com/content/running-kvm-nographics-no-console-output 또는 http://ubuntuforums.org/showpost.php?p=9610421&postcount=7 도 해결책입니다.


답변 주셔서 감사합니다, dyasny. 요점 고르기 : 1. 아니요, 그래픽 콘솔을 원하지 않습니다 (내 게시물 참조) 2. 예,이 솔루션과 유사한 솔루션을 시도했습니다. 그것은 나를 위해 작동하지 않았다.
badbishop

linux-kvm.org 또는 libvirt 메일 링리스트에서 질문하려고합니다
dyasny

6

CentOS의 텍스트 전용 설치를 수행 할 때 비슷한 문제가 발생했습니다. 직렬 출력 콘솔을 지정하기 위해 커널 인수를 추가하는 것으로 요약하여 또는 console=ttyS0사용시 콘솔에 연결할 수 있습니다 . 에서 수동이야 '--graphics none--nographicsvirt-install

-그래픽 없음

게스트에 그래픽 콘솔이 할당되지 않습니다. 완전 가상화 게스트 (Xen FV 또는 QEmu / KVM)는 게스트의 첫 번째 직렬 포트에 텍스트 콘솔을 구성해야합니다 (이 작업은 --extra-args 옵션을 통해 수행 할 수 있음). Xen PV가이를 자동으로 설정합니다. 'virsh console NAME'명령을 사용하여 직렬 장치에 연결할 수 있습니다.

두 가지 방법으로 문제를 해결했습니다.

  1. iso 이미지를 수정하고 --cdrom옵션을 사용하여
  2. iso 이미지를 NFS 공유로 노출하고 --location옵션을 사용하여--extra-args

1. 이미지 수정

iso 설치 디스크에서 커널 매개 변수를 수정하려면 다음을 수행하십시오.

  1. 이미지 조작 (예 : isomaster) 을 허용하는 프로그램을 확보하십시오 .
  2. isolinux/isolinux.cfg이미지 의 파일로 이동하여 열고 첫 번째 줄을 찾은 다음 언급 된 매개 변수가있는 다른 모든 줄을 initrd=추가하십시오 console=ttyS0.
  3. 파일과 이미지를 저장하십시오.
  4. virt-install평소 와 같이 수정 된 이미지를 사용하십시오. 예 :

    $ sudo virt-install --name centos-vm --ram 1024 --disk path=/home/user/domains/centos-vm --cdrom /home/user/images/centos-modified.iso --os-type linux --nographics --accelerate
    

끝난.

2. NFS 공유 사용

  1. 이미지를 마운트하십시오.

    $ sudo mount -o loop,unhide -t iso9660 -r /home/user/images/CentOS.iso /home/user/mnt/cdrom
    
  2. 실행 중이 아닌 경우 NFS 서비스를 시작하십시오. service nfs start

  3. /etc/exports클라이언트가 사용할 수 있도록 다음 행을 추가하십시오 .

    /home/user/mnt/cdrom    *(ro,insecure,all_squash)
    
  4. 다음을 사용하여 시스템 내보내기 테이블을 새로 고치십시오.

    $ exportfs -r
    
  5. 예를 들어 다음 virt-install을 포함 하도록 공유를 사용하십시오 --extra-args.

    $ sudo virt-install --name centos-vm --ram 1024 --disk path=/home/user/domains/centos-vm --location /home/user/mnt/cdrom --os-type linux --nographics --accelerate --extra-args="console=ttyS0"
    
  6. CentOS를 설치하는 동안 설치 파일의 위치를 ​​묻는 프롬프트가 나타납니다. 컴퓨터의 주소와 공유의 전체 경로를 입력해야합니다.

끝난.


iso 파일을 마운트하는 두 번째 방법을 시도했지만이 오류가 발생했습니다. 설치 시작 중 ... 파일 .treeinfo 검색 중 ... | 552 B 00:00:00 오류 'images-x86_64'섹션에 'kernel'옵션이 없습니다. iso 파일을 / mnt에 마운트하고 virt-install에서 --location / mnt를 사용하십시오
public_name

@public_name iso를 마운트하지 말고 다음 --location과 같이 iso의 경로를 지정하십시오 --location /tmp/centos6.iso.
Rick Chatham

Ubuntu 16에서 작업하여 isolinux / isolinux.cfg 대신 isolinux / txt.cfg를 편집했습니다.
John McGehee

2

텍스트 모드에서 Fedora 설치 관리자를 실행해야합니다. 여분의 인수에 '텍스트'를 추가하십시오. 또는 "vnc"를 추가하여 시작한 후에 VNC를 통해 설치 프로그램에 연결할 수 있습니다.


1
최신 libvirt의 경우 -x 및 --cdrom을 사용할 수 없습니다. 네트워크의 어딘가에 cdrom을 마운트하고 --location somewhere.com/mounted-iso --graphics none --extra-args "console = ttyS0,115200 텍스트 헤드리스"를 사용하십시오
katriel

1

나는 cobbler와 koan을 사용하여 잠시 동안 설치를 해왔다. cobbler 내에서 Centos60-x86_64 프로파일에서 커널 옵션을 설정했습니다.

Kernel Options: serial console=ttyS0,115200
Kernel Options (Post Install): console=ttyS0,115200

부팅 후 console = tty0 console = ttS0,115200을 사용하여 두 장치에 콘솔을 표시 할 수 있습니다. 설치에는 작동하지 않습니다. / etc / grub에서 grub 옵션을 편집하고 grub.conf를 재생성하면 직렬 콘솔 설정은 커널 업그레이드 후에도 유지됩니다. 설치 프로그램이 GUI를 시작하지 못하도록 커널 명령 행에 "text"를 추가하십시오.

KVM 게스트 인스턴스가 시작되면 KVM 호스트에 로그인 한 상태에서 다음과 같이 게스트의 콘솔에 연결합니다.

[root@vmhost ~]# virsh console guestvm

그런 다음 내 껍질에서 이것을 봅니다.

Connected to domain guestvm
Escape character is ^]

CentOS Linux release 6.0 (Final)
Kernel 2.6.32-71.el6.x86_64 on an x86_64

guestvm login: 

마지막으로 koan에게 KVM 게스트 중 하나를 만들기 시작하면 --nogfx 스위치를 사용하여 호출합니다.

koan --server 192.168.1.1 --virt --nogfx --system=guestvm

1

콘솔이 잘못 구성된 것 같습니다.

아마도 이것이나 비슷한 것을 시도하십시오 :

먼저 grub 설정에 콘솔 라인을 추가합니다 (예 : 아치 게스트) : kernel / vmlinuz26 root = / dev / vda2 ro console = ttyS0,115200 그런 다음 / etc / inittab을 편집하여 ttyS0 (같은 아치 게스트)을 활성화합니다 : co : 23 : respawn : / sbin / agetty -8 115200 ttyS0 리눅스. / etc / securetty에 ttyS0이 있는지 확인하십시오.

더 많은 정보는 여기에 있습니다 :` http ://www.linux-kvm.com/content/running-kvm-nographics-no-console-output

--편집하다--

console=ttyS0,115200다른 가능한 콘솔 매개 변수를 시도 하고 확인할 수 있습니다.


BTW --extra-args=는 다른 콘솔 설정도 직접 수행합니다.
Jonathan Ross

인용 한 텍스트에 따르면 guest에서 / etc / inittab을 수정해야합니다. 전체 문제는 게스트와 어떻게 상호 작용합니까? 죄송합니다.받지 못했습니다.
badbishop

죄송합니다 편집을 참조하십시오, 나는 명확하지 않았다.
Jonathan Ross

예, 질문을 게시하기 전에 --extra-args = 'console = ttyS0'을 시도했습니다.
badbishop

죄송합니다 console=ttyS0,115200. 시도 할 수있는 다른 매개 변수가 있습니다. 아직도 설명이 잘못 구성된 콘솔이 있다고 생각합니다.
Jonathan Ross
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.