Приветствую, уважаемые формучане и гости форума. Данный пост создан ввиду некоторых трудностей, с которыми я столкнулся при попытке установить Ubuntu 18.04 по состоянию на 28.03.18 на ноутбук Acer Spin 1 (ранее поднимал уже
эту тему, но грабли оказались интересными в моем понимании, - спешу поделиться тем, что заработало). Надеюсь, кому-то будет полезна данная информация.
Уважаемые модераторы, искренне прошу с пониманием отнестись, если я в чем-то не соответствую данной темой правилам форума. Однако на текущий момент времени информации по ноутбукам с сенсорными экранами не так много, и, мне кажется, данный пост может сэкономить кучу времени некоторым новым пользователям. Заранее искреннее спасибо за понимание
Если по-русски: процессор Intel Pentium N4200, объём ОЗУ 4 Гб, встроенной ПЗУ: 64Гб (при этом все, вплоть до ОЗУ и ПЗУ распаяно на материнке - ничего в нетбуке заменить НЕЛЬЗЯ). И это не реклама или антиреклама - это констатация факта. Считаю необходимым донести информацию до людей.
Выхлоп sudo lshw привожу во вложении, ибо много. Выхлоп lscpu прицеплю здесь, ибо еще терпимо.
Архитектура: x86_64
CPU op-mode(s): 32-bit, 64-bit
Порядок байт: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Потоков на ядро: 1
Ядер на сокет: 4
Сокетов: 1
NUMA node(s): 1
ID прроизводителя: GenuineIntel
Семейство ЦПУ: 6
Модель: 92
Имя модели: Intel(R) Pentium(R) CPU N4200 @ 1.10GHz
Степпинг: 9
CPU МГц: 1556.222
CPU max MHz: 2500,0000
CPU min MHz: 800,0000
BogoMIPS: 2188.80
Виртуализация: VT-x
L1d cache: 24K
L1i cache: 32K
L2 cache: 1024K
NUMA node0 CPU(s): 0-3
Флаги: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm 3dnowprefetch cpuid_fault cat_l2 pti tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust smep erms mpx rdt_a rdseed smap clflushopt intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts
Особенности установки Ubuntu на данном устройстве. К сути топика. Прежде всего, замечу, что установку вел в дуалбут. Ноутбук НЕ УМЕЕТ legacy. Есть только UEFI. Попал ко мне с установленной оффтоповой системой на весь внутренний диск (крайне малого объема), так что пришлось импровизировать.
Первым делом - под форточками следует выполнить удаление всей лишней требухи, дабы высвободить место. Второе - выполнить дефрагментацию. Желательно даже не стандартными средствами оффтоповой системы (еще желательней - с какой-нибудь live сборки, дабы не возникало траблов с неперемещаемыми системными файлами). Далее следует войти в меню UEFI settings (на данной модели - СОЧЕТАНИЕ клавиш Fn+F2 в начале загрузки, когда увидели логотип Acer; после чего ставим пароль на UEFI (и запоминаем его себе, чтоб понимать что вводить после), после чего на соответствующей вкладке станет доступным изменение параметра SecureBoot), где выключаем параметр SecureBoot, и выходим, сохранив настройки. После этого я вставил заранее подготовленную через
multibootUSB флешку, содержащую загрузочный образ
Ubuntu 18.04.
После отключения SecureBoot загрузка происходит штатно. В Live удается зайти. Однако здесь нас ждет одна из трудностей, которую предстоит решить далее - экран повернут вправо. Дело в том, что ноутбук снабжен акселерометром, и этот акселерометр не корректно откалиброван. Чтобы комфортно работать на данном этапе поворачиваем ноут (физически) на левый бок (при этом изображение будет выровнено так, будто ноут стоит на столе в нормальном положении), и, не поворачивая ноута, в меню пользователя (искать в правом верхнем углу для GNOME3) кликаем по кнопке с замочком (вторая слева), - так поворот будет заблокирован. Ставим ноут на стол, и изображение пока больше не крутится... Можно проверить функциональные клавиши, - все работают. А вот F1-12 пользоваться не удобно, т.к. только в сочетании с Fn они будут работать. Иными словами тот же переход в консоль (tty1) уже не Ctrl+Alt+F1 а Ctrl+Alt+Fn+F1 (такое ощущение, будто на пианино новую гамму разучиваешь...).
1. Установка. Места у нас не так много, - на отдельные home и прочее особо не разоришься. Так что будем импровизировать. Исходная разметка диска, как ее видит blkid:
/dev/mmcblk1: PTUUID="3aa7461f-e6be-48f2-a064-61b3fb1c73e0" PTTYPE="gpt"
/dev/mmcblk1p1: LABEL="ESP" UUID="1026-DB48" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="86f70c5b-8a21-4147-ac95-f909b69395e0"
/dev/mmcblk1p2: PARTLABEL="Microsoft reserved partition" PARTUUID="2a24fd22-d8fe-4905-81b8-1c847fe8803e"
/dev/mmcblk1p3: LABEL="Acer" UUID="B0622B51622B1C1A" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="5475443d-6ae7-4816-abdb-a834d193ae41"
/dev/mmcblk1p4: LABEL="Recovery" UUID="E6382C12382BDFF3" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="632708f5-9337-4a59-9e54-0badebf1de7c"
Имеем раздел рековери. Неплохо бы сохранить. Особенно с учетом того, что данный раздел в устройстве функционирует "лояльно" по отношению к внесению пользователем изменений в разметку диска, - размер тома, на котором установлена Windows при восстановлении ее к состоянию, зашитому в recovery, не меняется на исходный. Для начала неплохо выполнить резервирование имеющегося состояния разделов: подключаем внешний жесткий диск (или флешку хорошего такого объема, - у меня образы заняли в итоге ~12Гб, если в Windows что-то установлено - то будет больше!), и выполняем в терминале такие команды (в данном случае /media/Maxtor - точка монтирования моего внешнего жесткого диска, куда я все резервирую; все разделы на mmcblk1 у меня ОТМОНТИРОВАНЫ):
dd if=/dev/mmcblk1p1 | gzip - | dd of=/media/Maxtor/Image_mmcblk1p1.img.gz
dd if=/dev/mmcblk1p2 | gzip - | dd of=/media/Maxtor/Image_mmcblk1p2.img.gz
dd if=/dev/mmcblk1p3 | gzip - | dd of=/media/Maxtor/Image_mmcblk1p3.img.gz #делается ДОЛГО, но он нам нужен очень
dd if=/dev/mmcblk1p4 | gzip - | dd of=/media/Maxtor/Image_mmcblk1p4.img.gz
На этом этапе успокаиваемся, т.к. резервная копия у нас есть. Извлекаем внешний жесткий диск, и откладываем в сторону... Надеюсь, не понадобится. При необходимости соответствующий раздел можно будет восстановить по аналогии (следим за размером! Выхлоп
sudo fdisk -l лучше сохранить поблизости с образами):
dd if=/media/Maxtor/Image_mmcblk1p3.img.gz | gunzip - | dd of=/dev/mmcblk1p3
Далее я открыл gparted, и внес изменения в разметку диска, отрезав от mmcblk1p3 22 Гб. На этом пустом месте был создан раздел mmcblk1p5 размером 22 Гб; формат - ext4. Применив изменения, я перезагрузился в Windows и убедился в том, что она работает (если нет - тут надо в LIVE возвращать разделу mmcblk1p3 его исходное состояние, удалив mmcblk1p5 и накатив его [mmcblk1p3] прежнее состояние из образа). Если на данном этапе все в норме - идем дальше.
Загружаемся в live. Запускаем с рабочего стола значок установки системы. Ставим
как обычно. Можно сейчас качать обновления - можно не качать. При установке выбираем раздел mmcblk1p5 в качестве "/", раздел с Windows можно прописывать или не прописывать - на Ваше усмотрение. Раздел mmcblk1p1 указываем как хранилище загрузчиков EFI, а для установки GRUB указываем устройство mmcblk1 (не разделы, а само устройство). Запускаем установку. Через непродолжительное время она подойдет почти к концу (пропишет, что выполняется установка GRUB-2), и... зависнет (минут 10 до меня это доходило). Да. П
иечалька... Не отчаиваемся на этом этапе. Поскольку я не был уверен почему эта котовасия происходит, я выполнил завершение работы программы установки:
sudo killall ubiquity, и, желая проверить насколько все плохо, попробовал запустить инсталлятор без установки загрузчика (как выяснилось позже, он-то встал, но вот с Secure-Boot какая-то заморочка). Для этого я нашел ярлык программы установки на рабочем столе, и в свойствах этого ярлыка (где указаны параметры запускаемой им программы) добавил к имеющимся параметрам параметр "-b", после чего запустил программу установки с этого ярлыка, выставил все, как это делал в первый раз, раздел с mmcblk1p5 не форматировал. На сей раз установка прошла полностью, заминок не возникло. Понимая, что, походу, уже не все так просто, я выполнил
blkid, из выхлопа которого выписал себе на листок UUID диска mmcblk1p5, после чего перезагрузился. При загрузке вошел в UEFI Settings, увидел там пункт загрузки "неизвестное устройство", добавил его в список доверенных, обозвав GRUB (указал в качестве доверенного бинарника файл по адресу /EFI/ubuntu/grubx64.efi, для чего пришлось сперва вновь включить Secure-Boot), выставил его в приоритете раньше двух (внезапно) копий загрузчика windows. Выполнив все это - я покинул меню UEFI Settings и попытался загрузиться в свежеустановленную ubuntu. Меня встретил grub-rescue, приветливо мерцая квадратным курсором. Не особо горя желанием лезть в сеть в поисках ответа, я посмотрел строки, которые прописаны у меня на втором ноуте в grub.cfg, и, с поправками, списал себе "загружалку". Для этого в консоли GRUB-rescue последовательно были введены команды (версия ядра - на момент установки; к релизу поменяется; при вводе пользоваться автодополнением по TAB):
insmod part_gpt
insmod ext2
set root='hd0,gpt5' #(мой раздел с системой был пятым на первом диске: mmcblk1p5)
linux /boot/vmlinuz-4.15.0-12-generic.efi.signed root=UUID=32a2d3ad-c8e4-4808-8462-186e364730b7 ro #(UUID=многобукафф - это UUID раздела номер 5; его надо брать из вывода blkid в LIVE - способы его получения прямо в grub [если таковые имеются] мне не известны)
initrd /boot/initrd.img-4.15.0-12-generic
boot
После ввода последней команды система пошла загружаться. Естественно, с загрузчиком была какая-то байда, и я не был уверен как это решать.
Сперва выполнил в системе попытку (ладно: несколько попыток, в т.ч. и с применением Boot-Repair) установить grub2. Набор ошибок говорил о каком-то странном сбое все время в разном месте. После очередной безуспешно зависшей попытки установки загрузчика попробовал выполнить sudo update-grub, и все пробежало без ошибок. Образы нашлись, все в ажуре, загрузочный конфиг создался. Перезагрузился - увидел типичное меню Grub2, порадовался даже. Но далее решил заняться настройкой системы, и выполнить обновления. При обновлении прилетело новое ядро. Наличие нового ядра привело к переформированию grub'овского конфига (а похоже еще и отсылок к бинарникам EFI), и на каком-то этапе все снова встало колом. Для чистоты эксперимента я заново снес все, заново поставил систему, и получил те же грабли в том же месте. Прикинув, как будет пользователь мучаться с этой девайсиной, я поплевался, и решил прибегнуть к альтернативным загрузчикам.
В соответствии с заспойлеренными выводами, мне пришлось задуматься о смене загрузчика. Выбор пал на rEFInd. Установил его, скачав
deb-пакет. rEFInd встал без сбоев. В меню UEFIsettings вновь задействовал SecureBoot, ввел пароль на UEFI, и указал в качестве доверенного файл \EFI\refind\refind_x64.efi, перезагрузился, поменял приоритет загрузки таким образом, чтобы rEFInd загружался первым. Загрузка без сбоев - загрузчик появляется на экране сразу же, только грузить он пытается не Ubuntu а GRUB, а это не кошерно как-то... Для исправления этого несуразного поведения в установленной системе было принято решение начисто снести GRUB как таковой:
sudo apt purge grub-efi-amd64 grub-efi-amd64-signed grub-common grub-efi-amd64-bin grub-common grub2-common shim-signed mokutil os-prober secureboot-db shim
Далее установил
по рекомендации товарища
бамбук пакет-пустышку
grub-3.0. После этого дело вроде как пошло. После перезагрузки вход сразу в Ubuntu из загрузчика, - GRUB уже самовольно не стартует (да и нету его, строго говоря, в первозданном виде). Так пришлось заменить родной GRUB2 на rEFInd. Его, говорят, тоже конфигурировать можно, - так что ладно уж. Переживем.
мною было проверено обновление ядра при rEFInd, - без сучка и задоринки, все прошло гладко и без запинок
Необязательное (и опасное по сути своей) дополнение: меня раздражали дополнительные загрузочные бинарники, которые находил rEFInd, и самым быстрым способом заставить его их не находить мне показалось их удаление. Корректным был бы вариант через efibootmgr, но лень взяла свое (тем более, что образ раздела с ESP лежит в бэкапе на случай чего), и я прибегнул к вот такому хардкору:
sudo rm -R /boot/efi/EFI/BOOT #лежал тут еще один загрузичк Windows - мне как бы и одного хватит за глаза...
sudo rm /boot/efi/EFI/ubuntu/grubx64.efi
После этого запустил efibootmgr, удостоверился, что все вроде как надо. При перезагрузке сбоев не получил, вытер холодный пот и возрадовался.
Решение проблем с автоповоротом экрана. Далее настал черед поворота экрана Spin 1, который не работет (работает инверсно, не так, как задумано). После долгого гугления и мыканий было найдено решение на основании прописанного
здесь. Для решения необходимо и достаточно сделать следующее:
1. Устанавливаем необходимые пакеты:
sudo apt install iio-sensor-proxy inotify-tools
2. Создаем и заполняем конфигурационный файл:
sudo gedit /etc/udev/hwdb.d/61-sensor-local.hwdb
В открывшемся пустом окне вбиваем текст:
#########################################
# Acer Spin 1 SP111-32N
#########################################
sensor:modalias:acpi:BOSC0200*:dmi:*Acer*Spin*
ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 1
(шаблоны состряпаны после прочтения выхлопа
udevadm info --export-db и
sudo lshw, в которых искались этот самый сенсор [acpi] и определение самого ноутбука [dmi])
3. Применяем изменения:
sudo systemd-hwdb update
sudo udevadm trigger -v -p DEVNAME=/dev/iio\:device0
4. Перезагружаемся.
Теперь можно открыть залоченный ранее в меню пользователя GNOME3 (да, я не знаю как оно правильно называется - я это DE вижу третий раз в жизни) автоповорот, и, покрутив ноут, убедиться, что гироскоп нормально работает (и это хорошо, что подошла конфигурация от родственного [в смысле единовендорного] устройства, т.к. я попытался попереставлять параметры произвольным образом и началась совершенная чертовщина в поведении гироскопа, - как настроить, так и не разобрался; назовем это везением).
Что пока не победил:
1. Встроенный карт-ридер странным образом себя ведет. Карта памяти, если ее оставить в карт-ридере, и пререзагрузить ноутбук, не определяется системой. dmesg при этом завален ошибками вида (время специально прописал, - примерно понятно как часто они высыпаются и что их реально тьма):
...
[ 40.814790] mmc0: Skipping voltage switch
[ 40.851113] mmc0: Skipping voltage switch
...
Если в карт-ридере ничего нет, то при загрузке в dmesg чисто. И вставленная в уже загруженной системе карточка определяется нормально. На данный момент "ковыряю". Обновлю пост как пойму, с чем связано такое поведение.