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>