На днях получил долгожданный Intel Galileo, заказывал у SparkFun Electronics, приехало довольно быстро и дешево. За несколько минут установил Little Linux от Intel подключился к нему по SSH и сразу стало грустно :) т.к. возможности у этого линукса крайне ограничены.
Поиски по интернету инструкций по установке полноценного Linux на Intel Galileo успехов не принесли. Потому решил написать статью по полной установке от начала до конца и заодно получить инвайт на хабр.
Итак начнем, инструкция будет основываться на этой.
Прежде чем приступать к установке Debian необходимо активировать сетевую карту на Intel Galileo, делается это с помощью скетча для Arduino (процедура подключения и настройки тут):
После чего в роутере необходимо создать привязку IP адреса к MAC-адресу Intel Galileo (указан наклейкой на LAN порту).
«Этап 1.Скачать Debian-7.3.0-i386-netinst.iso для виртуальной машины»
«Примечание: Установить следующие показатели для виртуальной машины: 256 MB ОЗУ, 1 CPU, 3.8 GB HDD (разметить под ext3), отключить принтер, звуковую карту и CD-ROM (после установки).»
«Примечание: создать второй жесткий диск на 20 GB HDD и разметить его под ext3»
”Примечание: Работать будем из-под рута"
«Примечание: Из всех пакетов установим только SSH»
«Этап 2. Тестируем SHH и обновляемся.»
«Примечание: Еще раз, все делаем под пользователем root.»
(лично у меня обновлений не было и команды выполнились за пару секунд)
«Этап 3. Установка даты и времени»
«Примечание: Можно пропустить, если в процессе установки уже выбрали»
«Этап 4. Монтируем второй жесткий диск (тот что на 20 Гб).»
«Примечание: Довольно интересный этап, обратите внимание, если Debian был установлен на файловую систему ext3, то все что ниже также надо выполнять под этой файловой системой. Я это не учел и был много интересных и не понятных ошибок.»
«Примечание: Второй жесткий диск в моем случае называется /dev/sdb1. Если диск не был монтирован в систему, то выполняем команды ниже „
“Со всем соглашаемся и жмем Enter пока нас вновь не спросят (примерно 2-3 раза)»
«Примечание: тут и далее ls можете пропускать, если уверены, что копирование/монтирование прошло удачно.»
«Этап 5. Скачиваем маленький линукс.»
«Примечание: Если еще не установили архиватор.»
«Примечание: Посмотрим что извлекли.»
«Примечание: Посмотрим как все примонтровалось»
«Этап 6. Модифицируем Debian под Intel Galileo.»
«Примечание: Убедимся, что все скопировалось.»
«Примечание: И тут тоже все скопировалось.»
«Этап 7. Внесем изменения для инициализации Debian.»
«Примечание: вставить в конец файла»
«s0:2345:respawn:/sbin/getty -L 115200 ttyS1 vt102»
«Этап 8. Создаем образ нашего Линукса.»
«Примечание: Если будет не получаться попробуйте перезапустить Debian в безопасном режиме. Лично у меня именно тут начались ошибки из-за разницы между ext3 и ext4 — исправил форматированием первого жесткого под ext3 и начав сначала.»
«Примечание: Обратите внимание на количество блоков в /dev/sda1 в моем случае это 3766272.»
«Примечание: Убедимся, что все скопировалось.»
«Этап 9. Последние штрихи в установке.»
«Примечание: Убедимся в наличии файла image-full-clanton.ext3»
«Этап 10. Подготовка MicroSD — по инструкции»
«От имени Администратора запустим из командной строки diskpart.exe.»
(Если после этой команды у Вас пропала часть ярлыков с рабочего стола, и пропал жесткий диск, то очистили Вы явно не карту памяти. Устраняется эта оплошность Paragon-ом, просто заново подключив буквы дисков и обновлением MBR)
«Примечание: Может понадобиться полное форматирование карты памяти, но мне оказалось достаточно „быстрого“ форматирования.»
«Этап 11. Загрузим новый image-full-clanton.ext3 на SD карту»
«Примечание: Если вы перезагружались то необходимо вновь монтировать разделы /sdb1.»
«Активируем SD карту в виртуальной машине и выполним команду fdisk -l для понимания названия карты. В моем случае SD карта это dev/sdc1»:
“Сейчас необходимо скопировать содержимое папки «/sdb/LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5» на карту памяти, способов много, я предпочел установить файловый менеджер mc (apt-get install mc), запустить его и в нем выполнить копирование”
На этом этапе я поторопился и нагло вырвал кард ридер, после чего Intel Galileo отказался с нее стартовать. Скопировал с карты памяти на рабочий стол файл image-full-clanton.ext3 и повторил этап 10, затем разархивировал оригинальный LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5.7z на карту памяти, скопировал с заменой image-full-clanton.ext3 (с рабочего стола), добавил 2 файла из оригинального архива LITTLE_LINUX_IMAGE_FirmwareUpdate_Intel_Galileo_v0.7.5 и вставил карту памяти в Intel Galileo. Спустя секунд 20 я зашел на него по SSH.

Для начала установил «mc», установка заняла довольно продолжительный период по времени, но закончилась удачно. В дальнейшем планирую установить web-сервер, а пока выбираю наименее «тяжелые» системы для этого.

Таким образом я получил полноценный Debian на Intel Galileo, на котором исправно работают большинство команд, но некоторая часть не работает или работает нестабильно. В ближайших планах заставить Galileo считывать данные с датчиков и записывать результат в SQL таблицу с последующим выводом данных на сайт.
Как только дадут инвайт на Windows 8 для Galileo возможно его функционал увеличится, в любом случае установлю и это будет интересно.
Напоминаю, что Intel Galileo не поддерживает SD карты объемом больше 32 Гб и крайне предпочтительно использовать карты памяти 10 класса.
Страница загрузок на сайте Intel (на оригинальные архивы)
Поиски по интернету инструкций по установке полноценного Linux на Intel Galileo успехов не принесли. Потому решил написать статью по полной установке от начала до конца
Итак начнем, инструкция будет основываться на этой.
Введение
Прежде чем приступать к установке Debian необходимо активировать сетевую карту на Intel Galileo, делается это с помощью скетча для Arduino (процедура подключения и настройки тут):
#include <SPI.h>
#include <Ethernet.h>
// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = {
0x98, 0x4F, 0xEE, 0x00, 0x66, 0x74 };
// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;
void setup() {
// start the serial library:
Serial.begin(9600);
// start the Ethernet connection:
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// no point in carrying on, so do nothing forevermore:
for(;;)
;
}
// print your local IP address:
Serial.println(Ethernet.localIP());
}
void loop() {
}
После чего в роутере необходимо создать привязку IP адреса к MAC-адресу Intel Galileo (указан наклейкой на LAN порту).
Установка Debian
«Этап 1.Скачать Debian-7.3.0-i386-netinst.iso для виртуальной машины»
«Примечание: Установить следующие показатели для виртуальной машины: 256 MB ОЗУ, 1 CPU, 3.8 GB HDD (разметить под ext3), отключить принтер, звуковую карту и CD-ROM (после установки).»
«Примечание: создать второй жесткий диск на 20 GB HDD и разметить его под ext3»
”Примечание: Работать будем из-под рута"
«Примечание: Из всех пакетов установим только SSH»
«Этап 2. Тестируем SHH и обновляемся.»
«Примечание: Еще раз, все делаем под пользователем root.»
apt-get update
apt-get upgrade
(лично у меня обновлений не было и команды выполнились за пару секунд)
«Этап 3. Установка даты и времени»
«Примечание: Можно пропустить, если в процессе установки уже выбрали»
date
apt-get install ntpdate
y
ntpdate pool.ntp.org
«Этап 4. Монтируем второй жесткий диск (тот что на 20 Гб).»
«Примечание: Довольно интересный этап, обратите внимание, если Debian был установлен на файловую систему ext3, то все что ниже также надо выполнять под этой файловой системой. Я это не учел и был много интересных и не понятных ошибок.»
fdisk –l
«Примечание: Второй жесткий диск в моем случае называется /dev/sdb1. Если диск не был монтирован в систему, то выполняем команды ниже „
fdisk /dev/sdb1
n
p
“Со всем соглашаемся и жмем Enter пока нас вновь не спросят (примерно 2-3 раза)»
w
mkfs.ext3 /dev/sdb1
y
cd /
mkdir sdb
mount -t ext3 /dev/sdb1 /sdb
e2label /dev/sdb1 /sdb
df -h
cd sdb
ls
«Примечание: тут и далее ls можете пропускать, если уверены, что копирование/монтирование прошло удачно.»
«Этап 5. Скачиваем маленький линукс.»
cd /sdb
wget http://downloadmirror.intel.com/23171/eng/LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5.7z
«Примечание: Если еще не установили архиватор.»
apt-get install p7zip
p7zip -d LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5.7z
cd /sdb/LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5
«Примечание: Посмотрим что извлекли.»
ls
cd /sdb
mv /sdb/LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5/image-full-clanton.ext3 /sdb/image-full-clanton_original.ext3
mkdir /sdb/image-full-clanton_original
mount -t ext3 /sdb/image-full-clanton_original.ext3 /sdb/image-full-clanton_original
cd /sdb/image-full-clanton_original
«Примечание: Посмотрим как все примонтровалось»
ls
«Этап 6. Модифицируем Debian под Intel Galileo.»
cd /media
mkdir /media/card
mkdir /media/cf
mkdir /media/hdd
mkdir /media/mmc1
mkdir /media/net
mkdir /media/ram
mkdir /media/realroot
mkdir /media/union
mkdir /sketch
cp -avr /sdb/image-full-clanton_original/lib/modules/3.8.7-yocto-standard/ /lib/modules/3.8.7-yocto-standard
cd /lib/modules/3.8.7-yocto-standard
«Примечание: Убедимся, что все скопировалось.»
ls
cp -avr /sdb/image-full-clanton_original/opt/cln/ /opt/cln
cd /opt/cln/galileo
«Примечание: И тут тоже все скопировалось.»
ls
«Этап 7. Внесем изменения для инициализации Debian.»
nano /etc/inittab
«Примечание: вставить в конец файла»
«s0:2345:respawn:/sbin/getty -L 115200 ttyS1 vt102»
«Этап 8. Создаем образ нашего Линукса.»
cd /sdb
«Примечание: Если будет не получаться попробуйте перезапустить Debian в безопасном режиме. Лично у меня именно тут начались ошибки из-за разницы между ext3 и ext4 — исправил форматированием первого жесткого под ext3 и начав сначала.»
fdisk -l
«Примечание: Обратите внимание на количество блоков в /dev/sda1 в моем случае это 3766272.»
dd if=/dev/sda1 of=/sdb/image-full-clanton.ext3 bs=3766272 conv=sync,noerror
mkdir /sdb/image-full-clanton
mount -t ext3 /sdb/image-full-clanton.ext3 /sdb/image-full-clanton
cd /sdb/image-full-clanton
«Примечание: Убедимся, что все скопировалось.»
ls
«Этап 9. Последние штрихи в установке.»
rm -rf /sdb/image-full-clanton/sys
rm -rf /sdb/image-full-clanton/proc
mkdir /sdb/image-full-clanton/sys
mkdir /sdb/image-full-clanton/proc
cd /sdb
umount -l /sdb/image-full-clanton
mv /sdb/image-full-clanton.ext3 /sdb/LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5/image-full-clanton.ext3
cd /sdb/LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5
«Примечание: Убедимся в наличии файла image-full-clanton.ext3»
ls
«Этап 10. Подготовка MicroSD — по инструкции»
«От имени Администратора запустим из командной строки diskpart.exe.»
"Run diskpart.exe"
"DISKPART> list disk"
"DISKPART> select vol <a>
; (где «a» это Ваша SD карта) (при двух физических жестких дисках это ТОМ 5. Но именно на этот этапе уже можно «покупать» и устанавливать Paragon Partition Manager >_< жаль я этого не знал раньше. Пару раз удалив разметку жесткого диска я понял алгоритм определения карты памяти в кард ридере: Выбрать том 10, если не найдено выбрать 9… флешка это последний том с конца, который он обнаружит, у меня это было 5)""DISKPART> clean"
(Если после этой команды у Вас пропала часть ярлыков с рабочего стола, и пропал жесткий диск, то очистили Вы явно не карту памяти. Устраняется эта оплошность Paragon-ом, просто заново подключив буквы дисков и обновлением MBR)
"DISKPART> create part primary"
"DISKPART> active"
'DISKPART> format quick label="BOOTME"'
«Примечание: Может понадобиться полное форматирование карты памяти, но мне оказалось достаточно „быстрого“ форматирования.»
'DISKPART> format label="BOOTME"'
"DISKPART> exit"
«Этап 11. Загрузим новый image-full-clanton.ext3 на SD карту»
«Примечание: Если вы перезагружались то необходимо вновь монтировать разделы /sdb1.»
mount -t ext3 /dev/sdb1 /sdb
cd /sdb/LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5
«Активируем SD карту в виртуальной машине и выполним команду fdisk -l для понимания названия карты. В моем случае SD карта это dev/sdc1»:
mkdir mnt/usb
mount -t vfat -o iocharset=utf8,codepage=866 /dev/sdc1 /mnt/usb
“Сейчас необходимо скопировать содержимое папки «/sdb/LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5» на карту памяти, способов много, я предпочел установить файловый менеджер mc (apt-get install mc), запустить его и в нем выполнить копирование”
На этом этапе я поторопился и нагло вырвал кард ридер, после чего Intel Galileo отказался с нее стартовать. Скопировал с карты памяти на рабочий стол файл image-full-clanton.ext3 и повторил этап 10, затем разархивировал оригинальный LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5.7z на карту памяти, скопировал с заменой image-full-clanton.ext3 (с рабочего стола), добавил 2 файла из оригинального архива LITTLE_LINUX_IMAGE_FirmwareUpdate_Intel_Galileo_v0.7.5 и вставил карту памяти в Intel Galileo. Спустя секунд 20 я зашел на него по SSH.

Для начала установил «mc», установка заняла довольно продолжительный период по времени, но закончилась удачно. В дальнейшем планирую установить web-сервер, а пока выбираю наименее «тяжелые» системы для этого.

Вместо вывода
Таким образом я получил полноценный Debian на Intel Galileo, на котором исправно работают большинство команд, но некоторая часть не работает или работает нестабильно. В ближайших планах заставить Galileo считывать данные с датчиков и записывать результат в SQL таблицу с последующим выводом данных на сайт.
Как только дадут инвайт на Windows 8 для Galileo возможно его функционал увеличится, в любом случае установлю и это будет интересно.
Напоминаю, что Intel Galileo не поддерживает SD карты объемом больше 32 Гб и крайне предпочтительно использовать карты памяти 10 класса.
Страница загрузок на сайте Intel (на оригинальные архивы)