После новости о выходе ARM-хромбука за $249 у некоторых возник вопрос: можно ли запустить на нём какой-нибудь стандартный дистрибутив Linux? Это логичный вопрос, ведь ChromeOS и так работает на ядре Linux.
Один из разработчиков Chromebook Олоф Йоханссон (Olof Johansson) сразу сказал, что это возможно. Сейчас он опубликовал подробную инструкцию, как запустить Ubuntu с SD-карты на «хромбуке».
На устройстве есть скрытый режим Developer Mode, который можно вызвать из Recovery Mode. Режим Recovery Mode вызывается нажатием кнопки Power, удерживая при этом Esc+Refresh. После этого можно войти в Dev-mode нажатием Ctrl+D и подтвердив выбор.
Олоф Йоханссон рассказал, как нужно отформатировать SD-карту с Ubuntu, чтобы система загрузилась на ARM-компьютере.
Сначала создаётся пустая таблица разделов:
# sudo parted /dev/sdd
(parted) mktable gpt
(parted) quit
Затем она вручную редактируется в соответствии со спецификациями Chrome OS, в синтаксисе gdisk это делается так:
sudo gdisk /dev/sdd
n
1
<enter>
+16M
7f00 (ChromeOS kernel)
n
2
<enter>
+16M
7f00
n
3
<enter>
<enter>
<enter>
Всего создаётся три раздела. Два раздела для ядра, чтобы легче было вернуться к исходному ядру, в случае чего. На третий ставится рутовая файловая система.
sudo mkfs.ext4 /dev/sdd3
mount /dev/sdd3
sudo mount /dev/sdd3 /mnt
cd /mnt
sudo tar xvpf /work/rootstock/armel.tar.gz
На SD-карту копируется содержимое /lib/modules
и /lib/firmware
, а затем ядро Linux с Chrome OS.
Переупаковка блоба:
cd /tmp
echo "console=tty1 debug verbose root=/dev/mmcblk1p3 rootwait rw" >
/tmp/config
vbutil_kernel --pack /tmp/newkern --keyblock /usr/share/vboot/devkeys/kernel.keyblock --version 1 --signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk --config=/tmp/config --vmlinuz /boot/vmlinuz-3.4.0 --arch arm
SD-карта вставляется в хромбук — и записывается ядро на два раздела.
dd if=/dev/newkern of=/dev/mmcblk1p1
dd if=/dev/newkern of=/dev/mmcblk1p2
После этого в Chromebook нужно разрешить загрузку с USB (команда crossystem dev_boot_usb=1
в Dev-mode), в этом режиме он загружается и с SD-карты.
Последний шаг — пометить разделы на SD-карте как загрузочные.
cgpt -i 1 -S 1 -T 5 -P 10 -l KERN-A /dev/mmcblk1
cgpt -i 2 -S 1 -T 5 -P 5 -l KERN-B /dev/mmcblk1