Итак, у меня появилась такая игрушка, как Raspberry Pi, и желание использовать её как девайс для управления освещением, для начала. Логика проста - она почти не потребляет энергии, в отличие от "обычного" компьютера, и на неё вполне можно "навесить" файлохранилище (подключив обычные SATA-жёсткие диски через преобразователь usb-sata (типа такого - http://chinawebshop.ru/product_44388.html )), да и мультимедийные функции, типа проигрывания интернет-радио, или музыки через mpd, она потянет на "ура". К слову, управление mpd вполне возможно с android-платформы, что даёт нам возможность управлять музыкой дома с телефона или планшета. Заманчиво? Тогда приступим!
Сразу сделаю две оговорки:
1) Компиляция будет выполнятся только силами самого Pi. "Полноценный" компьютер нужен будет только для подачи команд через ssh.
2) Это эксперимент, и результат его может быть отрицательным. Дело в том, что в процессе компиляции будет производится большое число операций "чтение-запись", что может убить flash-карту (ресурс одной ячейки ограничен где-то 10000 операций чтение-запись, что совсем немного). В будущем можно будет попробовать подлкючить к Pi жёсткий диск, и использовать его как корневой раздел, но это - планы на будущее.
Для начала работы нам потребуется монитор с HDMI-входом (либо переходник HDMI-DVI), HDMI-кабель, USB-клавиатура и SD-карта, размером от 2 Гб. В моём случае использовается 8Гб-карта Kingston, работает вполне удовлетворительно.
Ставить саму систему будем по вот этой доке: http://wiki.gentoo.org/wiki/Raspberry_Pi , вплоть до параграфа Compiling the kernel. Важно - при создании разделов обязательно создайте в конце раздел подкачки (swap) на 512М...1Гб, без него толком работать микрокомпьютер не будет - оперативки в некоторых случаях может нехватать. Компиляцию ядра, в отличие от той доки, будем производить на самой Pi. (Пока что у меня не получилось подобрать конфиг актуального на сегодня ядра так, чтобы оно грузилось и работало. В будущем, может, доковыряю. В принципе, работает всё, кроме аудио - но пока оно не особо-то и нужно мне...)
После выполнения инструкций из доки - имеем работоспособную, но голую систему.
Установим необходимый для работы софт:
emerge syslog-ng vixie-cron cpufrequtils app-misc/mc ntp logrotate
Добавим софт в автозапуск:
rc-update add vixie-cron default
rc-update add ntp-client default
rc-update add syslog-ng default
И обязательно скопируем текущую временную зону в /etc/localtime:
cp /usr/share/zoneinfo/Asia/Yekaterinbourg /etc/localtime. Это даст возможность ntp-client'у устанавливать правильное время при загрузке системы (т.к. часов реального времени на плате нет, после запуска она будет думать, что надворе 1970 год, пока ntp-client не получит актуальное время).
Для настройки сети нужно прописать следующее:
cat /etc/conf.d/net
# This blank configuration will automatically use DHCP for any net.*
# scripts in /etc/init.d. To create a more complete configuration,
# please review /usr/share/doc/openrc*/net.example* and save your configuration
# in /etc/conf.d/net (this file :]!).
config_eth0=("192.168.0.98 netmask 255.255.255.0")
routes_eth0=("default via 192.168.1.1")
Правим fstab
Не забудьте создать "обычного" пользователя, добавить его в группу wheel и задать пароль на root'a, чтобы после перезапуска можно было уже работать только удалённо.
После этого можно перезапустить машинку, должно бы работать.
Я с самого начала не создал swap-раздел, а выделил всё доступное место под данные. Если Вы допустили ту же оплошность, её можно поправить:
1) Ресайзим текущий раздельчик
-fdisc /dev/mmcblk0, жмём p и смотрим текущую картину разделов:
Устр-во Загр Начало Конец Блоки Id Система
/dev/mmcblk0p1 * 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 15564799 7720960 83 Linux
-resize2fs /dev/mmcblk0p2 6800M (для карты на 8 Гб, для другого объёма вычитаем из объёма карты в мегабайтах где-то 700-1000 Мб)
-fsck -fy /dev/mmcblk0p2 - проверка изменённой файловой системы.
Теперь создаём новую разметку диска:
fdisc /dev/mmcblk0. Размер(в секторах) новой области высчитываем так- новый раздел размера (6800М) умножаем два раза на 1024, потом делим на 512. Для получения конечного адреса вычитаем из этого начальный адрес (122880), и округляем в большую сторону, и создаём раздел. Должно получится так:
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 * 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 14122880 7000000+ 83 Linux
/dev/mmcblk0p3 14122900 15564799 720950 82 Linux swap / Solaris
/dev/mmcblk0p3 none swap sw 0 0
Вуаля, должно бы работать!
Сразу сделаю две оговорки:
1) Компиляция будет выполнятся только силами самого Pi. "Полноценный" компьютер нужен будет только для подачи команд через ssh.
2) Это эксперимент, и результат его может быть отрицательным. Дело в том, что в процессе компиляции будет производится большое число операций "чтение-запись", что может убить flash-карту (ресурс одной ячейки ограничен где-то 10000 операций чтение-запись, что совсем немного). В будущем можно будет попробовать подлкючить к Pi жёсткий диск, и использовать его как корневой раздел, но это - планы на будущее.
Для начала работы нам потребуется монитор с HDMI-входом (либо переходник HDMI-DVI), HDMI-кабель, USB-клавиатура и SD-карта, размером от 2 Гб. В моём случае использовается 8Гб-карта Kingston, работает вполне удовлетворительно.
Ставить саму систему будем по вот этой доке: http://wiki.gentoo.org/wiki/Raspberry_Pi , вплоть до параграфа Compiling the kernel. Важно - при создании разделов обязательно создайте в конце раздел подкачки (swap) на 512М...1Гб, без него толком работать микрокомпьютер не будет - оперативки в некоторых случаях может нехватать. Компиляцию ядра, в отличие от той доки, будем производить на самой Pi. (Пока что у меня не получилось подобрать конфиг актуального на сегодня ядра так, чтобы оно грузилось и работало. В будущем, может, доковыряю. В принципе, работает всё, кроме аудио - но пока оно не особо-то и нужно мне...)
После выполнения инструкций из доки - имеем работоспособную, но голую систему.
Установим необходимый для работы софт:
emerge syslog-ng vixie-cron cpufrequtils app-misc/mc ntp logrotate
Добавим софт в автозапуск:
rc-update add vixie-cron default
rc-update add ntp-client default
rc-update add syslog-ng default
И обязательно скопируем текущую временную зону в /etc/localtime:
cp /usr/share/zoneinfo/Asia/Yekaterinbourg /etc/localtime. Это даст возможность ntp-client'у устанавливать правильное время при загрузке системы (т.к. часов реального времени на плате нет, после запуска она будет думать, что надворе 1970 год, пока ntp-client не получит актуальное время).
Для настройки сети нужно прописать следующее:
cat /etc/conf.d/net
# This blank configuration will automatically use DHCP for any net.*
# scripts in /etc/init.d. To create a more complete configuration,
# please review /usr/share/doc/openrc*/net.example* and save your configuration
# in /etc/conf.d/net (this file :]!).
config_eth0=("192.168.0.98 netmask 255.255.255.0")
routes_eth0=("default via 192.168.1.1")
Правим fstab
/dev/mmcblk0p1 /boot vfat none 0 0
/dev/mmcblk0p2 / ext3 noatime 0 1
/dev/mmcblk0p3 none swap sw 0 0
Не забудьте создать "обычного" пользователя, добавить его в группу wheel и задать пароль на root'a, чтобы после перезапуска можно было уже работать только удалённо.
После этого можно перезапустить машинку, должно бы работать.
Я с самого начала не создал swap-раздел, а выделил всё доступное место под данные. Если Вы допустили ту же оплошность, её можно поправить:
1) Ресайзим текущий раздельчик
-fdisc /dev/mmcblk0, жмём p и смотрим текущую картину разделов:
Устр-во Загр Начало Конец Блоки Id Система
/dev/mmcblk0p1 * 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 15564799 7720960 83 Linux
Отсюда нам пригодятся начало и конец области mmcblk0p2.
-resize2fs /dev/mmcblk0p2 6800M (для карты на 8 Гб, для другого объёма вычитаем из объёма карты в мегабайтах где-то 700-1000 Мб)
-fsck -fy /dev/mmcblk0p2 - проверка изменённой файловой системы.
Теперь создаём новую разметку диска:
fdisc /dev/mmcblk0. Размер(в секторах) новой области высчитываем так- новый раздел размера (6800М) умножаем два раза на 1024, потом делим на 512. Для получения конечного адреса вычитаем из этого начальный адрес (122880), и округляем в большую сторону, и создаём раздел. Должно получится так:
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 * 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 14122880 7000000+ 83 Linux
/dev/mmcblk0p3 14122900 15564799 720950 82 Linux swap / Solaris
(третий раздел - уже созданный своп).
После этого правим /etc/fstab, прописывая в нём собственно своп:
/dev/mmcblk0p1 /boot vfat noauto 0 0
/dev/mmcblk0p2 / ext3 noatime 0 1/dev/mmcblk0p3 none swap sw 0 0
Вуаля, должно бы работать!
Комментариев нет:
Отправить комментарий