WSL2의 Ubuntu에서 Yocto(QEMU 사용) 시도

5537 단어 LinuxWSLYoctotech

개요


WSL2가 실행하는 Ubuntu에서 QEMU를 사용해 요코토를 시동을 걸었다.
WSL2를 제외하고는 기본적으로 Yocto의 빠른 시작을 실행하기 때문에 특별히 참고할 만한 정보가 없을 수도 있다.WSL2도 시도할 수 있다는 메시지를 전달했으면 좋겠다는 생각에 이 글을 썼다.
https://www.yoctoproject.org/docs/3.1.2/brief-yoctoprojectqs/brief-yoctoprojectqs.html
또한 MacBook의 BootCamp에서 더블 부팅된 Windows 10의 WSL에서 환경이 시도되었습니다.

WSL 소개


Windows Subsystem for Linux의 약어로, Windows 10에서 Linux를 실행하는 구조입니다.
WSL에는 버전 1과 버전 2(WSL2)가 있는데 WSL2는 Hyper-V를 이용하여 리눅스 핵의 완전한 시뮬레이션을 실현했다.Yocto 빌드를 실행하려면 WSL2가 필요합니다.
이 기사는 가져오기 방법을 생략했지만 다음 페이지와 Google 검색을 통해 간단하게 진행할 수 있다고 생각합니다.
https://docs.microsoft.com/ja-jp/windows/wsl/about

요cto란?


웹사이트의 Google 번역에 따르면 다음과 같습니다.
https://www.yoctoproject.org/docs/3.1.2/overview-manual/overview-manual.html#what-is-the-yocto-project
Yocto Project는 오픈 소스의 합작 프로젝트로 제품의 하드웨어 구조가 어떻든지 간에 개발자는 끼워넣는 제품 디자인을 위한 리눅스 기반 시스템을 만드는 데 도움이 된다.Yocto Project는 유연한 도구 모음과 개발 환경을 제공하여 전 세계의 끼워넣기식 장치 개발자들이 공유 기술, 소프트웨어 창고, 설정과 최선의 실천을 통해 이러한 개성화된 리눅스 이미지를 만들 수 있도록 한다.
Yocto를 사용하면 내장 장치 전용 Linux를 구축할 수 있습니다.
실제로 요cto로 구축된 커널을 가동하려면 타깃으로 끼워넣는 장치(Raspberry Pi 등도 가능)가 필요하고, QEMU 기기를 아날로그화한 소프트웨어를 사용하면 실제 기기가 없어도 커널을 가동해 볼 수 있다.

Yocto의 구축에서 QEMU의 실행에 이르기까지


Yocto를 구축하고 QEMU로 실행하기 전의 프로세스를 문서화합니다.

필요한 패키지 설치


$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
build-essential chrpath socat cpio python3 python3-pip python3-pexpect \
xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \
pylint3 xterm

클론 포키


$ git clone http://git.yoctoproject.org/git/poky
$ cd poky
$ git checkout tags/yocto-3.1.2 -b my-yocto-3.1.2
지점은 최신yocto-3.1.2를 선택했다.

환경 설정 스크립트 실행


$ source oe-init-build-env

구축 실행


$ bitbake core-image-minimal
core-image-minimal은 가장 작게 구성된 이미지입니다.다른 GUI가 존재하는 이미지도 있고, 코어-image-sato 등 기본값도 준비되어 있다.

위에서 설명한 대로 빌드가 실행되지만 처음 실행될 때 다음 WARNING이 나타날 수 있습니다.(위의 그림은 두 번째 실행이기 때문에 표시되지 않을 수 있습니다)
WARNING: You are running bitbake under WSLv2, this works properly but you should optimize your VHDX file eventually to avoid running out of storage space

Google翻訳:
WSLv2でビットベイクを実行しています。これは正しく機能しますが、ストレージスペースが不足しないように、最終的にVHDXファイルを最適化する必要があります。
요코토를 구축할 때 매우 큰 용량(30GB 정도)을 사용하고 WSL에 사용된 디스크 크기는 자동으로 조정되기 때문에 커진다.
WSL2는 한번 확보한 디스크를 호스트에 반납하지 않은 것으로 보이기 때문에 최적화가 필요하다.이 방법에 관해서는 뒤에서 서술할 것이다.
빌딩은 내 환경에서 3시간 정도 걸렸다.

QEMU 구축 이미지 실행


$ runqemu qemux86-64
위 작업을 수행한 후 다음 오류가 발생했습니다.
runqemu - ERROR - Failed to run qemu: Could not initialize SDL(x11 not available) - exiting
검색 조사를 해보면 다음과 같다.
https://stackoverflow.com/questions/56237078/yocto-failed-to-run-qemu-could-not-initialize-sdlx11-not-available
어쨌든 nographic를 더하면 된다고 합니다.
$ runqemu qemux86-64 nographic

순조롭게 시동이 걸렸다!
로그인은 루트가 없는 경로로 들어갈 수 있습니다.
또 QEMU를 끝내고 싶을 때는'shutdown-h now'등으로 끝내면 된다.

VHDX 파일 최적화 및 디스크 열기


우선 WSL2의 Ubuntu에서 아래 목록을 보면 매우 큰 사이즈가 된다.
$ du -sm poky/build
48899   poky/build
상술한 말은 50GB 정도다.(나도 GUI 버전을 만들어 보았는데 사이즈가 좀 크다.)
build 디렉터리에bitbake를 실행할 때 다운로드한 파일과 구축된 내장 이미지가 포함되어 있습니다.
빌딩이 끝나면 워크 파일을 자동으로 삭제하도록 설정할 수도 있다.
이build 디렉터리를 삭제합니다.
$ rm -rf build
호스트 OS(Windows 측)에서 VHDX 파일의 크기를 확인합니다.
VHDX 파일은 환경에 따라 다르지만 다음과 같이 구성됩니다.
C:\Users\[ユーザ名]\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState
사이즈는 아래와 같습니다.Ubuntu에서 파일을 삭제해도 디스크 크기가 열리지 않습니다.

디스크를 열기 위해 VHDX 파일을 최적화합니다.
우선 wsl을 닫기 위해서 PowerShell에서 다음을 시작합니다.
> wsl --shutdown
PowerShell에서 다음 명령을 실행합니다.
> Optimize-VHD -Path .\ext4.vhdx -Mode full
사이즈를 다시 확인하면 사이즈가 작아집니다.

또한 Optimize-VHD가 실행되지 않을 경우 다음 작업을 수행하여 Optimize-VHD를 유효하게 해야 합니다.
> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All

좋은 웹페이지 즐겨찾기