Проверено на Orange pi zero 2. Приобрести которую можно тут:
Orange pi zero 2: http://alii.pub/68uelr
Orange pi zero 2 с платой расширения usb и audio: http://alii.pub/68uepn
Orange pi zero 2 с корпусом: http://alii.pub/68uere
Дешевые не плохие SSD можно приобрести тут: https://alii.pub/6jlgay
Переходник USB-SATA: https://alii.pub/6jlgs9
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
ВСТУПЛЕНИЕ:
Все Вы знаете, что если держать операционную систему на обычной micro sd карточке, то она в скором времени придет в негодность. Например, если у нас установлен Linux с Home Assistant, то флешка обычно приходит в негодность через год. И придется ее менять.
С HDD дела обстоят куда лучше. HDD/SSD работают гораздо дольше чем флешки и могут прослужить вам верой и правдой очень долго.
По этой причине одноплатные компьютеры Raspberry pi 4 выигрывают другие одноплатники. Из-за того, что умеют грузиться с жесткого диска по USB.
Но на самом деле есть способ “кастыльный” который и любой другой SBC одноплатный компьютер заставит грузиться с жесткого диска по USB.
Что мы можем сделать. Мы можем U-boot оставить на Microsd карточке и настроить все так, что при загрузке одноплатного компьютера U-boot будет искать HDD с операционной системой и грузиться уже из него.
И получится, что у нас будет вставлена Microsd карточка в одноплатник и жесткий диск подключен по usb к нему. В этом и есть “костыль”. Но так как на microsd карточке у нас только u-boot и обращаться к флешке компьютер будет только при загрузке. То эта флешка у нас должна прослужить очень долго. А все остальные процессы чтения и записи будут уже происходить на жестком диске.
Такой способ будет работать я думаю на любом одноплатном компьютере. Но я буду показывать на примере Orange pi zero 2.
НАСТРОЙКА:
Для начала давайте посмотрим какие у нас диски присутствуют в системе. Для этого вводим команду:
sudo lsblk
Тут мы видим только флешку. Этот диск называется mmcblk1 и у него есть один раздел, который называется mmcblk1p1. Разделов может быть много у диска. Ну и видим что у него размер 14.3 Гигобайта.
Давайте теперь (ради интереса) проверим скорость данной флешки (Она у меня старая и я думаю не быстрая.). Для того чтоб узнать скорость накопителя выполним команду:
hdparm -t –direct /dev/mmcblk1
где /dev/mmcblk1 – это путь к носителю который мы хотим протестировать.
Видим, что скорость даного носителя 21.91 мб/c. Запоминаем. Далее протестируем HDD.
Следующей командой проверим где у нас установлена операционная система. Точнее мы точно знаем что она сейчас на Micro sd флешке. Но я просто покажу способ как это можно проверить. Проверяется это команой:
mount
Тут много всего выводится, но нас интересует только корневой каталог “/” . Собственно я его выделил. Видимо что он находится на /dev/mmcblk1p1 – это и есть наша флешка.
Далее подключаем к usb порту жесткий диск. У меня это старенький 2.5 жесткий диск от ноутбука на 80Гб.
и Вводим команду чтоб посмотреть как он определился в системе:
sudo lsblk
видим, что новый диск называется sda и имеет 3 раздела sda1, sda2, sda3. Диск имеет размер 74.5Гигобайт.
Эти три раздела нам нужно уничтожить. Чтоб диск был чистый. Удалять будем встроенной утилитой fdisk.
Чтоб войти в утилиту fdisk конкретно на диске sda вводим команду:
sudo fdisk /dev/sda
после ввода этой команды мы войдем в программу fdisk. Тут нам нужно ввести букву “d” что означает delete тоесть удалить.
После ввода буквы “d” попросит ввести цифру раздела. у нас разделы sda1,sda2,sda3. следовательно sda1 -это 1 и так далее. повторяем 3 раза это действие удаляя каждый раздел.
После удаления пишем букву “w” – write. Которая применит к диску удаление томов.
Ну и еще раз проверим все диски командой sudo lsblk
Видим, что диск чистый без разделов. просто sda и все.
Теперь нам нужно клонировать диск с флешки mmcblk1 на usb жесткий диск sda. Для этого введем команду:
sudo cat /dev/mmcblk1 > /dev/sda
Это займет некоторое время. В консоли у Вас ничего писаться не будет. ПРосто нужно подождать. По завершении процесса у Вас снова появится курсор для ввода команд.
Ну и после завершения кланирования выведем еще раз список носителей:
sudo lsblk
Видим, что диск sda стал такой-же. Раздел sda1 стал так-же 14.3 G. Получилась точная копия диска mmclk1p1.
Далее введем команду blkid для того чтоб посмотреть уникальные номера дисков uuid. Для этого введем команду:
sudo blkid
Так как мы диск клонировали, обратите внимание что у /dev/mkblk1p1 и у /dev/sda1 одинаковые UUID. Следовательно при загрузке операционной системы, uboot возьмет первый попавшийся диск с этим uuid. И не факт, что это будет жесткий диск.
По этому нам нужно изменить uuid у флешки /dev/mkblk1p1. Для этого введем команду:
sudo tune2fs -U random /dev/mmcblk1p1
После этого введем еще раз команду с uuid дисков:
sudo blkid
Обратите внимание что у диска /dev/mmcblk1p1 uuid поменялся. Этого мы собственно и добивались.
Далее нам нужно объяснить системе что нужно всегда грузиться с /dev/sda1 . А не спрашивать постоянно. Чтоб это сделать нужно ввести команду:
sudo e2fsck -yf /dev/sda1
На этом настройка закончена дисков. Теперь перегрузим систему и она уже загрузится с жесткого диска.
sudo reboot
Ну и давайте убедимся, что система загрузилась непосредственно с HDD. Для этого введем команду:
sudo mount
И видим, что корневой каталог “/” линукс находится теперь на /dev/sda1. Собственно что и хотели получить.
Теперь можем эксплуатировать свой жесткий диск и радоваться его долголетию.
А теперь бонусом для владельцев orange pi расскажу еще один момент. У меня на orange pi zero 2 установлена ubuntu с своими сервисами от orange pi.
Если мы обратим внимание на наши диски
sudo lsblk
То мы увидим что сам диск sda весом 74.5 Гигобайт. А раздел наш sda1 только 14.3 Ггб. как и флешка. И хочется расширить дисковое пространство на все 80 Ггб жесткого диска.
Так вот в ubuntu от orange pi это делается всего лишь одной командой.
sudo systemctl start orangepi-resize-filesystem.service
Ну и после ввода этой команды видим, что логический раздел sda1 стал занимать все пространство жесткого диска sda.
НА этом пожалуй все. Надеюсь кому-то было это интересно. Мне так очень понравился такой вариант. сэкономит флешки).