add: сборка ядра Linux для opi5plus (.3)

This commit is contained in:
Sergei Erjemin 2025-03-23 22:27:23 +03:00
parent cbf3ae56bb
commit 86c51d33ce

View File

@ -165,27 +165,32 @@ uname -r
nano Makefile
```
И меняем строку `XTRAVERSION =` (у меня это пятая строчка) на:
И устанавливаем модификатор версии ядра, строку `XTRAVERSION =` (у меня это пятая строчка):
```text
EXTRAVERSION = -rockchip-rk3588
```
Копируем конфиг текущего ядра в конфиг для сборки:
Затем копируем конфиг текущего ядра в конфиг для сборки.
```bash
zcat /proc/config.gz > .config
```
`.config` содержит все текущие настройки ядра. Это очень удобно, так как нужно добавить только поддержку нужных модулей
(в нашем случае `iSCSI`), а не настраивать всё с нуля.
## Настройка конфига с iSCSI
Теперь его нужно отредактировать, `.config` чтобы включить `iSCSI`. Заходим в кофигуратор ядра `menuconfig`:
Теперь нужно отредактировать, `.config` чтобы включить `iSCSI`. Заходим в интерфейс конфигуратора ядра `menuconfig`:
```bash
ake ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
```
Используя стрелки на клавиатуре, чтобы двигаться по пунктам меню.
1. Перейди в `Device Drivers``SCSI device support``SCSI Transports`.
2. Найти внутри `iSCSI Initiator over TCP/IP`, с помощью стрелок выбрать его.
2. Найти внутри `iSCSI Transport Attributes`, с помощью стрелок выбрать его.
3. Нажимает `M` (для модуля) — появится `<M>` рядом с пунктом. Это означает, что модуль будет собираться как модуль,
а не встраиваться в ядро. Модуль (iscsi_tcp.ko) проще протестировать без перезагрузки.
а не встраиваться в ядро. Модуль (`iscsi_tcp.ko`) проще протестировать без перезагрузки.
4. В нижнем меню выбрать `<Save>` и подтвердим сохранение в `.config`.
6. Вернуться в меню выше `SCSI device support` (через нижнее меню `<Exit>`).
7. Зайти в раздел `SCSI low-level drivers`.
@ -193,6 +198,10 @@ ake ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
9. Снова сохраняем конфиг в `.config` (через нижнее меню `<Save>`).
10. Выйти из `menuconfig` (через нижнее меню `<Exit>`, три раза).
| Может быть полезно: |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| На моём Orange Pi 5 Plus загрузка идет с NVMe диска ([см. как настроить](opi5plus-move-system-to-nvme-or-emmc.md)), и мне было полезно так же включить ещё и систему мониторинга NVMe: `Device Drivers``NVME Support`, найти пункт `SNVMe hardware monitoring` и включить его. В нижнем меню выбрать `<Save>` и подтвердим сохранение в `.config`. Выйти из `menuconfig` (через нижнее меню `<Exit>`, три раза). Теперь у меня будет возможность отслеживать состояние NVMe-диска (температуру, износ и т.д.) через инструменты вроде `nvme-cli`. |
Проверим, что iSCSI включён:
```bash
grep -E "ISCSI_TCP|SCSI_ISCSI_ATTRS|ISCSI_BOOT" .config
@ -205,6 +214,10 @@ CONFIG_ISCSI_TCP=m
# CONFIG_ISCSI_BOOT_SYSFS is not set
```
| Проверка, что включен мониторинг NVMe (если включили): |
|--------------------------------------------------------------|
| `grep -E "NVME_HWMON" .config` и увидим `CONFIG_NVME_HWMON=y` |
## Компиляция ядра и модулей
Запускаем компиляцию ядра и модулей:
@ -212,18 +225,20 @@ CONFIG_ISCSI_TCP=m
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j8
```
`-j8` — это количество потоков, используй столько, сколько у тебя ядер. Например, если 4 ядра, то `-j4`.
`-j8` — это количество потоков, используем столько, сколько у нас ядер. На Orange Pi 5 Plus восемь ядер. Но, например,
если у вас четыре ядра, то `-j4`.
Компиляция займёт 20-40 минут (Orange Pi 5 Plus). После завершения проверим, что ядро скомпилировалось:
```bash
ls -l arch/arm64/boot/Image
```
Ожидаемый размер: около 40 МБ:
```text
-rw-rw-r-- 1 opi opi 40579584 Mar 22 19:09 arch/arm64/boot/Image
```
Размер должен почти совпать (или полностью совпадать) с размером текущего ядра:
Размер должен почти совпасть (или полностью совпадать) с размером текущего ядра:
```bash
ls -l /boot/Image
```