From 86c51d33ceb2069fd1710f2997b4087593f2379d Mon Sep 17 00:00:00 2001 From: erjemin Date: Sun, 23 Mar 2025 22:27:23 +0300 Subject: [PATCH] =?UTF-8?q?add:=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=8F=D0=B4=D1=80=D0=B0=20Linux=20=D0=B4=D0=BB=D1=8F=20opi5plu?= =?UTF-8?q?s=20(.3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5plus-rebuilding-linux-kernel-for-iscsi.md | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/raspberry-and-orange-pi/opi5plus-rebuilding-linux-kernel-for-iscsi.md b/raspberry-and-orange-pi/opi5plus-rebuilding-linux-kernel-for-iscsi.md index bb4f910..d682fed 100644 --- a/raspberry-and-orange-pi/opi5plus-rebuilding-linux-kernel-for-iscsi.md +++ b/raspberry-and-orange-pi/opi5plus-rebuilding-linux-kernel-for-iscsi.md @@ -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` (для модуля) — появится `` рядом с пунктом. Это означает, что модуль будет собираться как модуль, - а не встраиваться в ядро. Модуль (iscsi_tcp.ko) проще протестировать без перезагрузки. + а не встраиваться в ядро. Модуль (`iscsi_tcp.ko`) проще протестировать без перезагрузки. 4. В нижнем меню выбрать `` и подтвердим сохранение в `.config`. 6. Вернуться в меню выше `SCSI device support` (через нижнее меню ``). 7. Зайти в раздел `SCSI low-level drivers`. @@ -193,6 +198,10 @@ ake ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig 9. Снова сохраняем конфиг в `.config` (через нижнее меню ``). 10. Выйти из `menuconfig` (через нижнее меню ``, три раза). +| Может быть полезно: | +|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| На моём Orange Pi 5 Plus загрузка идет с NVMe диска ([см. как настроить](opi5plus-move-system-to-nvme-or-emmc.md)), и мне было полезно так же включить ещё и систему мониторинга NVMe: `Device Drivers` → `NVME Support`, найти пункт `SNVMe hardware monitoring` и включить его. В нижнем меню выбрать `` и подтвердим сохранение в `.config`. Выйти из `menuconfig` (через нижнее меню ``, три раза). Теперь у меня будет возможность отслеживать состояние 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 ```