PowerFlex: Kompilacja na żądanie sterownika PowerFlex SDC

Summary: W tym artykule opartym na wiedzy opisano sposób włączania kompilacji na żądanie sterownika PowerFlex SDC w systemach Linux.

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Instructions

Ta funkcja ma na celu uwzględnienie zmian interfejsu ABI (Application Binary Interface) w jądrze Linuksa, które mogą spowodować niepowodzenie załadowania sterownika SDC, wstępnie skompilowanego dla innego jądra.

Historycznie rzecz biorąc, pakiet instalacyjny SDC dla systemu Linux (RPM/DEB) zawierał kilka modułów jądra SDC dla różnych jąder tej dystrybucji Linuksa. W przypadku użytkowników instalujących usługi w dystrybucjach takich jak Ubuntu, które często aktualizują jądro, istnieje możliwość skonfigurowania usługi SDC w celu połączenia się ze zdalnym repozytorium sterowników SDC firmy Dell i próby pobrania z niego SDC.

Dzięki nowej funkcji użytkownicy mogą skompilować idealne dopasowanie sterownika SDC do uruchomionego jądra bez polegania na dostępności pasującego SDC w repozytorium sterownika.

Uwaga: Funkcja samodzielnego kompilowania jest obsługiwana tylko w systemach Linux, w których SDC jest obsługiwane. Szczegółowe informacje można znaleźć w matrycy zgodności PowerFlex.

Docelowej: Użytkownicy, którzy często aktualizują swoje jądra ze względów bezpieczeństwa i którzy uruchamiają wyspecjalizowane niestandardowe jądra, mogą skorzystać z tej funkcji.

 

Warunki wstępne
Aby procedura kompilacji zakończyła się pomyślnie, następujące pakiety muszą być zainstalowane na hoście usługi SDC:

  • Najnowsza wersja kompilatora GNU C (GCC), GCC
  • GNU make(1).
  • Pakiet deweloperski jądra dla uruchomionego jądra. Ten pakiet jest powszechnie dostępny pod następującymi nazwami:
    • kernel-devel dla dystrybucji korzystających z menedżera pakietów RPM. (Red Hat, SUSE itd.)
    • linux-headers dla dystrybucji korzystających z menedżera pakietów Debiana (Debian, Ubuntu, itd.)

Automatyczna kompilacja
na żądanieAby umożliwić automatyczną kompilację na żądanie sterownika SDC, host powinien spełniać wszystkie wymagania wstępne wymienione powyżej w sekcji Wymagania wstępne . Podczas wywoływania sterownika SDC usługa SDC próbuje skompilować sterownik SDC, jeśli są spełnione wszystkie następujące warunki:

  • Klient SDC zgodny z uruchomionym jądrem jest niedostępny w pamięci podręcznej sterowników.
    Szczegółowe informacje na temat pamięci podręcznej sterowników można znaleźć w sekcji Pamięć podręczna sterowników poniżej.

  • Plik o nazwie /etc/emc/scaleio/scini_sync/.build_scini Istnieje.
    Zawartość pliku jest ignorowana. Użytkownicy powinni jednak pozostawić go pustym na potrzeby ewentualnych przyszłych ulepszeń.
    Plik można utworzyć, uruchamiając touch(1) .

Ręczna kompilacja
SDC, host kompilacji powinien spełniać wszystkie wymagania wstępne wymienione w sekcji Wymagania wstępne powyżej.
Aby ręcznie skompilować sterownik SDC, wykonaj następujące kroki:

  1. Skopiuj pakiet kompilacji z katalogu w pamięci podręcznej sterowników do katalogu tymczasowego. Lokalizacja pakietu zależy od wersji systemu PowerFlex i dystrybucji systemu Linux.
    Na przykład pakiet PowerFlex 3.6.3 SDC dla dystrybucji opartych na systemie Red Hat Enterprise Linux 9 to: /bin/emc/scaleio/scini_sync/driver_cache/RHEL9/3.6.3000.128/Dell-PowerFlex-scini_builder-3.6.3000.128.x86_64.tgz
    Szczegółowe informacje na temat pamięci podręcznej sterowników można znaleźć w sekcji Pamięć podręczna sterowników poniżej.

  2. Przejdź do katalogu tymczasowego i wyodrębnij pakiet kompilacji.
    Przykład:

    tar xzf Dell-PowerFlex-scini_builder-3.6.3000.128.x86_64.tgz
  3. Uruchom build_driver.sh skrypt, znajdujący się na najwyższym poziomie wyodrębnianej treści. Bez argumentów skrypt próbuje skompilować sterownik dla uruchomionego jądra.
    Aby skompilować dla innego jądra, podaj ścieżkę do katalogów nagłówkowych tego jądra za pomocą "-o" oraz "-s" argumenty wiersza poleceń.
    Aby uzyskać więcej informacji na temat wywoływania, uruchom polecenie:

    build_driver.sh -h
  4. Dane wyjściowe procesu kompilacji są drukowane na standardowe wyjście.
    Po udanej kompilacji wynikowy plik sterownika SDC, scini.ko, można znaleźć pod adresem ./ini/scini.ko.

  5. Skopiuj plik sterownika z hosta kompilacji do docelowego hosta SDC do katalogu zgodnego z docelową wersją jądra, w tej samej lokalizacji co pakiet kompilacji, w pamięci podręcznej sterowników.
    Na przykład w przypadku sterownika zgodnego z jądrem w wersji 5.14.0-362.24.1.el9_3.x86_64 ścieżka docelowa dla pliku sterownika to /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

Pamięć podręczna
sterownikówPomyślnie skompilowany sterownik SDC dla określonego jądra zostanie skopiowany do odpowiedniego katalogu w pamięci podręcznej sterowników, a jego kompilacja nie zostanie ponownie uruchomiona.
Lokalizacja pamięci podręcznej sterowników to /bin/emc/scaleio/scini_sync/drive_cache.

Dziennik kompilacji
Po włączeniu automatycznej kompilacji na żądanie wszystkie dzienniki kompilacji są dołączane do /bin/emc/scaleio/scini_sync/driver_build.log.
Pomyślna kompilacja kończy się komunikatami podobnymi do następujących:

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.

Kontener
inicjacyjny SDCKontener init SDC jest wstępnie skonfigurowany do korzystania z tej funkcji. Obejmuje gcc i tworzy pakiety, a /etc/emc/scaleio/scini_sync/.build_scini jest dostępny. Jednak, aby kompilacje zakończyły się pomyślnie, katalog nagłówków jądra hosta musi być zmapowany na kontener, do /usr/src. Na przykład, aby uruchomić kontener ręcznie za pomocą platformy Docker, po zainstalowaniu poprawnego pakietu kernel-devel na hoście dodaj -v/usr/src:/usr/src do wiersza poleceń, aby katalog nagłówków jądra był dostępny dla skryptu kompilacji.

Ograniczenie
Może zaistnieć sytuacja, w której kompilator GCC udostępniony w dystrybucji Linuksa hosta nie jest wystarczająco zaawansowany, aby skompilować SDC względem jakiegoś jądra. Taka sytuacja powinna być rzadka, ponieważ prawdopodobnie będzie dotyczyła jądra niestandardowego, a nie wspólnego dla tej dystrybucji. W takim przypadku użytkownik musi zainstalować bardziej zaawansowany GCC z niestandardowego repozytorium pakietów, a lokalizacja tego GCC będzie musiała zostać określona w $PATH. Nie ma automatycznego sposobu na podanie alternatywnej ścieżki GCC do usługi SDC.

Wersje
3.6.3 lub nowsza
4.5.2 lub nowsza

Instrukcje wideo

 

Affected Products

PowerFlex rack, PowerFlex Appliance, PowerFlex Software

Products

PowerFlex custom node
Article Properties
Article Number: 000224134
Article Type: How To
Last Modified: 18 Sep 2024
Version:  6
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.