SETARCH(8) Administracja systemem SETARCH(8)

setarch - zmienia zgłaszaną architekturę w środowisku nowego programu i/lub ustawia flagi osobowości

setarch [architektura] [opcje] [program [argument...]]

architektura [opcje] [program [argument...]]

setarch modyfikuje domenę wykonywania i przetwarza flagi osobowości.

Domena wykonywania obecnie wpływa jedynie na wynik polecenia uname -m. Na przykład w systemie AMD64, wykonanie setarch i386 program spowoduje, że program zobaczy i686 zamiast x86_64 jako typ komputera. Domyślnym programem jest /bin/sh.

Od wersji 2.33, argument wiersza polecenia architektura jest opcjonalny a setarch może służyć do zmiany flag osobowości (ADDR_LIMIT_3GB, SHORT_INODE, etc) bez modyfikowania domeny wykonywania.

--list

Wypisuje architektury znane narzędziu setarch. To, czy setarch może faktycznie ustawić każdą z tych architektur, zależy od działającego jądra.

--show[=osobowość]

Pokazuje obecnie aktywną osobowość wraz z flagami. Jeśli poda się argument osobowość, pokazuje ją, zamiast bieżącej. Osobowość jest liczbą szesnastkową, której dopuszczalne wartości opisano w sys/personality.h.

-p, --pid=pid

Przy stosowaniu z --show, pokazuje osobowość i flagi podanego procesu.

--uname-2.6

Powoduje, że podany program zobaczy numer wersji jądra zaczynający się od 2.6. Włącza UNAME26.

-v, --verbose

Więcej szczegółów.

-3, --3gb

Podany program powinien używać co najwyżej 3GB przestrzeni adresowej. Obsługiwane na x86. Włącza ADDR_LIMIT_3GB.

--4gb

Opcja nie odnosi skutku. Zachowano ją tylko ze względu na kompatybilność wsteczną i może być usunięta w przyszłych wydaniach.

-B, --32bit

Ogranicza przestrzeń adresową do 32 bitów, w celu emulacji sprzętu. Obsługiwane na ARM i Alpha. Włącza ADDR_LIMIT_32BIT.

-F, --fdpic-funcptrs

Traktuje wskaźniki funkcji z przestrzeni użytkownika do procedur obsługi sygnałów jako wskaźniki do deskryptorów adresów. Opcja nie odnosi skutku na architekturach nieobsługujących plików binarnych ELF FDPIC. W jądrze v4.14 obsługa ograniczała się do architektur ARM, Blackfin, Fujitsu FR-V oraz SuperH CPU.

-I, --short-inode

Flaga emulująca starą usterkę. Włącza SHORT_INODE.

-L, --addr-compat-layout

Udostępnia starszy układ wirtualnej przestrzeni adresowej. Należy stosować, gdy plik wykonywalny programu nie posiada nagłówka ELF PT_GNU_STACK. Włącza ADDR_COMPAT_LAYOUT.

-R, --addr-no-randomize

Wyłącza stosowanie losowości wirtualnej przestrzeni adresowej. Włącza ADDR_NO_RANDOMIZE.

-S, --whole-seconds

Flaga emulująca starą usterkę. Włącza WHOLE_SECONDS.

-T, --sticky-timeouts

Wywołania systemowe select(2), pselect(2) i ppoll(2) będą zachowywały wartość czasu przeterminowania, zamiast modyfikować ją, aby uwzględnić okres braku uśpienia przy przerwaniu przez procedurę obsługi sygnału. Opcję należy stosować, gdy program polega na tym zachowaniu. Więcej szczegółów w opisie czasu przeterminowania w podręczniku select(2). Włącza STICKY_TIMEOUTS.

-X, --read-implies-exec

Po podaniu opcji PROT_READ mmap(2) doda również bit PROT_EXEC - jak oczekują tego stare pliki wykonywalne x86. Proszę zauważyć, że mechanizm ładujący ELF automatycznie ustawi ten bit, gdy natrafi na stary plik wykonywalny. Włącza READ_IMPLIES_EXEC.

-Z, --mmap-page-zero

Emulacja usterki SVr4, ustawiająca mmap(2) strony zerowej jako tylko do odczytu. Należy stosować, gdy program polega na tym zachowaniu, a jego kod źródłowy jest niedostępny, uniemożliwiając jego poprawę. Włącza MMAP_PAGE_ZERO.

-h, --help

Wyświetla ten tekst i wychodzi.

-V, --version

Wyświetla wersję i wychodzi.

setarch --addr-no-randomize mytestprog
setarch ppc32 rpmbuild --target=ppc --rebuild foo.src.rpm
setarch ppc32 -vL3 rpmbuild --target=ppc --rebuild bar.src.rpm
setarch ppc32 --32bit rpmbuild --target=ppc --rebuild foo.src.rpm
setarch --show
setarch --show=$(cat /proc/9284/personality)
setarch --show --pid 9284

Elliot Lee <sopwith@redhat.com>, Jindrich Novy <jnovy@redhat.com>, Karel Zak <kzak@redhat.com>

personality(2), select(2) *proc_pid_personality(5)

Problemy należy zgłaszać w systemie śledzenia błędów https://github.com/util-linux/util-linux/issues.

Polecenie setarch jest częścią pakietu util-linux, który można pobrać ze strony Archiwum jądra Linux https://www.kernel.org/pub/linux/utils/util-linux/.

2026-09-02 util-linux 2.42.3