Описание процесса установки Gentoo Linux на планшет-трансформер Aser Aspire Switch 10. Часть 1 - создание загрузочного носителя.
Описание особенностей железа
Планшет-ноутбук Acer Aspire switch 10E с аппаратной точки зрения обладает рядом интересных особенностей:
- UEFI без CSM-режима, т.е. загрузка возможна только через UEFI-режим,
- UEFI 32х разрядный, хотя процессор поддерживает режим x64,
- Внутренний накопитель emmc, подключеный по SDIO (не традиционному sata) интерфейсу,
- WiFi адаптер Realtek 8723BS, подключеный так же через SDIO,
- Обмен между самим планшетом и док-станцией осуществляется, похоже, через USB3.0 - и уже в док-станции есть USB 2.0 хаб.
Всё это вместе приводит к тому, что для загрузки (и установки) Linux на этом железе нужен загрузочный носитель с 32х разрядным UEFI загрузчиком и относительно свежим ядром, собраным с опциями поддержки SDIO и USB 3.0.
Ближе всего к этим требованиям подошёл Ubuntu - с версией 15.x девайс загружается, есть даже работоспособный графический интерфейс, но не работают клавиатура и тачпад на док-станции.
Мне не удалось найти дистрибутив, который бы работал без серьёзных нареканий при загрузке с LiveUSB, и я решил создать свой.
Создание загрузочного носителя
Создавать свой собственный LiveUSB будем, опираясь на это руководство.
Так как объём оперативной памяти на этом планшете - всего 2 Гб, будем использовать 32х-разрядный дистрибутив. 64-х битная версия тоже может работать, обязательно 32х разрядным должен быть только efi-загрузчик.
Получаем дистрибутивы и подготавливаем среду:
Отсюда скачиваем последний архив stage3-i686,и отсюда скачиваем portage-latest. А ещё скачиваем исходники ядра версии 4.4.3 отсюда. (не из дерева gentoo потому, что на момент написания статьи в дереве были относительно старые ядра, которые корректно не работали на этом железе)
Так же устанавливаем необходимые пакеты:
emerge squashfs-tools
Теперь приступаем собственно к созданию livecd.
Создадим рабочую директорию:
mkdir ~/livecd
mkdir ~/livecd/source
Переносим исходные файлы в рабочую директорию и распаковываем их:
mv ~/Downloads/stage3-i686* ~/livecd/source
mv ~/Downloads/portage-latest.tar. ~/livecd/source
cd ~/livecd/source/
tar -xvjpf ./stage3-*.tar.bz2
tar -xvJpf ./portage-latest.tar.xz -C ./usr
Распаковываем исходники ядра:
mv ~/Downloads/linux-4.4.3.tar.xz ~/livecd/source/
mkdir -p ./usr
mkdir -p ./usr/src
tar xvJpf ./linux-4.4.3.tar.xz -C ./usr/src/
cd ./usr/src/
ln -s ./linux-4.4.3/ ./linux
cd ../../
Далее входим в созданный enviroment:
Сначала - немного приготовлений
cp /etc/resolv.conf ./etc/resolv.conf
mkdir proc dev sys
mount --bind /proc proc
mount --bind /dev dev
mount --bind /sys sys
(если на основной машине у вас 64х разрядная система, добавьте linux32 перед командой chroot):
chroot . /bin/bash --login
env-update && source /etc/profile
С этого момента мы в новом окружении, начинаем конфигурировать систему под загрузку на baytrail.
emerge --sync
Подправим make.conf и выставим USE:
USE="bindist -X -doc livecd minimal userlocales"
emerge -av --update --deep --newuse system
emerge -av --update --deep --newuse world
Дальше собираем ядро:
Помещаем вот этот .config в /usr/src/linux/ (не забудьте переименовать его в .config), после чего запускаем сборку ядра:
emerge bc
emerge genkernel
cd /usr/src/linux
ln -s ./linux-4.4.3/ ./linux
cd ./linux
make && make modules && make modules_install && make install
cp /boot/vmlinuz-4.4.3 /boot/vmlinuz
cp /boot/System.map-4.4.3 /boot/System.map
Так же нам потребуется создать initrd:
genkernel initramfs
После этого устнавливаем вспомогательный софт:
emerge memtest86+ localepurge gentoolkit dmraid livecd-tools app-misc/mc
emerge scripts
emerge mingetty
emerge wpa_supplicant
Правим fstab:
nano /etc/fstab
/dev/loop0 / squashfs defaults 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
Небольшая очистка
rm /usr/portage/distfiles/*
exit
Создаём squashfs:
cd ..
mkdir -p target
mksquashfs ./source/ ./target/image.sqfs
Почти готово! Осталось записать это на флешку так, чтобы она распознавалась UEFI устройства. Сделаем это:
Монтируем флешку:
mount /dev/sda1 /mnt/flash/
Монтируем скачанный iso образ:
mount -o loop,ro ~/Downloads/install-x86-minimal-20160412.iso /mnt/storage
Копируем содержимое iso образа на флешку:
cp -r /mnt/storage/* /mnt/flash/
Копируем Initrd
cp ~/livecd/source/boot/initramfs-genkernel-x86-4.4.3 /mnt/flash/initrd
Создаём папки для загрузчика и размещаем сам загрузчик:
mkdir -p /mnt/flash/efi/
mkdir -p /mnt/flash/efi/boot/
Теперь нам нужен сам загрузчик. Качаем его отсюда, распаковываем, и кладём файл загрузчика bootia32 на флешку в /efi/boot.
bootia32 нужен потому, что UEFI в этих устройствах - 32х разрядный, хотя процессор может работать в 64х разрядном режиме. Если вдруг душа просит экспериментов, теоретически можно запустить и 64х-разрядный дистрибутив, 32х разрядным должен быть только файл загрузчика.
После этого копируем из нашего chroot-окружения, в котором строили livecd, скомпилированное ядро:
cp ~/livecd/source/boot/vmlinuz /mnt/flash/
cp ~/livecd/source/boot/System.map /mnt/flash
Копируем squashfs
cp ~/livecd/target/image.sqfs /mnt/flash/
Осталось совсем немного - нужно создать файл конфигурации загрузчика в efi/boot/grub.cfg. Сначала создадим директорию под него:
mkdir -p /mnt/flash/boot
mkdir -p /mnt/flash/boot/grub
А затем создадим в ней файл в вот таким содержимым:
menuentry "Gentoo" {
set gfxpayload=keep
linux /vmlinuz real_root=/dev/loop0 looptype=squashfs loop=/image.sqfs vga=791 udev nodevfs cdroot dodmraid
}
Теперь загрузочная UEFI-флешка, способная грузится на железе Intel Baytrail, готова.
Процесс установки системы я опишу в следующей заметке. Пока же, в общих словах - порядок загрузки с этой флешки такой:
1) Убедится, что secure boot включен. (На моём Aspire switch 10 отключение secure boot вело к тому, что ничего, кроме предустановленной ОС, не грузилось ни под каким предлогом).
2) Вставляем в выключеный девайс флешку, включаем, жмём F2 для входа в UEFI, идём в Security->Select an UEFI as trusted for executing , добавляем флешку в разрешённые загрузчики (исключения).
3) Настраиваем порядок загрузки
4) Загружаемся! (возможно, при загрузке у вас появится сообщение типа Invalid loop location, в таком случае нужно набрать следующие команды
mount /dev/sda1 /mnt/cdrom
exit
После этого загрузка продолжится.
Описание особенностей железа
Планшет-ноутбук Acer Aspire switch 10E с аппаратной точки зрения обладает рядом интересных особенностей:
- UEFI без CSM-режима, т.е. загрузка возможна только через UEFI-режим,
- UEFI 32х разрядный, хотя процессор поддерживает режим x64,
- Внутренний накопитель emmc, подключеный по SDIO (не традиционному sata) интерфейсу,
- WiFi адаптер Realtek 8723BS, подключеный так же через SDIO,
- Обмен между самим планшетом и док-станцией осуществляется, похоже, через USB3.0 - и уже в док-станции есть USB 2.0 хаб.
Всё это вместе приводит к тому, что для загрузки (и установки) Linux на этом железе нужен загрузочный носитель с 32х разрядным UEFI загрузчиком и относительно свежим ядром, собраным с опциями поддержки SDIO и USB 3.0.
Ближе всего к этим требованиям подошёл Ubuntu - с версией 15.x девайс загружается, есть даже работоспособный графический интерфейс, но не работают клавиатура и тачпад на док-станции.
Мне не удалось найти дистрибутив, который бы работал без серьёзных нареканий при загрузке с LiveUSB, и я решил создать свой.
Создание загрузочного носителя
Создавать свой собственный LiveUSB будем, опираясь на это руководство.
Так как объём оперативной памяти на этом планшете - всего 2 Гб, будем использовать 32х-разрядный дистрибутив. 64-х битная версия тоже может работать, обязательно 32х разрядным должен быть только efi-загрузчик.
Получаем дистрибутивы и подготавливаем среду:
Отсюда скачиваем последний архив stage3-i686,и отсюда скачиваем portage-latest. А ещё скачиваем исходники ядра версии 4.4.3 отсюда. (не из дерева gentoo потому, что на момент написания статьи в дереве были относительно старые ядра, которые корректно не работали на этом железе)
Так же устанавливаем необходимые пакеты:
emerge squashfs-tools
Теперь приступаем собственно к созданию livecd.
Создадим рабочую директорию:
mkdir ~/livecd
mkdir ~/livecd/source
Переносим исходные файлы в рабочую директорию и распаковываем их:
mv ~/Downloads/stage3-i686* ~/livecd/source
mv ~/Downloads/portage-latest.tar. ~/livecd/source
cd ~/livecd/source/
tar -xvjpf ./stage3-*.tar.bz2
tar -xvJpf ./portage-latest.tar.xz -C ./usr
Распаковываем исходники ядра:
mv ~/Downloads/linux-4.4.3.tar.xz ~/livecd/source/
mkdir -p ./usr
mkdir -p ./usr/src
tar xvJpf ./linux-4.4.3.tar.xz -C ./usr/src/
cd ./usr/src/
ln -s ./linux-4.4.3/ ./linux
cd ../../
Далее входим в созданный enviroment:
Сначала - немного приготовлений
cp /etc/resolv.conf ./etc/resolv.conf
mkdir proc dev sys
mount --bind /proc proc
mount --bind /dev dev
mount --bind /sys sys
(если на основной машине у вас 64х разрядная система, добавьте linux32 перед командой chroot):
chroot . /bin/bash --login
env-update && source /etc/profile
С этого момента мы в новом окружении, начинаем конфигурировать систему под загрузку на baytrail.
emerge --sync
Подправим make.conf и выставим USE:
USE="bindist -X -doc livecd minimal userlocales"
emerge -av --update --deep --newuse system
emerge -av --update --deep --newuse world
Дальше собираем ядро:
Помещаем вот этот .config в /usr/src/linux/ (не забудьте переименовать его в .config), после чего запускаем сборку ядра:
emerge bc
emerge genkernel
cd /usr/src/linux
ln -s ./linux-4.4.3/ ./linux
cd ./linux
make && make modules && make modules_install && make install
cp /boot/vmlinuz-4.4.3 /boot/vmlinuz
cp /boot/System.map-4.4.3 /boot/System.map
Так же нам потребуется создать initrd:
genkernel initramfs
После этого устнавливаем вспомогательный софт:
emerge memtest86+ localepurge gentoolkit dmraid livecd-tools app-misc/mc
emerge scripts
emerge mingetty
emerge wpa_supplicant
Правим fstab:
nano /etc/fstab
/dev/loop0 / squashfs defaults 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
Небольшая очистка
rm /usr/portage/distfiles/*
exit
Создаём squashfs:
cd ..
mkdir -p target
mksquashfs ./source/ ./target/image.sqfs
Почти готово! Осталось записать это на флешку так, чтобы она распознавалась UEFI устройства. Сделаем это:
Монтируем флешку:
mount /dev/sda1 /mnt/flash/
Монтируем скачанный iso образ:
mount -o loop,ro ~/Downloads/install-x86-minimal-20160412.iso /mnt/storage
Копируем содержимое iso образа на флешку:
cp -r /mnt/storage/* /mnt/flash/
Копируем Initrd
cp ~/livecd/source/boot/initramfs-genkernel-x86-4.4.3 /mnt/flash/initrd
Создаём папки для загрузчика и размещаем сам загрузчик:
mkdir -p /mnt/flash/efi/
mkdir -p /mnt/flash/efi/boot/
Теперь нам нужен сам загрузчик. Качаем его отсюда, распаковываем, и кладём файл загрузчика bootia32 на флешку в /efi/boot.
bootia32 нужен потому, что UEFI в этих устройствах - 32х разрядный, хотя процессор может работать в 64х разрядном режиме. Если вдруг душа просит экспериментов, теоретически можно запустить и 64х-разрядный дистрибутив, 32х разрядным должен быть только файл загрузчика.
После этого копируем из нашего chroot-окружения, в котором строили livecd, скомпилированное ядро:
cp ~/livecd/source/boot/vmlinuz /mnt/flash/
cp ~/livecd/source/boot/System.map /mnt/flash
Копируем squashfs
cp ~/livecd/target/image.sqfs /mnt/flash/
Осталось совсем немного - нужно создать файл конфигурации загрузчика в efi/boot/grub.cfg. Сначала создадим директорию под него:
mkdir -p /mnt/flash/boot
mkdir -p /mnt/flash/boot/grub
А затем создадим в ней файл в вот таким содержимым:
menuentry "Gentoo" {
set gfxpayload=keep
linux /vmlinuz real_root=/dev/loop0 looptype=squashfs loop=/image.sqfs vga=791 udev nodevfs cdroot dodmraid
}
Теперь загрузочная UEFI-флешка, способная грузится на железе Intel Baytrail, готова.
Процесс установки системы я опишу в следующей заметке. Пока же, в общих словах - порядок загрузки с этой флешки такой:
1) Убедится, что secure boot включен. (На моём Aspire switch 10 отключение secure boot вело к тому, что ничего, кроме предустановленной ОС, не грузилось ни под каким предлогом).
2) Вставляем в выключеный девайс флешку, включаем, жмём F2 для входа в UEFI, идём в Security->Select an UEFI as trusted for executing , добавляем флешку в разрешённые загрузчики (исключения).
3) Настраиваем порядок загрузки
4) Загружаемся! (возможно, при загрузке у вас появится сообщение типа Invalid loop location, в таком случае нужно набрать следующие команды
mount /dev/sda1 /mnt/cdrom
exit
После этого загрузка продолжится.
ОтветитьУдалитьAcerium Project Ubuntu kernel and Live CD for Acer Aspire Switch 10 SW5-012 Z3537F
http://acerium.ru/