Печать
Категория: Пингвиноводство
Просмотров: 8482

Планшет  Irbis TW39 (baytrail) в принципе для своей цены неплох, особенно после обновления его windows10 до актуальной версии  (хотя дискового пространства там осталось - кот наплакал).

После такого обновления, однако, захотелось забэкапить образ диска, дабы восстановить в случае сбоя. Я уверен, что есть и другие, родные для windows способы создания образа, однако хотелось всё же использовать более привычный функционал.

Помешало этому несколько причин.

Первая - EFI. С одной стороны, этот чёрт не так страшен, как его малюют, тем не менее некоторые сложности есть. В частности, ubuntu (по крайней мере, в LiveCD) не содержит 32-битный загрузчик, который (bootia32.efi) и требуется в нашем случае.

Вторая - видео. По неизвестной пока причине, отваливается видео после загрузки фреймбуффера (inteldrmfb). Почему - ктулху его знает. Помогает отключение KMS при загрузке (nomodeset). К сожалению, это же приводит к недоступности драйвера intel в X, так что ускорения не будет. Использоваться будет efifb со всеми вытекающими.
Также по умолчанию получается противоестественное разрешение (800x600), установить правильное разрешение (800x1280) можно в конфиге grub в переменной gfxmode и gfxpayload со значением 800x1280x32 . Да, родное положение экрана планшета - портретное.

Иногда также возникают проблемы с часами. Помогает clocksource=tsc

Другими словами, команды для ручной загрузки GRUB такие:

set gfxpayload=800x1280x32
set root=(hd0,gpt1)
linux /vmlinuz root=/dev/sda1 nomodeset clocksource=tsc fbcon=rotate:1 rw
initrd /initrd.img
boot

Параметры (hd0,gpt1) и /dev/sda1 могут быть другими в зависимости от разметки флешки и/или ссд диска планшета

Не работает также звук, тачскрин и wi-fi, однако ими я не занимался, так как для бэкапа диска это просто не требуется.

 

В качестве livecd (но можно установить просто на флешку, что я и сделал) использован livecd Ubuntu 16.04 (MATE. Обычный, скорее всего, не заведётся из-за отсутствия 3D-ускорения). Хотя можно добиться работы и штатного iso-образа, за"dd"шенного на флешку, гораздо лучше воспользоваться созданием такой флешки при помощи unetbootin. Таким образом можно избежать нехватки места на EFI разделе. Я не буду описывать процедуру создания такой загрузочной флешки - это несложно найти в интернете. Отмечу лишь, что необходимо использовать именно 64-битный дистрибутив, а не i386.

Можно также создать вручную нужные разделы и при помощи debian-bootstrap самостоятельно установить нужный дистрибутив (наигравшись с livecd, я в конце концов так и сделал).

После создания загрузочной флешки потребуется разместить в каталоге /boot/efi 32-битный загрузчик.  Его (bootia32.efi) можно найти в интернете, но можно и собрать вручную.

Вручную можно собрать так:

$ git clone git://git.savannah.gnu.org/grub.git
$ cd grub
$ ./autogen.sh
$ export EFI_ARCH=i386
$ ./configure --with-platform=efi --target=${EFI_ARCH} --program-prefix=""
$ make
$ cd grub-core
$ ../grub-mkimage -d . -o bootia32.efi -O i386-efi -p /boot/grub ntfs hfs appleldr boot cat efi_gop efi_uga elf fat hfsplus iso9660 linux keylayouts memdisk minicmd part_apple ext2 extcmd xfs xnu part_bsd part_gpt search search_fs_file chain btrfs loadbios loadenv lvm minix minix2 reiserfs memrw mmap msdospart scsi loopback normal configfile gzio all_video efi_gop efi_uga  gfxterm gettext echo boot chain eval

Если использовался livecd, то стоит заглянуть в файл grub.cfg и добавить первой строкой set gfxmode=800x1280x32 , а в строке linux (перед символами ---) опцию nomodeset