Проект Chromium OS от корпорации Google по созданию операционной системы на базе ядра Linux, основное предназначение которой — работа с веб-приложениями. В основе лежит, конечно же, браузер Chromium. С момента открытия исходных кодов в 2009 году прошло уже достаточно много времени, но, в связи с тем что на завершенном недавно Pwn2Own никто так и не взломал Chromebook, я решил присмотреться к данному проекту.
В этой записи приводится пример сборки Chromium OS и установки ее на usb-накопитель (минимальная емкость — 4 Гб).
Запуск собранной Chromium OS проводилось на довольно не новом нетбуке Lenovo IdeaPad S10-2. На нем положительно, отсутствием тормозов, проявились нетребовательность к аппаратным ресурсам и минималистичный дизайн ОС.
Спойлеры
Предварительные требования
Сборка проводилась на компьютере под управлением Ubuntu Quantal Quetzal x86_64. Потребуются следующие пакеты:
rascal@bigpc:~$ sudo aptitude install git-core gitk git-gui subversion curl
Установка depot_tools
Chromium и Chromium OS используют комплекс скриптов, которые включают в себя gclient, gcl, git-cl, repo и т.д. Называется это — depot_tools.
rascal@bigpc:~$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
rascal@bigpc:~$ echo export "PATH=$PATH:`pwd`/depot_tools" >> ~/.bashrc
rascal@bigpc:~$ . ~/.bashrc
Для корректной работы depot_tools необходимо внести некоторые изменения в /etc/sudoers:
# Entering your password in one shell affects all shells
Defaults !tty_tickets
# Time between re-requesting your password, in minutes
Defaults timestamp_timeout=180
Получение исходников
Прежде чем загрузить исходные коды и начать сборку, необходимо создать рабочий каталог и обозначить его переменной окружения SOURCE_REPO:
rascal@bigpc:~$ mkdir chrome_repo
rascal@bigpc:~/chrome_repo$ cd chrome_repo
rascal@bigpc:~/chrome_repo$ echo "export SOURCE_REPO=`pwd`" >> ~/.bashrc
rascal@bigpc:~/chrome_repo$ . ~/.bashrc
Получаем исходные коды. Это займет довольно много времени и около 5 Гб дискового пространства.
rascal@bigpc:~/chrome_repo$ repo init -u https://git.chromium.org/chromiumos/manifest.git
rascal@bigpc:~/chrome_repo$ repo sync
Сборка
Сборка Chromium OS возможна для 3-х платформ:
- x86-generic
- amd64-generic
- arm-generic
В моем Lenovo IdeaPad S10-2 установлен 32-битный процессор Atom™ N270, поэтому сборка будет x86-generic.
rascal@bigpc:~/chrome_repo$ export BOARD=x86-generic
rascal@bigpc:~/chrome_repo$ cros_sdk -- ./build_packages --board=${BOARD}
rascal@bigpc:~/chrome_repo$ cros_sdk -- ./build_image --board=${BOARD}
Запись образа
Подключаем внешний usb-накопитель и смотрим на полученное имя устройства.
rascal@bigpc:~/chrome_repo$ dmesg
...
[249996.300444] scsi 16:0:0:0: Direct-Access Kingston DataTraveler G3 PMAP PQ: 0 ANSI: 0 CCS
[249996.301905] sd 16:0:0:0: Attached scsi generic sg1 type 0
[249997.142448] sd 16:0:0:0: [sdb] 7819264 512-byte logical blocks: (4.00 GB/3.72 GiB)
...
Записываем собранный образ Chromium OS на подключенный накопитель.
rascal@bigpc:~/chrome_repo$ cros_sdk -- ./image_to_usb.sh --board=${BOARD} --to /dev/sdb
No image name specified, autodetecting...
Found default image chromiumos_image.bin
Copying image /mnt/host/source/src/build/images/x86-generic/R27-3820.0.2013_03_10_2019-a1/chromiumos_image.bin to device /dev/sdb...
WARNING : this will erase all data on /dev/sdb: Kingston DataTraveler G3, 0xd13b89c2
Are you sure (y/N)? y
2.36GiB 0:07:45 [ 5.2MiB/s] [================================>] 100%
0+19360 записей получено
0+19360 записей отправлено
Done.
Прекомпилированные образы: http://cdn.rascal.su/uploads/chromiumos/ (~ 200 Мб)
Запись прекомпилированного образа:
rascal@bigpc:~/tmp$ 7za e -t7z -so chromiumos-R27-3900.0.2013_03_24_2105-a1-x86-generic.bin.7z | pv -w 80 -s 2420m | dd of=/dev/sdb bs=4M oflag=sync status=noxfer