Как заставить Raspbian «переползти» на HDD или хороший БП - наше ВСЕ.

21.10.2013 17:52

Решил я немного расширить память на своем Raspberry для того, чтобы не бояться в один прекрасный момент потерять данные или наработки своих экспериментов (не верю я, что SD карты  «долговечные»).
До этого я использовал карту памяти которая шла в комплекте с Raspberry размером 8Гб с логотипом малины. На ней уже работал интернет приемник управляемый пультом от телека, говорящий «гугловским» голосом названия радиостанций и время (если попросить J).
Все бы хорошо, но хочется полностью загрузить маленький «комп», чтоб он хотя бы начал «нагреваться».
Для этого установим:
Ngnix локальный сервер (больше для понтов)
Transmission качалку торрентов (хотя в сфере текущих событий с этим нужно поаккуратней)
Aria2c качалку файлов (замечательная штука – может тянуть с разных файлопомоек один файл)
Подключим:
датчики и релюшки (для мониторинга температуры, сигнализации и управления нагрузками)
USB модем (для контроля и управления всем этим «хозяйством» удаленно)
блютуз ( пускай «железка» узнает «хозяина» по мак дресу).
И еще …, потом придумаем :).
 
А пока просто дадим системе больше места для «драки».
Почитал я интернет и понял, что от карты памяти избавиться не получится, но она нужна только для предварительного старта. Нашел  у себя несколько карт памяти размером 32, 64 и 256 Мб. Сразу скажу, что со старыми картами система почему-то не захотела стартовать, но зато у меня оказалась карта, которая шла в комплекте с пару лет назад купленным фотоаппаратом объемом аж 32 Мб J.
В общем для начала работы нам нужны следующие «ингредиенты»:
1.       Карта памяти размером от 32 Мб.
2.       Любой жесткий диск – чем больше, тем лучше.
3.       Переходник для подключения жестких дисков к ЮСБ (с внешним питанием).
4.       Образ raspbian скачанный из всемирной сети.
5.       Программа Win32DiskImager скачанная от туда же.
6.       Обязательно НОРМАЛЬНЫЙ блок питания на 5 вольт и не меньше 3 Ампер.
 
Если все это есть, то «бубен» нам не понадобиться. Я целый вечер с ним упражнялся, пока не понял, что родной блок питания (идущий в комплекте с малиной) не может нормально запитать одновременно карту памяти и переходник юсб! (питание на сам внешний HDD подавалось отдельно). В тот вечер я так  и не смог сообразить, почему система стартует до программы первоначальной конфигурации, но при подтверждении выбора локали тут же сыпались ошибки чтения диска. Гугл по этому поводу «заливался соловьем» – у всех все работает «с полпинка».
Как обычно просветление пришло утром и я решил сделать «ход конем», выкинул все «дефективные» блоки питания и подключил Raspberry и внешний HDD к недавно приехавшему с «Космодрома»  блоку с такими характеристиками :
Модульный источник питания в металлическом корпусе NED-35A:
AC/DC преобразователь: в кожухе, 35 Вт
выходов 2:  5В @ 5А, 12В @ 1.5А
вход: 85…264VAC / 120…370VDC, -20...60°C.
 
Естественно все сразу завелось - хороший БП наше все!
 
А теперь подробней как заставить Raspbian «переползти» на HDD.
Прежде всего жесткий диск подключаем к «большому брату» с Win7 и запускаем утилиту Win32DiskImager.
Внимание! Лучше отключить все лишние съемные устройства, перепутаете диски – будет весело :).
Указываем в поле Image File путь в скаченному образу Raspbian, ОБЯЗАТЕЛЬНО обратите внимание на выбранную букву диска(справа выпадающий список).
Жмем кнопку Write и образ будет записан на HDD.
Отключаем - подключаем  HDD и видим в системе диск объемом около 60 Мб формата FAT.
Теперь самое время подключить карту памяти и отформатировать ее в FAT.
Копируем, или переносим содержимое HDD на карту памяти(там всего 19 Мб файлов).
На карте памяти редактируем файл cmdline.txt, изменяем параметр /dev/mmcblk0p1 на /dev/sda1 не забываем сохранить изменения.
 
Дальше нам нужно произвести изменения с нашим HDD.  Я уверен, что есть способ и проще, но этот – железобетонный.
Если есть доступ к linux машине то отлично, но если нет, тогда устанавливаем себе виртуалку с Debian(я так и сделал) или любым другим дистрибутивом. А можно просто загрузиться с любого загрузочного Linux диска (привет Puppy http://www.puppyrus.org/).
В linux, после подключения HDD мы уже увидим два диска FAT и EXT4 и кусок неразмеченной области.
На диске EXT4 (скорее всего это будет sda2), нужно отредактировать файл таблицы разделов /etc/fstab, что – бы он выглядел так:

proc                                      /proc           proc    defaults          0       0
/dev/mmcblk0p5            /boot           vfat    defaults          0       2
/dev/sda2                          /                   ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, so no using swapon|off from here on, use  dphys-swapfile swap[on|off]  for that

Изменяем выделенную строку.
Так - же не забываем указать размер раздела подкачки в файле /etc/dphys-swapfile:

CONF_SWAPSIZE=256

При помощи замечательной программы Gparted все оставшееся место используем для создания раздела EXT4 – где будем хранить разную информацию (скачанные из сети файлы, личные фотки и т.д.).
 
Вот и все, теперь правильно извлекаем наш HDD, втыкаем в Raspberry карту памяти и подключаем к USB наш HDD. Включаем систему и производим все первоначальные настройки как обычно.
 
Это все будет отлично работать если к системе будет подключен только один съемный диск, но если мы захотим подключить дополнительный диск (например для копирования каких то файлов) все может сломаться. Вот для таких случаев мы «жестко» пропишем основной (root) раздел по его UUID, этот самый UUID является механизмом присвоения уникальных обозначений каждой файловой системе.
Для просмотра всех UUID выполняем команду:

ls -laF /dev/disk/by-uuid/

и видим примерно следующее:

итого 0
drwxr-xr-x 2 root root 120 Янв  1  1970 ./
drwxr-xr-x 5 root root 100 Янв  1  1970 ../
lrwxrwxrwx 1 root root  15 Янв  1  1970 7A57-8A21 -> ../../mmcblk0p1
lrwxrwxrwx 1 root root  10 Янв  1  1970 aa7a5c08-3f5a-4024-a3b5-a6da55cc20f4 -> ../../sda1
lrwxrwxrwx 1 root root  10 Окт 19 16:18 dfe2d5b4-69ec-4108-88e5-3eb23eb72728 -> ../../sda2
lrwxrwxrwx 1 root root  10 Янв  1  1970 e7169bc6-42ad-42f3-ac77-9afc99bd6a62 -> ../../sda3

Наш системный диск sda2 и соответственно его  UUID равен dfe2d5b4-69ec-4108-88e5-3eb23eb72728, теперь в файле fstab нам нужно заменить /dev/sda2 на UUID= dfe2d5b4-69ec-4108-88e5-3eb23eb72728 и система больше не потеряется.
Но у нас еще остался один раздел на диске для данных /dev/sda3 и мы сразу подключим его к /home/media (мне так «пришло»).
Создаем каталог, в который будем монтировать наш sda3

sudo mkdir /home/media

Устанавливаем права на запись на этот каталог

sudo chmod 777 /home/media

Прописываем в конец файла /etc/fstab команду авто монтирования нашего хранилища:

UUID=e7169bc6-42ad-42f3-ac77-9afc99bd6a62  /home/media ext4  defaults,rw      0 1

 
Окончательное содержимое fstab:

proc            /proc           proc    defaults          0       0
/dev/mmcblk0p5  /boot           vfat    defaults          0       2
UUID=dfe2d5b4-69ec-4108-88e5-3eb23eb72728  /  ext4  defaults,noatime  0       1
UUID=e7169bc6-42ad-42f3-ac77-9afc99bd6a62  /home/media ext4  defaults,rw      0 1

 
И в заключении инструкция, позволяющая перенести действующую систему на HDD  в пару кликов, взято отсюда http://www.raspberrypi.org/phpBB3/viewtopic.php?f=66&t=48273:
1) загрузитесь с карты памяти и выполните все обновления на текущую дату
sudo apt-get update && sudo apt-get upgrade -y
2) подтвердите предложенные изменения
3) подключите внешний  HDD формата EXT4
4) подмонтируйте раздел
sudo mount /dev/sda1 /mnt
5) скопируйте, синхронизируйте все данные на новый раздел
sudo rsync –ax / /mnt/
6) измените расположение root системы
sudo nano /boot/cmdline.txt
замените  /dev/mmcblk0p1  на  /dev/sda1
7) отредактируйте /mnt/etc/fstab
точку монтирования  / замените на  /dev/sda1
8) перезагрузите ситему
sudo shutdown -r now
 
 
На этом «эпопею» с подключением внешнего HDD и переноса на него rasbian считаем законченной, дальше будем наполнять систему нужными программами и утилитами.

С уважением Овсянников К.А.