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 (разбираемся с ШИМ на пинах)
Продолжение следует...
Orange pi zero 2 переделки
Теперь на OPI zero 2 стоит debian, но это не сильно повлияло на настройки.
Продолжаю ковырять кучку этих забавных машинок.
1. Mount img OPI rw (read/write) как диска в системе. Редактирование img файла.
1. Определить где начинаются разделы в img:
fdisk -l ./new-server-2022-12-19\ 2057.img
Disk ./new-server-2022-12-19 2057.img: 29,72 GiB, 31914983424 bytes, 62333952 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe8ce0794
Device Boot Start End Sectors Size Id Type
./new-server-2022-12-19 2057.img1 8192 61702143 61693952 29,4G 83 Linux
2. Вычислить отступы и примонтировать именно то, что нужно:
# mkdir /mnt/repair
# mount -o loop,rw,sync,offset=$((512*8192)) ./new-server-2022-12-19\ 2057.img /mnt/repair/
ll /mnt/repair/
... изменение файлов ...
Или вариант когда в img файле два раздела:
$ fdisk -l Orangepi5_1.1.4_debian_bullseye_server_linux5.10.110.img
Disk Orangepi5_1.1.4_debian_bullseye_server_linux5.10.110.img: 3,64 GiB, 3904897024 bytes, 7626752 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: CE79B937-B5E8-FE49-8C17-185A0F46F32B
Device Start End Sectors Size Type
Orangepi5_1.1.4_debian_bullseye_server_linux5.10.110.img1 61440 2158591 2097152 1G Linux extended boot
Orangepi5_1.1.4_debian_bullseye_server_linux5.10.110.img2 2158592 7626718 5468127 2,6G Linux filesystem
То есть, мы видим что сектора по 512 байт и в файле img на самом деле спрятано два диска: img1 (загрузка) и img2 (сама система)
Если мы хотим править конфиги с настройками, то нам нужен именно второй диск, с будущей файловой системой.
Монтирую фс с отступом (см. начало второго раздела в img файле):
# mount -o loop,rw,sync,offset=$((512*2158592)) /home/путь_до_файла/Orangepi5_1.1.4_debian_bullseye_server_linux5.10.110.img /mnt/repair/
Можно править и вносить изменения в конфиги (прописать staic ip в настройках или поменять hostmane и т.д.) в /mnt/repair/
Отмонтирую образ:
cd / && umount /mnt/repair
Всё. Наш img файл уже изменён, со всеми внесёнными нами изменениями. Готов к записи на флешку.
2. Отключаю совсем wifi и bluetooth
Отключаю совсем wifi, bluetooth в orangepi zero 2
конечно, после отключения всех ненужных мне сервисов.
Хочу очередной сервер из него сделать, вот и избавляюсь от лишнего.
cat /etc/modprobe.d/blacklist.conf
#=========================================
# Edit by 4eburashk http://csn.net4me.net
# On Wed 21 Dec 2022 05:58:02 AM MSK
#
# отрубаю лишнее на уровне ядра
# напомню, что есть lsmod и modinfo ...
#=========================================
# bluetooth and wifi off:
blacklist btbcm
blacklist btintel
blacklist bluetooth
blacklist hci_uart
blacklist btqca
blacklist btrtl
blacklist bnep
blacklist ecdh_generic
# END