PowerFlex: Kompilace ovladače PowerFlex SDC na vyžádání
Summary: Tento článek znalostní databáze popisuje, jak povolit kompilaci ovladače PowerFlex SDC na vyžádání v systémech Linux.
Instructions
Tato funkce je určena pro přizpůsobení změnám binárního rozhraní aplikace (ABI) v linuxovém jádře, které mohou způsobit selhání načtení ovladače SDC, předkompilovaného pro jiné jádro.
Historicky instalační balíček SDC pro Linux (RPM/DEB) obsahoval několik modulů jádra SDC pro různá jádra dané distribuce Linuxu. Uživatelé, kteří instalují na distribuci, jako je Ubuntu, která vydává časté aktualizace jádra, mají možnost nastavit službu SDC pro připojení ke vzdálenému úložišti ovladačů SDC společnosti Dell a pokusit se z něj stáhnout SDC.
S novou funkcí mohou uživatelé zkompilovat perfektní shodu ovladače SDC pro své běžící jádro, aniž by se spoléhali na dostupnost odpovídajícího SDC v úložišti ovladače.
Cílová skupina: Uživatelé, kteří často aktualizují svá jádra z bezpečnostních důvodů a kteří používají specializovaná vlastní jádra, mohou mít z této funkce prospěch.
Požadavky
Aby byla kompilace úspěšná, musí být v hostiteli služby SDC nainstalovány následující balíčky:
- Nejnovější verze kompilátoru GNU C (GCC), GCC
- GNU make(1).
- Vývojový balíček jádra pro běžící jádro. Tento balíček je běžně dostupný pod následujícími názvy:
- kernel-devel pro distribuce používající správce balíčků RPM. (Red Hat, SUSE atd.)
- linux-headers pro distribuce používající správce balíčků Debian (Debian, Ubuntu atd.)
Automatická kompilace
na vyžádáníAby byla možná automatická kompilace ovladače SDC na vyžádání, měl by hostitel splňovat všechny požadavky uvedené výše v části Předpoklady . Při spuštění ovladače SDC se služba SDC pokusí zkompilovat ovladač SDC, pokud jsou splněny všechny následující podmínky:
-
SDC, které odpovídá běžícímu jádru, není v mezipaměti ovladače k dispozici.
Podrobnosti o mezipaměti ovladačů naleznete v části Cache ovladačů níže. -
Soubor s názvem
/etc/emc/scaleio/scini_sync/.build_sciniexistuje.
Obsah souboru se ignoruje. Uživatelé by jej však měli ponechat prázdný pro případná budoucí vylepšení.
Soubor lze vytvořit spuštěnímtouch(1).
Ruční sestavení
SDC, měl by hostitel kompilace splňovat všechny požadavky uvedené výše v části Požadavky .
Chcete-li ručně zkompilovat ovladač SDC, postupujte takto:
-
Zkopírujte balíček kompilace z jeho adresáře v mezipaměti ovladače do dočasného adresáře. Umístění balíčku závisí na verzi PowerFlex a distribuci Linuxu.
Například balíček pro PowerFlex 3.6.3 SDC pro distribuce založené na systému Red Hat Enterprise Linux 9 je:/bin/emc/scaleio/scini_sync/driver_cache/RHEL9/3.6.3000.128/Dell-PowerFlex-scini_builder-3.6.3000.128.x86_64.tgz
Podrobnosti o mezipaměti ovladačů naleznete v části Cache ovladačů níže. -
Přejděte do dočasného adresáře a extrahujte balíček kompilace.
Příklad:tar xzf Dell-PowerFlex-scini_builder-3.6.3000.128.x86_64.tgz
-
Spusťte
build_driver.shskript, který se nachází na nejvyšší úrovni extrahovaného obsahu. Skript se bez argumentů pokusí zkompilovat ovladač pro spuštěné jádro.
Chcete-li kompilovat pro jiné jádro, zadejte cestu k adresářům s hlavičkami tohoto jádra pomocí "-o" a "-s" argumenty příkazového řádku.
Další informace o vyvolání spusťte příkaz:build_driver.sh -h
-
Výstup kompilačního procesu se vytiskne na standardní výstup.
Po úspěšné kompilaci lze výsledný soubor ovladače SDC, scini.ko, nalézt na adrese./ini/scini.ko. -
Zkopírujte soubor ovladače z hostitele kompilace do cílového hostitele SDC do adresáře odpovídajícího verzi cílového jádra ve stejném umístění jako balíček kompilace v mezipaměti ovladače.
Například u ovladače podporovaného pro jádro verze 5.14.0-362.24.1.el9_3.x86_64 je cílová cesta k souboru ovladače následující:/bin/emc/scaleio/scini_sync/driver_cache/RHEL9/3.6.3000.128/5.14.0-362.24.1.el9_3.x86_64/scini.ko.
Additional Information
Cache
ovladačeOvladač SDC úspěšně zkompilovaný pro konkrétní jádro bude zkopírován do příslušného adresáře mezipaměti ovladače a jeho kompilace nebude znovu spuštěna.
Umístění mezipaměti ovladače je /bin/emc/scaleio/scini_sync/drive_cache.
Protokol
sestaveníPokud je povolena automatická kompilace na vyžádání, jsou všechny protokoly kompilace připojeny k /bin/emc/scaleio/scini_sync/driver_build.log.
Úspěšná kompilace končí zprávami podobnými následujícím:
make: Entering directory '/usr/src/linux-headers-5.15.0-30-generic' "Following additional compilation's conditions are defined:" BLK_MQ_HEADER BLK_DEV_MAX_SEGMENTS SOCKET_HAS_NET_IN_CREATE BIO_BI_BDEV BIO_BI_STATUS BLK_QUEUE_FLAG_FUNCS BLK_INITIALIZE_RMQ_FN WAIT_QUEUE_ENTRY_T HAS_SCSI_REQUEST HAS_SCSI_REQ HAS_SCSI_CMND HAS_SCSI_IOCTL HAS_SCSI_IOCTL_WITH_GENDISK HAS_QUEUE_FLAG_DISCARD HAS_DISK_LIVE_IN_GENHD CC [M] /tmp/PowerFlex_driver_build_hpoM6l/ini/./linux/api/api_main.o CC [M] /tmp/PowerFlex_driver_build_hpoM6l/ini/./linux/api/api_mos.o CC [M] /tmp/PowerFlex_driver_build_hpoM6l/ini/./linux/api/api_net.o CC [M] /tmp/PowerFlex_driver_build_hpoM6l/ini/./linux/api/api_ioctl.o CC [M] /tmp/PowerFlex_driver_build_hpoM6l/ini/./linux/api/api_blk_io.o CC [M] /tmp/PowerFlex_driver_build_hpoM6l/ini/./linux/api/api_blk_dev.o LD [M] /tmp/PowerFlex_driver_build_hpoM6l/ini/scini.o "Following additional compilation's conditions are defined:" BLK_MQ_HEADER BLK_DEV_MAX_SEGMENTS SOCKET_HAS_NET_IN_CREATE BIO_BI_BDEV BIO_BI_STATUS BLK_QUEUE_FLAG_FUNCS BLK_INITIALIZE_RMQ_FN WAIT_QUEUE_ENTRY_T HAS_SCSI_REQUEST HAS_SCSI_REQ HAS_SCSI_CMND HAS_SCSI_IOCTL HAS_SCSI_IOCTL_WITH_GENDISK HAS_QUEUE_FLAG_DISCARD HAS_DISK_LIVE_IN_GENHD MODPOST /tmp/PowerFlex_driver_build_hpoM6l/ini/Module.symvers CC [M] /tmp/PowerFlex_driver_build_hpoM6l/ini/scini.mod.o LD [M] /tmp/PowerFlex_driver_build_hpoM6l/ini/scini.ko BTF [M] /tmp/PowerFlex_driver_build_hpoM6l/ini/scini.ko Skipping BTF generation for /tmp/PowerFlex_driver_build_hpoM6l/ini/scini.ko due to unavailability of vmlinux make: Leaving directory '/usr/src/linux-headers-5.15.0-30-generic' 02-Apr-2024 11:46:48 INFO: Success.
Inicializační kontejner
SDCInicializační kontejner SDC je pro použití této funkce předem nakonfigurovaný. Zahrnuje gcc a vytváří balíčky a /etc/emc/scaleio/scini_sync/.build_scini soubor je k dispozici. Aby však kompilace proběhla úspěšně, musí být adresář hlavičky jádra hostitelského jádra namapován na kontejner, aby bylo možné /usr/src. Chcete-li například spustit kontejner ručně pomocí dockeru, po instalaci správného balíčku kernel-devel na hostitele přidejte -v/usr/src:/usr/src do příkazového řádku, aby byl adresář kernel headers dostupný pro kompilační skript.
Omezení
Může nastat situace, kdy kompilátor GCC, který je k dispozici v distribuci Linuxu hostitele, není dostatečně pokročilý na to, aby zkompiloval SDC proti nějakému jádru. Tato situace by měla být vzácná, protože se pravděpodobně bude jednat o vlastní jádro a ne o jádro společné pro tuto distribuci. V tomto případě musí uživatel nainstalovat pokročilejší GCC z nestandardního repozitáře balíčků a umístění tohoto GCC bude muset být zadáno v $PATH. Neexistuje žádný automatický způsob, jak poskytnout alternativní cestu GCC ke službě SDC.
Verze
3.6.3 nebo vyšší
4.5.2 nebo vyšší
Video instrukce