Toshiba ac100 117 linux

GNU/Linux на Toshiba AC100

Toshiba AC100 — «smartbook» на процессоре Nvidia Tegra 250 архитектуры ARM. Он мне понравился тем, что весит около килограмма, экран 11 дюймов по диагонали, работает от батареи около 8 часов и стоит мало (самая дешёвая модель AC100-117 всего 5550 рублей в интернет-магазине).
Кроме плюсов есть и минусы, основной — ОС Android, предустановленная на этом ноуте, совсем не рассчитана на работу с клавиатурой, тачпадом и мышью. В результатет мне в ней очень-очень неудобно, например, работать с сервером по сети (SSH, VNC, RDP). Даже «тривиальный» доступ к файлам по сети (SMB, NFS) возможен только посредством копирования файлов между сервером и андроидом.
Несмотря на то, что Nvidia в марте 2010 года сообщила о поддержке процесора Terga дистрибутивом Ubunty GNU/Linux, ни на сайте Toshiba, ни на сайте Nvidia этой версии не было. Более того, утилиты для установки GNU/Linux на платформу Tegra, ссылки на которые есть на сайте Nvidia, недоступны для загрузки.
Зато в интернете есть и готовые решения, инструкции и обсуждения установки и работы разных дистрибутивов GNU/Linux на моём ноутбуке.

К сожалению, нигде нет чёткой инструкции, в каждом тексте тщательно «зарыты грабли» и приходится искать информацию в обсуждениях. Поэтому я пишу этот пост.

1. Введение. Варианты работы GNU/Linux на AC100

Первый, самый простой. Можно установить в загрузочный раздел ноута (их два) специальный загрузчик и запускать любой подходящий дистрибутив GNU/Linux с карточки SD. Недостаток один: флешка работает медленно, внутренний SSD гораздо быстрее. Зато преимущество несомненно: можно иметь несколько дистрибутивов на разных флешках.
Второй, для продвинутых. Можно переписать файловую систему Linux на один из разделов внутреннего SSD устройства, проще всего — на пользовательский раздел (переформатировав его с fat32 в ext2 или ext4)

Я предпочёл первый вариант (GNU/Linux на карте SD), тем более, что в дальнейшем можно будет скопировать содержимое карточки на один из разделов внутреннего SSD, проще всего — на пользовательский раздел (переформатировав его с fat32 в ext2 или ext4), а можно и переразбить SSD, объединив служебные разделы Android и пользовательский раздел FAT32 в один большой раздел и записать rootfs в него.

2. Подготовка

Утилиты

Для работы с SSD устройства нужна утилита nvflash фирмы Nvidia, а для удобства и скрипт ac100-toolkit. Всё можно взять на http://ac100.163.ru/ (FTP там тоже есть, но /pub в нём недоступен), либо на торрентах. У разработчика ac100-toolkit — Tactilofan — можно взять только сам скрипт, а ссылка на загрузку nvflash в нём битая.

Читайте также:  Teams в linux mint

Ошибки в ac100-toolkit-latest.

1. Из-за устаревшей ссылки не работает команда setup-nvflash, не пытайтесь запускать «./ac100-toolkit setup-nvflash«!

2. В тексте USAGE есть ошибки:

--- USAGE.orig 2010-10-19 21:04:06.000000000 +0600 +++ USAGE 2012-03-15 20:52:56.000000000 +0600 @@ -27,6 +27,6 @@ nvf [options] : execute nvflash with the specified options. Ex : Instead of doing - $ sudo LD_LIBRARY_PATH=. ./nvflash -r get-partition-table --go + $ sudo LD_LIBRARY_PATH=. ./nvflash -r --getpartitiontable ac100-partition-table.txt You can do : - $ ./ac100-toolkit nvf -r get-partition-table --go + $ ./ac100-toolkit nvf -r --getpartitiontable ac100-partition-table.txt

3. В программе скрипта не учтены особенности разных shell’ов, в итоге в синтаксисе формируемых строк для командного процессора возникают ошибки, из-за которых sudo не выполняет команды. Кусок пача:

def execute_nvflash(params): nvflash_path = "./linux4tegra/nvflash/"; - os.system("sudo LD_LIBRARY_PATH="+nvflash_path+" "+nvflash_path+"nvflash "+params); + os.system("LD_LIBRARY_PATH="+nvflash_path+" "+nvflash_path+"nvflash "+params); print "\n" #execute nvflash and return the stdout def return_nvflash_stdout(params): nvflash_path = "./linux4tegra/nvflash/"; - return commands.getoutput("sudo LD_LIBRARY_PATH="+nvflash_path+" "+nvflash_path+"nvflash "+params); + return commands.getoutput("LD_LIBRARY_PATH="+nvflash_path+" "+nvflash_path+"nvflash "+params);

Соответственно, запускать ./ac100-toolkit load-bootloader нужно через sudo (или другим способом с правами суперпользователя). Другие операции нормально выполняются с правами простого пользователя.

Образы загрузчика и GNU/Linux

В Сети уже достаточно много выложено архивов с файловыми системами для AC100. Например, Ubuntu: ubuntu-natty-netbook-2.6.37-1-ac100-root fs.tgz или несколько rootfs от Marcus, ядра и модули сборки c.bmw.

Проще всего взять архив AC100linux-2-2.zip: в нём два варианта загрузчика Linux: AC100linux-2-2Two/img/kernel.37.2.img (загрузка с SD-флешки без таблицы разделов, в командной строке ядра указан root=/dev/mmcblk1) и AC100linux-2-2Two/img/kernel.37.img (загрузка с SD-флешки, на которой есть MBR с единственным разделом: root=/dev/mmcblk1p1). Если в (другой) образ записаны другие параметры ядра, достаточно в копии файла двоичным редактором (например, hedit) заменить "root=/dev/mmcbk0p12 " на "root=/dev/mmcblk1p1 " (лишние символы нужно заменить на пробелы).
Эти загрузчики запускают ядро 2.6.37-6 и для работы с ними нужна файловая система с модулями ядра той же версии.

Более сложный путь, но при этом можно получить более функциональную систему — взять rootfs, например, Ubintu, а ядро и модули взять самые последние,например, у C.BMW. (В ядре 2.6.38-3 от 9 октября 2011 года нормально работают и звук, и wifi.)

3. Замена прошивки

Инструкция по прошивке служебных разделов на SSD есть во многих местах, например, на retracker.org
Во премя проведения перепрошивки используйте питание ноутбука от розетки: работа от батареи в процессе прошивки не гарантируется.
Подключите разъём miniUSB ноутбука к USB-порту компьютера, нажмите на ноутбуке и держите нажатыми Ctrl-ESC, затем нажмите и отпустите кнопку включения — ноут запустится в режим восстановления (экран не включится, но светодиод «включен» — светится).Сначала нужно сделать резервные копии всех разделов на случай какого-либо сбоя, затем записать в шестой раздел загрузчик для запуска Linux с SD:

sudo ./ac100-toolkit load-bootloader ./ac100-toolkit backup-all ./ac100-toolkit restore 6 kernel.37.img

4. Создание рабочей файловой системы GNU/Linux

4.1. Распаковка root-fs

Нужно взять флешку, создать на ней один раздел ext2 и отформатировать в ext2. Использовать ext3 можно только если вам не жалко флешку: журнал ext3 «убьёт» флешку очень быстро (при работе ext3 в журнал постоянно идёт запись, а ресурс флешки сильно ограничен). В файловой системе ext4 предусмотрен режим работы без журнала, и если Вы понимаете, как отключить журнал, можете использовать ext4.
Затем под Linux (чтобы сохранились права на файлы) смонтируйте флешку и распакуйте на неё скачанный тарбол файловой системы командой «sudo tar —numeric-owner -zxf файл.tgz -C /media/usbdrive» где /media/usbdrive — точка монтирования флешки.

Читайте также:  Timezone red hat linux

4.2. Распаковка modules

Затем нужно распаковать туда же модули ядра, если их версия в распакованной файловой системе отличается от версии ядра в загрузчике. Версия модулей ядра в файловой системе указана в имени подкаталога с модулями: lib/modules, например, в архиве ubuntu-natty-netbook-2.6.37-1-ac100-root fs.tgz есть подкаталог lib/modules/2.6.37-1-ac100 и для работы с ядром версии 2.6.38.3-c.bmw+ нужно распаковать на карточку архив, содержащий lib/modules/2.6.38.3-c.bmw+ (это файл modules.2.6.38.3-c.bmw+.38.tar.gz).

4.3. Редактирование файлов

Если Вы не знаете пароль рута в выбранной rootfs, нужно его изменить.
С правами суперпользователя внесите изменение в файл etc/shadow: на примонтирвоанной флешке выполните команду

sudo nano rootfs/etc/shadow

и в редакторе строку
root:$6$Xc7DG9kh$1ESzJ9js3z047cDUq.Xt4jG 89r2Isfy9ykGJBKK8KypEjouaYXWgtxY6A4zkin2 sW4oRKny3PoxhLZHHVTbMe.:14715:0:99999:7: ::
замените на
root::14715:0:99999:7.
Т.е. уберите набор символов между вторым и третьим двоеточиями. В результате пароль рута станет пустым.
Другой вариант: если флешка смонтирована в /media/usb0, выполните команду

sudo chroot /media/usb0 passwd

и введите (дважды) новый пароль рута для Ubuntu.

5. Первая загрузка

Вставьте SD-карточку в Toshiba AC100 и включите его. Загрузится ядро и запустится программа настройки Ubuntu. Не нужно отвечать на вопросы, вместо этого нажмите Ctrl-Alt-F1. (Клавиша F1 у AC100 обозначена значком «перемотка влево», расположена справа от клавиши ESC.)
Залогиньтесь пользователем root (пароль был установлен на прошлом этапе) и выполните команды обработки зависимостей модулей ядра и перезагрузки:

6. Настройка и работа

Теперь можно ответить на вопросы программы настройки Ubuntu и работать.
После входа пользователем рекомендую запустить Synaptic и удалить ненужные пакеты, например, пакет Brasero (программа записи CD).
Также, для экономии ресурса флешки, имеет смысл монтировать файловую систему в режиме без обновления полей времени доступа к файлам. Один из способов: в /etc/init.d создайте файл remount-root-noatime:

#! /bin/sh /bin/mount `/usr/sbin/rdev` -o remount,noatime,nodiratime
sudo ln -s /etc/rcS.d/S10remount-root-noatime ../init.d/remount-root-noatime

Для автоматического исправления ошибок файловой системы при загрузке отредактируйте файл /etc/default/rcS (требуются права root), измените значение переменной FSCKFIX с «no» на «yes»:

7. Обновление ядра

Когда выйдет новое ядро Linux, заменить ядро можно «изнутри» работающей GNU/Linux.
Скачайте ядро и архив с модулями. Предположим, что скачанные файлы называются zImage.2.6.38.3-c.bmw+.sd.img (образ загрузочного раздела) и modules.2.6.38.3-c.bmw+.38.tar.gz (тарбол я модулями ядра).
Убедитесь, что тарбол с модулями ядра содержит иерархию /lib/modules:

$ tar -zf modules.2.6.38.3-c.bmw+.38.tar.gz -t | grep /lib/modules | head -n1 ./lib/modules/
mv /lib/modules/`uname -r` /lib/modules/`uname -r`.1
sudo tar --numeric-owner -zf modules.2.6.38.3-c.bmw+.38.tar.gz -x -C /
$ echo `ls -l zImage.2.6.38.3-c.bmw+.sd.img | cut -f 5 -d " "` / 2048 | bc 1463
$ sudo dd bs=2048 of=/dev/mmcblk0p4 count=1463 if=zImage.2.6.38.3-c.bmw+.sd.img 1463+0 records in 1463+0 records out 2996224 bytes (3,0 MB) copies, 1,33531 s, 2,2 MB/s

После загрузки не забудьте выполнить команду

Читайте также:  Building linux with clang

8. Файловая система на внутренней SSD

Чтобы высвободить флешку, можно переписать её содержимое на внутреннюю SSD устройства и заменить ядро.
В AC100-117 удобно использовать раздел «пользовательских данных» андроида, в Linux он доступен как /dev/mmcblk0p12. Выполните команды с правами суперпользователя:

umount /dev/mmcblk0p12 mkfs.ext2 /dev/mmcblk0p12 mount -t ext2 -o noatime,nodiratime,rw /dev/mmcblk0p12 /mnt cd /mnt dump -f- -0 / | restore -rf- umount /dev/mmcblk0p12

Затем загрузите в загрузочный раздел SSD ядро, в параметрах которого указан root=/dev/mmcblk0p12, у C.BMW это файл с суффиксом «.p12.img»: zImage.2.6.38.3-c.bmw+.p12.img, у образа загрузчика с ядром другого сборщика может понадобиться отредактировать файл в шестнадчатиричном редакторе.

Приложения.

I. Таблица разделов SSD AC100-117

В linux есть программа «Gnome disk utility» (/usr/bin/palimpsest), которая позволяет редактировать таблицу разделов SSD, впаянного в AC100. В таблице — назначение этих разделов и их соответствие разделам в процедуре repair:

Метка Раздел в linux Назначение Номер раздела для программы nvflash
BCT Bootstrap 2
PT mmcblk0p1 Partition table? 3
EBT mmcblk0p2 Emergency boot 4
SOS mmcblk0p3 SOS boot (выбор «1» после загрузки с «домиком») 5
LNX mmcblk0p4 обычный загрузчик 6
MBR mmcblk0p5 MBR 7
APP mmcblk0p6 /system в android 8
CAC mmcblk0p7 /cache в android 9
MSC mmcblk0p8 /misc в android 10
EM1 mmcblk0p9 11
UDA mmcblk0p10 /data в android 12
EM2 mmcblk0p11 13
UDB mmcblk0p12 /storage в android, этот раздел в андроиде доступен компьютеру, к которому подключаешь AC100 кабелем miniUSB 14

II. Переразбивка SSD

В архиве содержатся альтернативная таблица разделов и bootstrap (BST) для неё, а также все скрипты, необходимые как для перепрошивки, так и для восстановления оригинальной прошивки.
Не забудьте сделать резервную копию всех разделов SSD!

III. Запись загрузчика из Windows

  1. Установите в Windows пакет tegra_froyo
  2. Подключите AC100 в режиме восстановления по USB (кабель USB-miniUSB, USB в комп, miniUSB в AC100, нажимаем и держим Ctrl и ESC, нажимаем и отпускаем кнопку питания, когда загорится светодиод включения, отпускаем Ctrl и ESC).
  3. Для обнаруженного устройства «APX» установите драйвер из каталога «C:\Program Files\NVIDIA Corporation\tegra_froyo_20101105\usbpcdr iver\» (в Windows 64 — «c:\Program Files (x86)\NVIDIA Corporation\tegra_froyo_20101105\usbpcdr iver\») — «NVIDIA USB Boot-recovery driver for Mobile devices»
  4. Для удобства, в каталог «C:\Program Files\NVIDIA Corporation\tegra_froyo_20101105\» перепишите образ ядра, например, zImage.2.6.38.3-c.bmw+.p12.img
  5. Из каталога «C:\Program Files\NVIDIA Corporation\tegra_froyo_20101105\» выполните две команды: загрузку бутлодера и запись ядра в загрузочный раздел. Для этого запустите командный процессор CMD.EXE (нажмите сочетание клавиш «Windows» и «R», введите cmd, нажмите «OK») и в нём выполните три команды:
cd "C:\Program Files\NVIDIA Corporation\tegra_froyo_20101105\" nvflash --bl bootloader.bin --go nvflash -r --download 6 zImage.2.6.38.3-c.bmw+.p12.img --go

Источник

Оцените статью
Adblock
detector