SETARCH(8) System Administration SETARCH(8)

setarch - تغییر معماری گزارش‌شده و تنظیم پرچم‌های شخصی‌سازی

setarch [arch] [گزینه‌ها] [program [argument...]]

setarch --list|-h|-V

arch [گزینه‌ها] [program [argument...]]

دستور setarch دامنه‌های اجرا و پرچم‌های شخصی‌سازی فرایند را تغییر می‌دهد.

دامنه‌های اجرا در حال حاضر تنها بر خروجی uname -m تأثیر می‌گذارند. به عنوان مثال، در یک سیستم AMD64، اجرای setarch i386 program باعث می‌شود که program نوع ماشین را به جای x86_64، به صورت i686 ببیند. همچنین می‌توان از آن برای تنظیم گزینه‌های مختلف شخصی‌سازی استفاده کرد. برنامه پیش‌فرض /bin/sh است.

از نسخه 2.33 به بعد، آرگومان خط فرمان arch اختیاری است و می‌توان از setarch برای تغییر پرچم‌های شخصی‌سازی (مانند ADDR_LIMIT_*، SHORT_INODE و غیره) بدون تغییر دامنه اجرا استفاده کرد.

--list

فهرست کردن معماری‌هایی که setarch می‌شناسد. این‌که آیا setarch واقعاً می‌تواند هر یک از این معماری‌ها را تنظیم کند، به هسته در حال اجرا بستگی دارد.

--show[=personality]

نمایش شخصی‌سازی و پرچم‌های فعال فعلی. اگر آرگومان personality ارائه شود، به جای مورد فعلی نمایش داده می‌شود. personality یک عدد هگزادسیمال با مقادیری است که در sys/personality.h توصیف شده است.

--uname-2.6

باعث می‌شود که program نسخه هسته را با شروع از 2.6 ببیند. گزینه UNAME26 را فعال می‌کند.

-v, --verbose

حالت پرگو (نمایش جزئیات بیشتر).

-3, --3gb

مشخص می‌کند که program باید حداکثر از ۳ گیگابایت فضای آدرس استفاده کند. در x86 پشتیبانی می‌شود. گزینه ADDR_LIMIT_3GB را فعال می‌کند.

--4gb

این گزینه هیچ تأثیری ندارد. تنها برای سازگاری با گذشته نگه داشته شده است و ممکن است در نسخه‌های آینده حذف شود.

-B, --32bit

محدود کردن فضای آدرس به ۳۲ بیت برای شبیه‌سازی سخت‌افزار. در ARM و Alpha پشتیبانی می‌شود. گزینه ADDR_LIMIT_32BIT را فعال می‌کند.

-F, --fdpic-funcptrs

رفتار با اشاره‌گرهای تابع در فضای کاربری به گرداننده‌های سیگنال به عنوان اشاره‌گر به توصیف‌کننده‌های آدرس. این گزینه در معماری‌هایی که از باینری‌های ELF نوع FDPIC پشتیبانی نمی‌کنند تأثیری ندارد. در نسخه 4.14 هسته، پشتیبانی به معماری‌های پردازنده ARM، Blackfin، Fujitsu FR-V و SuperH محدود است.

-I, --short-inode

پرچم منسوخ‌شده برای شبیه‌سازی باگ. گزینه SHORT_INODE را فعال می‌کند.

-L, --addr-compat-layout

ارائه چیدمان سازگار با گذشته برای فضای آدرس مجازی. زمانی استفاده می‌شود که فایل باینری program فاقد هدر ELF از نوع PT_GNU_STACK باشد. گزینه ADDR_COMPAT_LAYOUT را فعال می‌کند.

-R, --addr-no-randomize

غیرفعال کردن تصادفی‌سازی فضای آدرس مجازی (ASLR). گزینه ADDR_NO_RANDOMIZE را فعال می‌کند.

-S, --whole-seconds

پرچم منسوخ‌شده برای شبیه‌سازی باگ. گزینه WHOLE_SECONDS را فعال می‌کند.

-T, --sticky-timeouts

باعث می‌شود فراخوانی‌های سیستمی select(2)، pselect(2) و ppoll(2) به جای تغییر مقدار مهلت زمانی برای انعکاس مدت زمانی که پس از قطع شدن توسط یک گرداننده سیگنال خوابیده نشده است، مقدار آن را حفظ کنند. زمانی استفاده می‌شود که program به این رفتار وابسته باشد. برای جزئیات بیشتر به توضیحات مهلت زمانی در صفحه راهنمای select(2) مراجعه کنید. گزینه STICKY_TIMEOUTS را فعال می‌کند.

-X, --read-implies-exec

اگر این گزینه تنظیم شود، mmap(2) همراه با PROT_READ بیت PROT_EXEC را نیز اضافه خواهد کرد - همان‌طور که باینری‌های قدیمی x86 انتظار دارند. توجه داشته باشید که بارگذار ELF هنگام مواجهه با یک باینری قدیمی، این بیت را به طور خودکار تنظیم می‌کند. گزینه READ_IMPLIES_EXEC را فعال می‌کند.

-Z, --mmap-page-zero

شبیه‌سازی باگ SVr4 که صفحه صفر mmap(2) را به صورت فقط‌خواندنی تنظیم می‌کند. زمانی استفاده می‌شود که program به این رفتار وابسته است و کد منبع آن برای اصلاح در دسترس نیست. گزینه MMAP_PAGE_ZERO را فعال می‌کند.

-h, --help

نمایش متن راهنما و خروج.

-V, --version

نمایش نسخه و خروج.

setarch --addr-no-randomize mytestprog
setarch ppc32 rpmbuild --target=ppc --rebuild foo.src.rpm
setarch ppc32 -v -vL3 rpmbuild --target=ppc --rebuild bar.src.rpm
setarch ppc32 --32bit rpmbuild --target=ppc --rebuild foo.src.rpm

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

personality(2), select(2)

برای گزارش باگ‌ها، از سامانه ردیابی مشکلات https://github.com/util-linux/util-linux/issues.

دستور setarch بخشی از بسته util-linux است که می‌تواند از بایگانی هسته لینوکس https://www.kernel.org/pub/linux/utils/util-linux. دریافت شود.

2026-06-16 util-linux 2.41.5