Доступный в исходных текстах ChromiumOS главным образом отличается отсутствием элементов брендинга ChromeOS и компонентов DRM для просмотра защищённого контента.Для сборки вначале нужно клонировать репозиторий с инструментарием:
git clone https://chromium.googlesource.com/chromium/tools/depot_tools...
export PATH=$PATH:$PWD/depot_tools
После чего можно приступить к загрузке и сборки исходных текстов ChromiumOS (сборку осуществляем для целевой платформы amd64-generic, при низкой скорости сети или недосаточном свободном дисковом пространстве в "repo init" также можно указать опцию "-g minilayout" для загрузки минимально необходимого набора кода):
mkdir chromiumos
cd chromiumos
repo init -u https://chromium.googlesource.com/chromiumos/manifest.git --repo-url https://chromium.googlesource.com/external/repo.git -g minilayout
repo sync -j75
cros_sdk
export BOARD=amd64-generic
./setup_board --board=${BOARD}
./build_packages --board=${BOARD}
./build_image --board=${BOARD} --boot_args "earlyprintk=serial,keep console=tty0" --noenable_rootfs_verification test
./image_to_vm.sh --board=${BOARD} --test_image
Для запуска окружения ChromiumOS можно воспользоваться командной cros_start_vm:
cros_sdk
./bin/cros_start_vm --image_path=../build/images/${BOARD}/latest/chromiumos_qemu_image.bin --board=${BOARD}
но при использовании cros_start_vm наблюдаются мешающие полноценной работе ограничения, такие как невозможность перенаправить графический вывод через VNC. Поэтому будем запускать ChromiumOS при помощи QEMU и виртуального GPU Virglrenderer.
Установим сборочные зависимости (список для Ubuntu 17.10):
sudo apt install autoconf libaio-dev libbluetooth-dev libbrlapi-dev \
libbz2-dev libcap-dev libcap-ng-dev libcurl4-gnutls-dev libepoxy-dev \
libfdt-dev \
libgbm-dev libgles2-mesa-dev libglib2.0-dev libgtk-3-dev libibverbs-dev \
libjpeg8-dev liblzo2-dev libncurses5-dev libnuma-dev librbd-dev librdmacm-dev \
libsasl2-dev libsdl1.2-dev libsdl2-dev libseccomp-dev libsnappy-dev l\
ibssh2-1-dev libspice-server-dev libspice-server1 libtool libusb-1.0-0 \
libusb-1.0-0-dev libvde-dev libvdeplug-dev libvte-dev libxen-dev valgrind \
xfslibs-dev xutils-dev zlib1g-dev libusbredirhost-dev usbredirserver
Соберём Virglrenderer, который позволяет задействовать виртуальный GPU и использовать из гостевой системы графические возможности хост-системы, в том числе аппаратное ускорение для OpenGL. Virglrenderer является не обязательным, если не нужно ускорение вывода графики можно обойтись без сборки Virglrenderer и убрать из строки запуска QEMU "virgl".
git clone git://git.freedesktop.org/git/virglrenderer
cd virglrenderer
./autogen.sh
make -j7
sudo make install
Собираем QEMU для целевой платформы x86_64:
git clone git://git.qemu-project.org/qemu.git
mkdir -p qemu/build
cd qemu/build
../configure --target-list=x86_64-softmmu --enable-gtk --with-gtkabi=3.0 \
--enable-kvm --enable-spice --enable-usb-redir --enable-libusb --enable-virglrenderer --enable-opengl
make -j7
sudo make install
Запускаем ChromiumOS в QEMU с использованием драйверов virtio (Linux-ядро хост-системы должно быть собрано с опциями CONFIG_DRM_VIRTIO, CONFIG_VIRT_DRIVERS и CONFIG_VIRTIO_XXXX):
cd chromiumos
/usr/local/bin/qemu-system-x86_64 \
-enable-kvm \
-m 2G \
-smp 4 \
-hda src/build/images/amd64-generic/latest/chromiumos_qemu_image.bin \
-vga virtio \
-net nic,model=virtio \
-net user,hostfwd=tcp:127.0.0.1:9222-:22 \
-usb -usbdevice keyboard \
-usbdevice mouse \
-device virtio-gpu-pci,virgl \
-display gtk,gl=on
URL: https://www.collabora.com/news-and-blog/blog/2017/12/01/buil.../
Обсуждается: http://www.opennet.dev/tips/info/3040.shtml