6554

33 分钟

#Bash 的 setarch 命令

setarch [ARCH] [OPTION]... [CMD [ARG]...]

功能

使用指定的架构或个性化标志运行程序。

类型

可执行文件(/usr/bin/setarch),属于 util-linux

参数

  • ARCH - 要设为的架构
  • OPTION 选项:
    • --list - 列出已知架构
    • --show[=personality] - 显示当前的个性化标志
    • --uname-2.6 - 使程序检测到的内核版本号为 2.6
    • -v, --verbose - 显示详细信息
    • -3, --3gb - 指定程序最多使用 3GB 的地址空间(3GB 用户空间,1GB 内核空间)
    • --4gb - 指定程序最多使用 4GB 的地址空间(4GB 用户空间,没有内核空间);此选项已废弃不再生效
    • -B, --32bit - 将地址空间设为 32 位以模拟硬件;支持 ARM 和 Alpha 架构
    • -F, --fdpic-funcptrs - 将用户空间函数指向信号处理程序的指针视为指向地址描述符的指针;仅支持 ARM, Blackfin, Fujitsu FR-V 和 SuperH 架构
    • -I, --short-inode - 使用 16 位 inode 号;此选项已废弃不再生效
    • -L, --addr-compat-layout - 提供传统虚拟地址空间布局
    • -R, --addr-no-randomize - 禁用虚拟地址空间的随机化
    • -S, --whole-seconds - 时间值截断为整数秒;此选项已废弃不再生效
    • -T, --sticky-timeouts - 这使得 select(2)pselect(2)ppoll(2) 系统调用保留超时值
    • -X, --read-implies-exec - 如果设置此项,则 mmap(2) PROT_READ 还会添加 `PROT_EXEC`` 位
    • -Z, --mmap-page-zero - SVr4 错误模拟,会将 mmap(2) 第 0 页设置为只读。
    • --help - 显示帮助
    • --version - 显示版本
  • CMD - 要运行的命令
  • ARG - 传递给 CMD 的参数列表

#示例

查看已知架构

$ setarch --list
uname26
linux32
linux64
i386
i486
i586
i686
athlon
x86_64

查看当前个性化标志

$ setarch --show
PER_LINUX

设置架构

$ arch          # 查看架构
x86_64
$ setarch i386 arch
i686
$ setarch linux32 arch
i686

#推荐阅读

#手册

更新: 2026/3/6

作者: PlanC

创建: 2026/3/6