net4me.net

Linux технологии, сети и электроника

Orange pi, Raspbery pi, Banana pi и linux

Примеры использования linux утилит в различных ситуациях из жизни.
Настройка, примеры, конфиги. Сеть, диски, память, пины и прочее прочее...
Постараюсь поддерживать порядок, но не обещаю классификации.

Linux tips

Orange pi tips

1. Бэкап. Копия образа диска orange pi.

Как я резал размер img флешки orange pi
orange pi zero 2 c ubuntu server

0. Операции с дисками, поэтому нужны рутовые права. sudo -i или что-то подобное.
# Операции долгие, запаситесь терпением.
1. слил dd образ с флешки (именно /dev/sdc а не /dev/sdc1 т.е. копия диска, а не раздела)
# dd if=/dev/sdc of=opi_my_big.img bs=1M conv=fsync status=progress
# получил opi_my_big.img аж в 32 Гига.
# конечно захотелось уменьшить эту громадину.
# И возникает вопрос "на сколько отрезать", чтобы не отрезать лишнего?
# Резать буду truncate.
# Для того чтобы уменьшить размер не повредив данные и узнать на сколько можно потом обрезать, придётся примонтировать образ локально и поработать над ним:


# Только для того, чтобы уменьшить размер loop0p1 и запомнить цифры. Остальные партиции не трогаем вообще!
2. # losetup -P --find --show opi_my_big.img 
/dev/loop0
3. # lsblk 
NAME      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0       7:0    0  29,7G  0 loop 
└─loop0p1 259:0    0  29,4G  0 part 
sda         8:0    0 111,8G  0 disk 
4. # gparted /dev/loop0 
# уменьшил на сколько хотел loop0p1 применил изменения, закрыл.
5. # fdisk -l /dev/loop0
Device       Boot Start     End Sectors  Size Id Type
/dev/loop0p1       8192 6117375 6109184  2,9G 83 Linux
# Вот они, искомые цифры.

# Имея цифры, считаем на сколько резать оригинальный img.
$ bc <<< "(8192+6109184+1)*512"
3132097024B # всего полезного. Остальное можно отрезать.
# Нам нужны были только цифры. loop0 можно отцеплять:
# losetup -d /dev/loop0



5. Резка. С получеными цифрами - обрезаем оригинал:
# truncate --size=3132097024 opi_my_big.img
# Ну и можно переименовать в # mv opi_my_big.img opi_my_small.img

# Вопрос, а почему бы просто не скопировать dd if=loop0 в img?
# Да потому что в img попадут не 3G как можно предположить, а все 32G. Disk /dev/loop0: 29,74 GiB. Увы.

6.Проверка:
# Беру флешку на 8Г
# dd if=opi_my_small.img of=/dev/sdc bs=1M conv=fsync status=progress
3129999360 bytes (3,1 GB, 2,9 GiB) copied, 526 s, 5,9 MB/s 
2987+1 records in
2987+1 records out
3132097024 bytes (3,1 GB, 2,9 GiB) copied, 609,049 s, 5,1 MB/s

# Блин. теперь на 8G флешке образ в 3G...
# Да, загрузился, но внутри 3G же...

# Об этом СМ ДАЛЬШЕ.

2. Orange pi + ubuntu изменение размера диска и файловой системы.

Ситуация: Записан img из бэкапа, работал, настраивал и вдруг упс...
Заметил что Флешка большая, а места впритирку...
Действие происходит на работающей Orange Pi (удалённо).
Usage of /: 46% of 2.9G
Не проблема, растягиваю.

1. Смотрим что есть:
# df -h /
/dev/mmcblk1p1  2.9G  1.3G  1.6G  46% /
# fdisk -l
Device         Boot Start     End Sectors  Size Id Type
/dev/mmcblk1p1       8192 6117375 6109184  2.9G 83 Linux

А флешка у нас явно больше...
Запоминаем сектор, откуда начинается раздел ( в данном примере с 8192 ) нам понадобятся эти цифры.


2. Меняем размер раздела диска. Раздвигаем:
# fdisk /dev/mmcblk1
Command (m for help): p
/dev/mmcblk1p1       8192 6117375 6109184  2.9G 83 Linux
Command (m for help): d
# Раздел у меня один, поэтому по дефолту выбираю 1 (т.е. удаляю партишн на котором сижу сам сейчас)
# Теперь создаю новый, основной, с началом в запомненном секторе:
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-15523839, default 2048): 8192
# Вот тут пригодились цифры начала раздела (сектор), которые запоминали!
# Концовку я доверил автоматике по дефолту т.е. нажал энтер.
Last sector, +/-sectors or +/-size{K,M,G,T,P} (8192-15523839, default 15523839):
Created a new partition 1 of type 'Linux' and of size 7.4 GiB.
Partition #1 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: N
Command (m for help): w


3. reboot
Можно fdisk -l посмотреть что раздел уже такой как нам надо, большой.
/dev/mmcblk1p1       8192 15523839 15515648  7.4G 83 Linux
Однако df -h / нам всё-равно покажет куцый размерчик нашей ФС.
/dev/mmcblk1p1  2.9G  1.3G  1.6G  46% /


4. Меняем размер Файловой Системы.
# resize2fs /dev/mmcblk1
подождали
# df -h
/dev/mmcblk1p1  7.3G  1.3G  5.9G  18% /

Другое дело! Есть где развернуться!
Я еще разок ребутнулся, на всякий и продолжил.

3. Orange pi + ubuntu снова мигаем диодиками.

Мигаем тем что есть "из коробки". А есть зеленый и красный диоды работы.

echo 1 > /sys/class/leds/red\:power/brightness
echo 0 > /sys/class/leds/red\:power/brightness
echo 1 > /sys/class/leds/green\:status
echo 0 > /sys/class/leds/green\:status

Раз уж мы полезли в виртуальную ФС /sys/... Создадим новые классы пинов:
#!/bin/bash
echo 73 > /sys/class/gpio/export             # Создаём. А это pin №7 на большой шине opi zero2
echo out > /sys/class/gpio/gpio73/direction  # Назначаем как output
while true; do
  echo 0 > /sys/class/gpio/gpio73/value      # Выключен.
  sleep 0.25
  echo 1 > /sys/class/gpio/gpio73/value      # Включен.
  sleep 0.25
done
# END
Для понимания, вот таблица.
+------+-----+----------+------+---+  Zero 2  +---+------+----------+-----+------+
| GPIO | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | GPIO |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
|      |     |     3.3V |      |   |  1 || 2  |   |      | 5V       |     |      |
|  229 |   0 |    SDA.3 |  OFF | 0 |  3 || 4  |   |      | 5V       |     |      |
|  228 |   1 |    SCL.3 |  OFF | 0 |  5 || 6  |   |      | GND      |     |      |
|   73 |   2 |      PC9 |  OFF | 0 |  7 || 8  | 0 | ALT2 | TXD.5    | 3   | 226  |
|      |     |      GND |      |   |  9 || 10 | 0 | ALT2 | RXD.5    | 4   | 227  |
|   70 |   5 |      PC6 | ALT5 | 0 | 11 || 12 | 0 | OFF  | PC11     | 6   | 75   |
|   69 |   7 |      PC5 | ALT5 | 0 | 13 || 14 |   |      | GND      |     |      |
|   72 |   8 |      PC8 |  OFF | 0 | 15 || 16 | 0 | OFF  | PC15     | 9   | 79   |
|      |     |     3.3V |      |   | 17 || 18 | 0 | OFF  | PC14     | 10  | 78   |
|  231 |  11 |   MOSI.1 | ALT4 | 0 | 19 || 20 |   |      | GND      |     |      |
|  232 |  12 |   MISO.1 | ALT4 | 0 | 21 || 22 | 0 | OFF  | PC7      | 13  | 71   |
|  230 |  14 |   SCLK.1 | ALT4 | 0 | 23 || 24 | 0 | ALT4 | CE.1     | 15  | 233  |
|      |     |      GND |      |   | 25 || 26 | 0 | OFF  | PC10     | 16  | 74   |
|   65 |  17 |      PC1 |  OFF | 0 | 27 || 28 |   |      |          |     |      |
|  272 |  18 |     PI16 |  OFF | 0 | 29 || 30 |   |      |          |     |      |
|  262 |  19 |      PI6 |  OFF | 0 | 31 || 32 |   |      |          |     |      |
|  234 |  20 |     PH10 | ALT3 | 0 | 33 || 34 |   |      |          |     |      |
+------+-----+----------+------+---+----++----+---+------+----------+-----+------+
| GPIO | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | GPIO |
+------+-----+----------+------+---+  Zero 2  +---+------+----------+-----+------+
Или можно воспользоваться инструментарием https://github.com/orangepi-xunlong/wiringOP управления пинами.

4. Orange pi zero2 и PWM (разбираемся с ШИМ на пинах)

Продолжение следует...