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 nano Makefile
``` ```
И меняем строку `XTRAVERSION =` (у меня это пятая строчка) на: И устанавливаем модификатор версии ядра, строку `XTRAVERSION =` (у меня это пятая строчка):
```text ```text
EXTRAVERSION = -rockchip-rk3588 EXTRAVERSION = -rockchip-rk3588
``` ```
Копируем конфиг текущего ядра в конфиг для сборки:
Затем копируем конфиг текущего ядра в конфиг для сборки.
```bash ```bash
zcat /proc/config.gz > .config zcat /proc/config.gz > .config
``` ```
`.config` содержит все текущие настройки ядра. Это очень удобно, так как нужно добавить только поддержку нужных модулей
(в нашем случае `iSCSI`), а не настраивать всё с нуля.
## Настройка конфига с iSCSI ## Настройка конфига с iSCSI
Теперь его нужно отредактировать, `.config` чтобы включить `iSCSI`. Заходим в кофигуратор ядра `menuconfig`: Теперь нужно отредактировать, `.config` чтобы включить `iSCSI`. Заходим в интерфейс конфигуратора ядра `menuconfig`:
```bash ```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`. 1. Перейди в `Device Drivers``SCSI device support``SCSI Transports`.
2. Найти внутри `iSCSI Initiator over TCP/IP`, с помощью стрелок выбрать его. 2. Найти внутри `iSCSI Transport Attributes`, с помощью стрелок выбрать его.
3. Нажимает `M` (для модуля) — появится `<M>` рядом с пунктом. Это означает, что модуль будет собираться как модуль, 3. Нажимает `M` (для модуля) — появится `<M>` рядом с пунктом. Это означает, что модуль будет собираться как модуль,
а не встраиваться в ядро. Модуль (iscsi_tcp.ko) проще протестировать без перезагрузки. а не встраиваться в ядро. Модуль (`iscsi_tcp.ko`) проще протестировать без перезагрузки.
4. В нижнем меню выбрать `<Save>` и подтвердим сохранение в `.config`. 4. В нижнем меню выбрать `<Save>` и подтвердим сохранение в `.config`.
6. Вернуться в меню выше `SCSI device support` (через нижнее меню `<Exit>`). 6. Вернуться в меню выше `SCSI device support` (через нижнее меню `<Exit>`).
7. Зайти в раздел `SCSI low-level drivers`. 7. Зайти в раздел `SCSI low-level drivers`.
@ -193,6 +198,10 @@ ake ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
9. Снова сохраняем конфиг в `.config` (через нижнее меню `<Save>`). 9. Снова сохраняем конфиг в `.config` (через нижнее меню `<Save>`).
10. Выйти из `menuconfig` (через нижнее меню `<Exit>`, три раза). 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 включён: Проверим, что iSCSI включён:
```bash ```bash
grep -E "ISCSI_TCP|SCSI_ISCSI_ATTRS|ISCSI_BOOT" .config 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 # 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 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j8
``` ```
`-j8` — это количество потоков, используй столько, сколько у тебя ядер. Например, если 4 ядра, то `-j4`. `-j8` — это количество потоков, используем столько, сколько у нас ядер. На Orange Pi 5 Plus восемь ядер. Но, например,
если у вас четыре ядра, то `-j4`.
Компиляция займёт 20-40 минут (Orange Pi 5 Plus). После завершения проверим, что ядро скомпилировалось: Компиляция займёт 20-40 минут (Orange Pi 5 Plus). После завершения проверим, что ядро скомпилировалось:
```bash ```bash
ls -l arch/arm64/boot/Image ls -l arch/arm64/boot/Image
``` ```
Ожидаемый размер: около 40 МБ: Ожидаемый размер: около 40 МБ:
```text ```text
-rw-rw-r-- 1 opi opi 40579584 Mar 22 19:09 arch/arm64/boot/Image -rw-rw-r-- 1 opi opi 40579584 Mar 22 19:09 arch/arm64/boot/Image
``` ```
Размер должен почти совпать (или полностью совпадать) с размером текущего ядра: Размер должен почти совпасть (или полностью совпадать) с размером текущего ядра:
```bash ```bash
ls -l /boot/Image ls -l /boot/Image
``` ```