Установка Linux на SD карту

В этой статье рассказывается как запустить Linux на телефоне Asus P535. Прежде чем начинать убедитесь что у вас есть:

  • Компьютер с ОС Linux (можно linux запущенный на виртуальной машине)
  • КПК Asus P535
  • miniSD карта памяти минимум от 512 МБ (лучше 1 ГБ)

И так скачиванием себе на компьютер ядро и rootfs взять их нужно тут . Если у вас Linux на виртуальной машине, вставляйте карточку в телефон и включите режим "Ус-во хранения данных" или если у вас Linux вставляйте карточку в кардридер.

Создаем на карте два раздела:

$ dmesg | tail
mmc0: new high speed SDHC card at address b368
mmcblk0: mmc0:b368 SD04G 3.72 GiB # карта памяти находится по адресу /dev/mmcblk0
$ fdisk /dev/mmcblk0
The number of cylinders for this disk is set to 5603.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p # набираем команду p что бы посмотреть какие разделы есть карте, если они есть удаляем их командой d
Disk /dev/mmcblk0: 3999 MB, 3999268864 bytes
82 heads, 17 sectors/track, 5603 cylinders
Units = cylinders of 1394 * 512 = 713728 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/mmcblk0p1 1 48 33447+ 6 FAT16
/dev/mmcblk0p2 49 5602 3871138 83 Linux

Command (m for help): d
Partition number (1-4): 1 # указываем номер раздела который следует удалить

Command (m for help): d
Selected partition 2

Command (m for help): n # создаем новый раздел командой n
Command action
e extended
p primary partition (1-4)
p # нам нужны только основные разделы, смело жмем p
Partition number (1-4): 1 # номер раздела, ставим 1
First cylinder (1-5603, default 1): # номер сектора с которого начинается раздел, здесь нажимаем просто Enter
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-5603, default 5603): +8M # тут вводим +8M (8 мегабайт)

Command (m for help): n # создаем раздел для rootfs
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2 # вводим номер раздела 2, и просто нажимаем Enter два раза
First cylinder (14-5603, default 14):
Using default value 14
Last cylinder, +cylinders or +size{K,M,G} (14-5603, default 5603):
Using default value 5603

Command (m for help): t # меняем ID первого раздела на FAT16
Partition number (1-4): 1
Hex code (type L to list codes): 6

Command (m for help): p # убеждаемся что мы все сделали правильно
Disk /dev/mmcblk0: 3999 MB, 3999268864 bytes
82 heads, 17 sectors/track, 5603 cylinders
Units = cylinders of 1394 * 512 = 713728 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 1 48 33447+ 6 FAT16
/dev/mmcblk0p2 49 5602 3871138 83 Linux

Command (m for help): wq # записываем сделанные изменения
The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

Создание файловых систем на карте памяти

Это делается очень просто:

$ mkfs.vfat /dev/mmcblk0p1
$ mkfs.reiserfs /dev/mmcblkp2

Разворачивание образа

Разместите скаченные файлы в домашней директории и выполните следующие комманды:

$ mount /dev/mmcblk0p2 /mnt/cdrom
$ cd /mnt/cdrom
$ tar -xvf ~/rootfs-20100207.tar.bz2
$ cd
$ umount /mnt/cdrom
$ mount /dev/mmcblk0p1 /mnt/cdrom
$ unzip ~/linux-asusp535-20100207.zip
$ cd
$ umount /mnt/cdrom 

Запуск

Вставьте карту памяти в телефон, запустите haret-0.5.2.exe и в нем нажмите кнопку "Run" Laughing

Известные проблемы

  • В Qt Extended отключен модуль телефона
    • Работаем над этим
  • Иногда не устанавливаются или неправильно устанавливается время в Linux
    • ИСправлено в новых версиях ядра, ждите обновлений
  • Не работает отсылка файлов по bluetooth
    • Попробуйте перед загрузкой linux включить bluetooth в WinMobile
  • Не заряжается батарея 
    • Перед запуском linux убедитесь что КПК подключен к USB или к зарядке, потом его можно отключить. Будет исправлено в новых версиях
  • Как вернуться в Windows?
    • Просто нажмите RESET или через ssh наберите команду reboot
  • Не работает внешний динамик
    • Он выключен SmileПользуйтесь пока наушниками

Подключение к ПК

Убедитесь что ядро на ПК собрано с такими параметрами:

Device Drivers->Network device support->USB network adapters

<M>   Simple USB Network Links (CDC Ethernet subset)
    [*]     Embedded ARM Linux links (iPaq, ...)  

Что еще интересного есть?

  • На кпк установлен полноценный gentoo с ssh демоном, поэтому можно подключится и запустить mplayer, mc, htop, gcc, screen, emerge и т.д.
    Что бы подключится к КПК по сети нужно, подключить его по USB кабелю и для сетевого интерфейса usb0 установить ip-адрес ifconfig usb0 10.8.0.1 Запустить ssh root@10.8.0.2 (пароль toor) и командовать :)
  • В ядре установлена политка управления частотой ядра ONDEMAND, поэтому частота CPU автоматически варьируется от 104 Мгц до 520 Мгц в зависимости от нагрузки
  • Можно по управлять под-светкой, фонариком, виброй, и т.д. через /sys/class/leds/ИМЯ_ИНДИКАТОРА/brightness, например виброй:
    echo 1 > "/sys/class/leds/asus:vibra/brightness"
    echo 0 > "/sys/class/leds/asus:vibra/brightness"