Jump to content
XPEnology Community

Firs

Transition Member
  • Posts

    15
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by Firs

  1. В 14.06.2023 в 13:35, Mordent сказал:

    Воткнул сегодня 7.2.0-64570. На чистую. Представился ds3622xs+.

    все как в мануале до момента подсовывания дров сетевухи и acpi. Вместо этого! (вместо означает, что их добавлять не надо)

    ./rploader.sh ext ds3622xsp-7.2.0-64570 add https://github.com/pocopico/tcrp-addons/raw/main/all-modules/rpext-index.json
    ./rploader.sh ext ds3622xsp-7.2.0-64570 add https://github.com/pocopico/tcrp-addons/raw/main/eudev/rpext-index.json
    ./rploader.sh backup
    ./rploader.sh build ds3622xsp-7.2.0-64570 withfriend

     

     

    У вас корректно работает acpi на 7.2.0-64570? Я имею ввиду завершение работы по кнопке питания?

    У меня нет, работает только virtio сеть.

    Proxmox 8.0.3

  2. Upd. 

    Всё, разобрался.

    В DS3622xs+ 7.1.1-42962 Update 2

    модуль: https://github.com/pocopico/redpill-load/raw/develop/redpill-acpid/rpext-index.json

    и правда не работает, но зато работает

    https://raw.githubusercontent.com/pocopico/rp-ext/master/redpill-acpid/rpext-index.json

     

    Возьмите на заметку, кто будет обновляться на этой версии.

  3. Обновился до версии DS3622xs+ 7.1.1-42962 Update 2 и перестало работать выключение через acpi.

    Хотя при сборке подключен модуль: https://github.com/pocopico/redpill-load/raw/develop/redpill-acpid/rpext-index.json

    Инсталляция под Proxmox 7.2, загрузчик tinycore-redpill v0.9.3.0

    На предыдущей версии DSM 7.1-42661 Update 1, acpi работал нормально.

     

    Кто нибудь может подтвердить это или опровергнуть? 

  4. 22 часа назад, Firs сказал:

    Я попытался обновить загрузчик до версии v0.8.0.0 и получил ошибку:

    Найдено новое устройство <vid=0627, pid=0001> — не соответствует ожидаемому <vid=46f4, pid=0001>

     

     

    I managed to update the bootloader v0.8.0.0
    I once again went through all the compilation steps, starting with downloading the file from github.
    Probably last time, I made some mistake at the configuration stage :(

  5. I'm running XPEnology under Proxmox 7.2

    I tried to update the bootloader to version v0.8.0.0, and I get an error:

    Found new device <vid=0627, pid=0001> - didn't match expected <vid=46f4, pid=0001>

     

    On version v0.4.6 everything worked.

    My user_config.json

    Скрытый текст

     

    {
      "extra_cmdline": {
        "pid": "0x0001",
        "vid": "0x46f4",
        "sn": "xxx",
        "mac1": "xxx",
        "SataPortMap": "66",
        "DiskIdxMap": "0600"
      },
      "synoinfo": {

              "internalportcfg" : "0xffff",
              "maxdisks" : "16",
              "support_bde_internal_10g" : "no",
              "support_disk_compatibility" : "no",
              "support_memory_compatibility" : "no"


    },
      "ramdisk_copy": {

        
    }

    }

     

     

    I tried changing in the grub.cfg (to vid=0627)

    But, but the error remains and becomes "reverse":

    Found new device <vid=46f4, pid=0001> - didn't match expected <vid=0627, pid=0001>

     

    I don't understand what's going on :)

    -----------

    Google Translate

  6. В 03.01.2021 в 15:52, Th3B3st1990 сказал:

     

    Переодически Syno теряет соединение с ИБП. почему-то меняется номер usb порта с ttyUSB0 на ttyUSB1. можно как-то сделать чтоб Syno сам автоматом подхватывал порт в такой ситуации ?

    Можно попробовать в ups.conf добавить, вместо port = /dev/ttyUSB0

    port = /dev/serial/by-id/usb-POWERCOM_CO.__LTD._USB_to_Serial-if00-port0

    ну или как он там будет называться у вас

  7. 6 часов назад, Skyinfire сказал:

    Я не нашел его в листах совместимости того самого "extra.lzma for ds3615 v4.8".

    Я так понимаю, эти листы до лампы, если все управление идет через Proxmox...

    Да, когда на машине стоит Proxmox, на всё железо мы используем стандартные драйвера debian. В этом случае мы можем ставить какие угодно контроллеры, виртуальный DSM про контроллер не будет ничего знать, для него это будут диски подключенные по SATA интерфейсу.

    Если хотите можно сделать raid средствами самого аппаратного контроллера и отдать DSM уже готовый том.

    • Like 1
  8. Не знаю актуально ещё или нет.

    Есть рабочий вариант на 12 дисков с большим потенциалом расширения практически до бесконечности.


    У меня реализована такая схема:

    На машине стоит система виртуализации Proxmox. SAS/SATA диски подцеплены на контроллер LSI 9211-8i (можно купить подешману Fujitsu D2607-8i и перешить).

    Внутри крутится DSM, которой напрямую прокинуты диски как SATA устройства. Диски на самом железе можно тасовать и втыкать как угодно, т.к. они имеют уникальные UUID, и цепляются к DSM непосредственно под своими ID.

    (например: sata0: /dev/disk/by-id/ata-WDC_WD100EMAZ-00WJTA0_1DGNDE1Z,discard=on,size=9314G,serial=1DGNDE1Z)

    Можно, и нужно прописать в *.conf виртуалки серийники дисков, тогда они будут видны в DSM и их будет легко идентифицировать.

    Всё работает отлично, и есть полная совместимость с "железным" DSM, достаточно воткнуть эти диски в "оригинальный" NAS.


    Теперь о расширении. Если воткнуть в хост побольше оперативки, можно наделать таких виртуалок с DSM вагон и тележку.

    Например, у нас 200 дисков, каждой машине хотим отдать 12 штук, нужно 16 виртуалок. Каждой можно выделить 4 гига оперативки. Итого нужно около 64 гигов хосту, чтобы всё это потянуть (самому Proxmox тоже останется, можно не переживать).

    Дальше уже этими массивами по 12 дисков вертим как хотим. Хотим используем как отдельные тома, хотим, объединяем при помощи PetaSpace в один огромный виртуальный том и т.д.

    А можно пойти ещё дальше, и сделать, ну скажем, 16 томов raid6 по 12 дисков на самом proxmox, тем же mdadm, или в ZFS, да как угодно, и эти 16 томов отдать одной единственной виртуальной DSM. Правда в этом случае, понятное дело, не будет обратной совместимости дисков с "оригинальной" DSM.

    Но, с другой стороны, это будет обычный linux raid, который вы можете собрать  на любой машине и прочитать данные.


    Есть, правда один маленький нюанс. В версии DSM 6.1, можно скомпилить драйвер virtio для сети, и подцепить всё по 10G, а вот в версии 6.2, облом. Мне не удалось скомпилить virtio (вернее скомпилить можно, но он валится с ошибкой), и приходится сидеть на "стоковом" e1000e, который 1G. Можно запустить vmxnet3, но он тоже почему-то выше 1G не заводится :(

    В принципе можно прокинуть в DSM непосредственно саму сетевуху 10G и оно даже будет работать. Но вот как быть, если у нас будет 16 виртуалок, не знаю. Не 16 же сетевух ставить :)

    Одним словом, если нужно 10G, то придётся сидеть на DSM 6.1 (такой конфиг работает стабильно уже года 3 у меня).


    Виртуализация отличная штука. Более того, при достаточно мощном железе вы там же, на proxmox, можете запускать что угодно, ну, контроллер домена на винде, например. Любые фантазии :)

    • Thanks 1
  9. 18 часов назад, ars_viper сказал:

    Если не затруднит можно расписать подробнее?

    Да уж куда подробнее. Я описал все этапы максимально подробно. Возможно, для DSM 6.2.3 понадобится какая нибудь незначительная адаптация, в виде других путей или версии того же NUT, но в целом должно быть одинаково.

    Но, мой совет, купите UPS совместимый с Synology "из коробки". Какой нибудь APC Back-UPS стоит недорого, это сэкономит кучу времени и сил, т.к. IMP-525ap ну очень капризный аппарат.

  10. Небольшое дополнение.

    Чтобы при отключении/включении USB кабеля не приходилось вручную перезапускать службы, можно немного дополнить настройки:

     

    Создаём файл /usr/lib/udev/rules.d/99-usb-serial.rules:

    SUBSYSTEMS=="tty", ATTRS{manufacturer}=="POWERCOM CO., LTD.", ATTRS{product}=="USB to Serial", KERNEL=="ttyUSB[0123]", SYMLINK+="powercom"

    Конец файла /usr/lib/udev/script/tty-util.sh приводим к следующему виду:

    case $action in
            add)
                    add_handler
                    /usr/syno/etc/rc.sysv/ups-usb.sh start
                    ;;
            remove)
                    remove_handler
                    upsdrvctl stop
                    ;;
            *)
                    ;;
    Esac

    Редактируем файл /usr/syno/etc/ups/ups.conf (заменяем порт на /dev/powercom)

     [ups]
            driver = powercom
            port = /dev/powercom
            type = IMP

    В конце файла /etc/rc, перед exit 0 добавляем создание симлинка:

    #Запуск UPS
    ln -s /dev/ttyUSB0 /dev/powercom
    /usr/syno/etc/rc.sysv/ups-usb.sh start
    
    exit 0

     

  11. 3 часа назад, Lordbl4 сказал:

    после установки обновлений драйвера не слетят?

    Уверен что всё слетит. Придётся сохранить скомпилированные драйвера и конфиги, чтобы после обновления их "подсунуть" обратно.

  12. Есть у меня старенький UPS Powercom IMP-425AP. Давно хотел его подключить к Synology, но дело осложнялось тем, что он является устройством типа USB to Serial, и официально не поддерживается.

    В интернете гуглится статья на эту тему, по адресу: https://forum.synology.com/enu/viewtopic.php?f=39&t=17658

    Но статья давно устарела, т.к. там идёт речь о DSM 3.0-1337

     

    Сразу предупреждаю, я не очень "грамотный" пользователь *nux систем, но, собрав по крупицам некоторую информацию, я всё же смог подключить свой UPS Powercom IMP-425AP к DSM 6.1-15047

    Может, я где-то допустил ошибки, но и итоге всё работает. Надеюсь мой опыт будет кому-то полезен.

     

    И так, наш UPS в системе определяется как:

    Bus 002 Device 004: ID 0d9f:0002 Powercom Co., Ltd Black Knight PRO / WOW Uninterruptible Power Supply (Cypress HID->COM RS232)

    (С таким ID 0d9f:0002 есть целая серия старых IMP-*25AP)

     

    Для DSM 6.1-15047 я использую загрузчик Jun's Loader v1.02b

    Вначале мы воспользуемся советами, описанными в этой статье: https://xpenology.com/forum/topic/7187-how-to-build-and-inject-missing-drivers-in-jun-loader-102a/

     

    Качаем исходный код ядра: https://sourceforge.net/projects/dsgpl/files/Synology%20NAS%20GPL%20Source/15047branch/bromolow-source/linux-3.10.x.txz/download

    Synology 3615xs построен на архитектуре bromolow, нам нужна версия 15047 (я использую эту версию, т.к. в ней работает нужный мне VirtualBox)

     

    Устанавливаем плагин debian-chroot ( https://synocommunity.com/package/debian-chroot ) из раздела сообщества.

    Запускаем chroot:

    /var/packages/debian-chroot/scripts/start-stop-status chroot

    Ставим пакеты

    apt-get update
    apt-get upgrade
    apt-get install locales
    dpkg-reconfigure locales
    dpkg-reconfigure tzdata
    apt-get install mc make gcc build-essential kernel-wedge libncurses5 libncurses5-dev libelf-dev binutils-dev kexec-tools makedumpfile fakeroot linux-kernel* lzma

    Создаём рабочий каталог «/volume1/@appstore/debian-chroot/var/chroottarget/test/»

    Распаковываем в каталог /volume1/@appstore/debian-chroot/var/chroottarget/test/ исходники ядра linux-3.10.x.txz

    Заходим в каталог linux-3.10.x и запускаем

    cp synoconfigs/bromolow .config
    Делаем резервную копию конфигурации
    make ARCH="x86_64" oldconfig
    Настраиваем конфигурацию
    make ARCH="x86_64" menuconfig

    Выбираем «М» напротив драйвера Device Drivers/USB support/USB Serial Converter support/USB Cypress M8 USB Serial Driver

    Cypress.thumb.gif.7027c5e52b90d97f337fb6a19fe53810.gif

    Сохраняем конфигурацию и компилируем модули
    make ARCH="x86_64" modules
    Копируем скомпилированные модули cypress_m8.ko, usbcore.ko, usbserial.ko в рабочий каталог synology /lib/modules/
    Не забываем проверять/выставлять права файлам: chmod 644

     

    Дальше переходим к работе с пакетом NUT. Это нужно, чтобы скомпилировать модуль powercom

    Цитата

    powercom.c производится переопределение types[type].name=KIN даже если в настройках задан type=IMP для UPS Powercom IMP-425AP и подобных, что приводит к ошибочному определению battery.charge: 0.0 Также, неправильно отображаются частота и напряжение сети.)

    Информацию по исправлению драйвера я нашёл тут:

    http://forum.pcm.ru/viewtopic.php?f=3&t=2627

    Качаем исходники NUT 2.4.1 http://pkgs.fedoraproject.org/repo/extras/nut/nut-2.4.1.tar.gz/609ebaf2123fc7171d25a6c742dd7d66/nut-2.4.1.tar.gz
    Распаковываем их в каталог /volume1/@appstore/debian-chroot/var/chroottarget/test/
    В каталоге /volume1/@appstore/debian-chroot/var/chroottarget/test/nut-2.4.1 создаём файл патча «patch-nut» с содержимым: 
    --- drivers/powercom.c	2009-02-17 12:20:48.000000000 +0300
    +++ drivers/powercom.c	2010-03-02 15:48:25.354735038 +0300
    @@ -852,21 +852,30 @@
    
    	/* setup flow control */
    	types[type].flowControl.setup_flow_control();
    -	if (!strncmp(types[type].name, "BNT",3) || !strcmp(types[type].name, "KIN") || !strcmp(types[type].name, "IMP")){
    +	if (getval("type") == NULL){
    		if (!ups_getinfo()) return;
    		if (raw_data[UPSVERSION]==0xFF){
    			types[type].name="IMP";
    -			model=IMPmodels[raw_data[MODELNUMBER]/16];
    		}
    		if (raw_data[MODELNAME]==0x42){
    			if (!strcmp(types[type].name, "BNT-other"))
    				types[type].name="BNT-other";
    			else
    				types[type].name="BNT";
    -			model=BNTmodels[raw_data[MODELNUMBER]/16];
    		}
    		if (raw_data[MODELNAME]==0x4B){
    			types[type].name="KIN";
    +		}
    +	}
    +	if (!strncmp(types[type].name, "BNT",3) || !strcmp(types[type].name, "KIN") || !strcmp(types[type].name, "IMP")){
    +		if (!ups_getinfo()) return;
    +		if (!strcmp(types[type].name, "IMP")){
    +			model=IMPmodels[raw_data[MODELNUMBER]/16];
    +		}
    +		if (!strncmp(types[type].name, "BNT",3)){
    +			model=BNTmodels[raw_data[MODELNUMBER]/16];
    +		}
    +		if (!strcmp(types[type].name, "KIN")){
    			model=KINmodels[raw_data[MODELNUMBER]/16];
    		}
    		linevoltage=voltages[raw_data[MODELNUMBER]%16];

    Применяем патч:

    patch -p0 -l <patch-nut
    В драйвере powercom по умолчанию включена самопроверка батарей при каждом старте драйвера. Настройки или возможности отключения этой проверки – нет.
    Метод устранения этой особенности я подсмотрел здесь: http://forum.lissyara.su/viewtopic.php?t=17735&start=25

    Если Вам это не актуально, можете данный шаг пропустить.

    В файле: /volume1/@appstore/debian-chroot/var/chroottarget/test/nut-2.4.1/drivers/powercom.c

    находим строчки:

    ...
            upsdebugx(1,"Detected: %s , %dV",modelname,linevoltage);
                    if (ser_send_char (upsfd, BATTERY_TEST) != 1) {
                            upslogx(LOG_NOTICE, "writing error");
                            dstate_datastale();
                            return;
                    }
    ...
    и комментируем лишнее:
    ...
             upsdebugx(1,"Detected: %s , %dV",modelname,linevoltage);
                    /*if (ser_send_char (upsfd, BATTERY_TEST) != 1) {
                            upslogx(LOG_NOTICE, "writing error");
                            dstate_datastale();
                            return;
                    }*/
    ...
    Компилируем NUT (пути для конфигов и т.д. выставляем такие же, как у synology):
    ./configure --with-user=root --with-group=root --prefix=/usr/syno/etc/ups  --sysconfdir=/usr/syno/etc/ups --datadir=/usr/syno/share
    make
    Копируем скомпилированный файл powercom из каталога  /volume1/@appstore/debian-chroot/var/chroottarget/test/nut-2.4.1/drivers/  в рабочий каталог synology /bin
    
    Не забываем проверять/выставлять права файлам: chmod 644

     

    Теперь нужно добавить скомпилированные драйвера, в загрузчик Jun's Loader v1.02b.

    Используем osfmount (под windows), чтобы извлечь «extra.lzma» (сжатый файл cpio) из synoboot.img (находится «extra.lzma» на втором разделе FAT). 
    Osfmount часто используют для редактирования файла grub.cfg в synoboot.img. 

    («extra.lzma» - содержит дополнительные драйвера *.ko, которые стартуют при загрузке)

    
    Скопируем «extra.lzma» в /volume1/@appstore/debian-chroot/var/chroottarget/test/extra-drv
    Для распаковки «extra.lzma» выполним команду: 
    lzma -d extra.lzma
    Далее, извлекаем файлы из «extra»:
    
    cpio -idv <extra
    После чего файл «extra.lzma» можно удалить.
    
    
    В распакованный каталог …/usr/lib/modules/ копируем скомпилированные модули cypress_m8.ko, usbcore.ko, usbserial.ko, а в /etc редактируем файл rc.modules 
    В конце списка EXTRA_MODULES добавляем свои три драйвера, без *.ko
    rc.modules выглядит примерно так:
    
    EXTRA_MODULES="mii mdio libphy atl1 atl1e atl1c alx uio ipg jme skge sky2 ptp_pch pch_gbe qla3xxx qlcnic qlge netxen_nic sfc e1000 pcnet32 vmxnet3 bnx2 libcrc32c bnx2x cnic e1000e igb ixgbe r8101 r8168 r8169 tg3 usbnet ax88179_178a button evdev ohci-hcd cypress_m8 usbcore usbserial"
    DISK_MODULES="BusLogic vmw_pvscsi megaraid_mm megaraid_mbox megaraid scsi_transport_spi mptbase mptscsih mptspi mptsas mptctl ata_piix megaraid_sas mpt2sas mpt3sas"
    EXTRA_FIRMWARES="bnx2/bnx2-rv2p-09ax-6.0.17.fw bnx2/bnx2-rv2p-09-6.0.17.fw bnx2/bnx2-rv2p-06-6.0.15.fw tigon/tg3_tso5.bin tigon/tg3_tso.bin tigon/tg3.bin"
    Дальше, внутри каталога, /volume1/@appstore/debian-chroot/var/chroottarget/test/extra-drv,

    создаём новый файл cpio, и сжимаем его lzma. Полученный, новый «extra.lzma» записывается в каталог уровнем выше.

    Выполняем команду:
    (find . -name modprobe && find . \! -name modprobe) | cpio --owner root:root -oH newc | lzma -8 > ../extra.lzma
    Полученный файл «extra.lzma», при помощи osfmount, записываем обратно в образ synoboot.img.
    

     

    Теперь произведём настройку DSM 6.1

    Выполняем:

    insmod /lib/modules/cypress_m8.ko
    mknod /dev/ttyUSB0 c 188 0
    chmod 644 /dev/ttyUSB0

    Настраиваем скорость порта:

    stty -F /dev/ttyUSB0 speed 1200 cs8 raw

    (Дальнейшая настройка подсмотрена тут: https://xpenology.com/forum/topic/4413-dsm-52-5592-update-4-amp-serial-apc-ups/#comment-38621)

     

    Редактируем файл: /etc/rc

    Добавляем в KERNEL_MODULES драйвера «usblp cypress_m8 usbserial»:
            if [ $KERNEL_VCODE -ge $(KernelVersionCode "4.4") ]; then
                    KERNEL_MODULES="usblp cypress_m8 usbserial llc p8022 psnap usbcore quota_tree quota_v2 crc-ccitt crc-itu-t zlib_inflate dm-bufio dm-snapshot"
            else
                    KERNEL_MODULES="usblp cypress_m8 usbserial llc p8022 psnap usbcore quota_tree quota_v2 crc-ccitt crc-itu-t zlib_inflate dm-snapshot"
            fi
    В конце файла, перед exit 0 добавляем строку запуска службы UPS:
    
    /usr/syno/etc/rc.sysv/ups-usb.sh start
    В файле /usr/syno/etc/rc.sysv/ups-usb.sh правим строку
    StartAllDrv() {
            local DRV_LIST="usbhid-ups blazer_usb bcmxcp_usb richcomm_usb tripplite_usb"
    на
    
    StartAllDrv() {
            local DRV_LIST="powercom usbhid-ups blazer_usb bcmxcp_usb richcomm_usb tripplite_usb"
    Редактируем файл /usr/syno/etc/ups/ups.conf
     [ups]
            driver = powercom
            port = /dev/ttyUSB0
            type = IMP
    Загружаем файл https://github.com/networkupstools/nut/raw/master/data/cmdvartab

    и копируем его в каталог /usr/syno/share/

    На этом всё.
    После перезагрузки, UPS должен автоматически появиться в GUI:
    
    P.S. Посмотреть более подробный статус UPS можно командой: upsc ups
    
    admin@serv01:~$ upsc ups
    battery.charge: 100.0
    driver.name: powercom
    driver.parameter.pollinterval: 5
    driver.parameter.port: /dev/ttyUSB0
    driver.parameter.type: IMP
    driver.version: 2.4.1
    driver.version.internal: 0.12
    input.frequency: 50.00
    input.voltage: 226.0
    input.voltage.nominal: 220
    output.frequency: 50.00
    output.voltage: 226.0
    ups.load: 12.0
    ups.mfr: PowerCom
    ups.model: IMP-425AP
    ups.model.type: IMP
    ups.serial: Unknown
    ups.status: OL

     

    IMP-425AP.png

    • Like 6
×
×
  • Create New...