M1Mac에서 Multipass 비망록 사용

기본 Multipass 사용 방법에 대해 설명했습니다.
  • M1Mac에서 Multipass를 사용하는 방법
  • Multipass에서 GUI(Ubuntu Desktop)를 사용하는 방법
  • 사용하는 과정에서 나는 많은 것을 알아차려서 적어 두었다.

    기계는 배우자마자 떨어진다


    머신러닝 라이브러리를 사용하면 중간에'Killed'가 표시됩니다.그것은 가상 컴퓨터의 메모리가 부족하기 때문이다.
    launch 명령을 사용하여 그림을 만들 때 지정한 CPU 수의 '-cpus', 지정한 메모리의' -mem ', 디스크 크기의' -disk '인자를 추가합니다.
    % multipass launch \
        --name 名前 \
        --cpus 8 \
        --mem 14G \
        --disk 50G
    
  • 참조: 공식 설명서 >launch 명령
  • 주요 인스턴스 변경


    Multippass에서 특정 실례를 시작하려면 multipass shell (名前)로 기술해야 하지만 입력multipass shell만 하면 시작할 수 있는 기본 실례의 기능이 있다.
    이 초기 인스턴스를 변경하려면 다음 명령을 실행합니다.
    % multipass set client.primary-name=(インスタンス名)
    
  • 참조: 공식 브로셔 > 초기 인스턴스
  • 마음대로 하면 디스크가 부족해...


    그나저나 기본적으로 VM을 사용하면 중간에 부족할 수 있습니다.나도 그래.
    M1Mac은 다음 버전의 환경입니다. 설치 주소를 많이 찾았습니다.
    # multipassのバージョン
    % multipass version
    multipass   1.8.1+mac
    multipassd  1.8.1+mac
    
    # multupassのドライバ
    % sudo multipass get local.driver
    qemu
    
    VM 이미지에 대한 자세한 내용은 다음 JSON에 기록됩니다.
    % sudo vim /var/root/Library/Application\ Support/multipassd/qemu/multipassd-vm-instances.json
    
    CPU와 메모리의 분배를 바꾸려면 상술한 내용을 변경할 수 있지만 안타깝게도 디스크 공간에 관해서는 JSON만 바꾸면 안 된다.
    우선, 드라이버는qenu입니다.qemu를 설치하는 도구입니다.
    % brew install qemu
    
    그런 다음 qemu-img resize를 사용하여 이미지 크기를 변경할 수 있습니다.다음은 이미지를 50G로 변경합니다.이미지 자체가 위의 JSON 파일의 file=XXX입니다.이렇게 써있어요.
    % sudo qemu-img resize xxx.img 50G
    

    multippass 설정이나 그림이 있는지 여부


    디스크 이미지와 같은 자세한 내용은 자세한 건 이쪽을 보세요.에 기록되어 있습니다.
    % sudo tree /var/root/Library/Application\ Support/multipassd
    /var/root/Library/Application\ Support/multipassd
    ├── certificates
    │   ├── localhost.pem
    │   └── localhost_key.pem
    ├── multipass-unique-id
    ├── multipassd-send-metrics.yaml
    ├── qemu
    │   ├── multipassd-vm-instances.json
    │   └── vault
    │       ├── instances
    │       │   └── primary
    │       │       ├── cloud-init-config.iso
    │       │       └── ubuntu-20.04-server-cloudimg-arm64.img
    │       └── multipassd-instance-image-records.json
    ├── registered-certs
    ├── saved_metrics.json
    └── ssh-keys
        └── id_rsa
    

    로그인할 수 없는 문제


    일시적으로 사용하면 multipass shell 로그인할 수 없는 상태가 됩니다...이번에 드러난 오류는 다음과 같다.
    % multipass shell
    shell failed: ssh failed to authenticate: 'Access denied for 'publickey'. Authentication that can continue: publickey,password'
    
    지난번 설정에서 Ubuntu Desktop을 설정했기 때문에 Desktop 측에서 로그인함으로써 SSH의 비밀번호 인증을 유효하게 하고 SSH에서도 VM에 연결할 수 있다.
    SSH를 설정할 때 멀티패스의 기본 SSH 키를 실수로 덮어썼기 때문일 수 있습니다.어쨌든, Ubuntu Desktop을 설정하면 비밀번호로 로그인할 수 있고, 편집/etc/ssh/sshd_config, 미리 설정PasswordAuthentication yes하면 안심할 수 있다.
    여기 아이수스.를 보면 VM을 만들 때 자신의 SSH 키를 미리 추가한다고 적혀 있어 편리하다.
    $ multipass launch --cloud-init - <<EOF   
    ssh_authorized_keys:
      - $(cat ~/.ssh/id_rsa.pub)
    EOF
    
    그래서 아래의 느낌으로 VM을 만들어 봤는데 괜찮은 것 같아요.ssh [email protected]처럼 타이핑하여 SSH로 로그인할 수 있습니다.
    % multipass launch \
        --name ubuntu \
        --cpus 8 \
        --mem 14G \
        --disk 30G \
        --cloud-init - <<EOF
    ssh_authorized_keys:
      - $(cat ~/.ssh/id_rsa.pub)
    EOF
    

    Ubuntu 내에서 reboot 하면 이상해요.


    위에서 설명한 바와 같이 multipass 1.8.1+mac 환경이지만 multipass shell 로그인 후 부주의sudo reboot Ubuntu를 다시 시작하면 VM과 원활하게 연결할 수 없습니다.
    일단 연결이 되지 않으면 SSH를 해도 아무것도 움직이지 않아 곤란하다.그래서 여러 가지를 확인해 봤는데 Mutipass의 과정이 왜 잘 안 풀리는 것 같았어요.따라서 Mac를 다시 시작하는 것 자체가 고칠 수 있습니다.

    파괴를 반복하는 것이 올바른 사용법이다


    또한 위에서 설명한 VM 제작 시 multipass launch --cloud-init처럼 --cloud-init 옵션이 추가되었습니다.멀티패스의 편리함이다. 평소 사용하던 설정은 YAML 파일에 모두 적고 작업을 시작할 때 launch로 환경을 만들면 편리하다.
    OS의 환경 구축은 항상 상당히 번거롭기 때문에 서류에 모두 정리하면 매우 편리하다.위에서 설명한 바와 같이 VM이 고장난 경우에도 즉시 작업 환경을 복구할 수 있어 매우 편리합니다.
    #cloud-config
    repo_update: true
    repo_upgrade: all
    
    # インストールするパッケージ一覧
    packages:
      - nodejs
      - npm
      - git
    
    # 最初に実行するコマンド一式
    runcmd:
      - cd /home/ubuntu && git clone ...
    
    # 公開鍵をコピペしておく
    ssh_authorized_keys:
      - ここにSSHの公開鍵
    
    위와 같이 "init.yaml"이라는 이름으로 저장하고 다음 명령으로 VM을 만듭니다.
    $ multipass launch --name test --cloud-init init.yaml
    
  • (참조)매뉴얼>샘플 파일
  • (참조)Multipass로 Ubuntu 서버를 쉽게 제작하거나 파괴
  • 좋은 웹페이지 즐겨찾기