SKI(1)
π SKI(1) β General Commands Manual π
okay bestie, buckle up, because we're talking about ski and bskinc β the IA-64 Instruction Set Simulator. yes, that's the whole manual name, and yes, it's giving iconic. it lives in the General Commands Manual section, and i'm about to make it make sense. β¨
πΈ NAME πΈ
ski, bskinc β an IA-64 Instruction Set Simulator, no cap. π¦
β¨ SYNOPSIS β¨
so here's the whole vibe of how you call them:
ski [-help] [-i file] [-rest file] [-nonet] [-srcroot dir]
[-forceuser] [-forcesystem] [-strace] [-palen n] [-valen n]
[-ridlen n] [-keylen n] [-grfile n]
bskinc [-help] [-i file] [-rest file] [-noconsole] [-nonet]
[-forceuser] [-forcesystem] [-icnt file] [-strace] [-palen n]
[-valen n] [-ridlen n] [-keylen n] [-grfile n]
like, that's the whole energy right there. notice the two of them are almost the same but not quite β ski has -srcroot dir, bskinc has -noconsole and -icnt file. keep your eyes open, bestie. π
π DESCRIPTION π
so. Ski is an IA-64 instruction set simulator from Hewlett-Packard Company. it simulates the IA-64 architecture exactly as defined by the architecture manual. and before you ask β no, it is not a full platform simulator. like, there is no system chipset simulation and no PCI bus simulation happening here. but it does support the full instruction set of the architecture, including privileged instructions and all their associated semantics. so it eats, basically. π₯
Ski can run in two operating modes: user-mode and system-mode.
in user mode, you run user level applications directly on top of the simulator. the emulation stops at the system call boundary, and then the system call gets emulated by calling the host OS β like x86 Linux. Ski handles the conversions between 64-bit and 32-bit parameters as needed. this is what makes user programs execute fast. most system calls are emulated, though ngl, the emulation is not always 100 percent accurate. π
in system-mode, operating-system kernel development and execution is possible, because interrupts and virtual memory behaviors are simulated. in this mode you can literally run the Linux kernel, and once it's booted, user applications can be run on top of the simulated kernel. main character energy fr fr. π
the ski simulator ships with three different interfaces. the simplest one is batch mode, called bskinc β a shell running a script.
then there's the full-text curses-based mode, where you can interact with the simulator to inspect code, set breakpoints, etc. that version is called ski.
and the way that all these modes provide the same core simulation, only the interface is different? obsessed. π«Ά
π OPTIONS π
-helpβ prints the list of supported options for the specific interface you need. not all options are available in every possible interface, so don't come for me when one's missing. π-nonetβ when you're running in kernel mode, this tells the simulator not to probe for existing Ethernet interfaces on the host. that way the Linux kernel won't detect any device. super useful when you don't want to run the simulator as root (or setuid to root), because for networking support, root privilege is required. π-srcrootdirectory β specify the directory where the program sources can be found. this one is only useful when combined with the "mixed mode" display (see thepmcommand inside Ski).-noconsoleβ do not use an xterm as the default output console; use the current tty instead. only useful when ski is invoked in batch mode, because it lets you run in the current terminal window. this is used mostly within theNUE(1)environment.-forceuserβ force the simulator into user-mode. normally the simulator auto-detects which mode to run in, but this option exists so you can force user-mode in case the auto-detection fails for some reason. backup plan, bestie. π©Ή-forcesystemβ force the simulator into system-mode. same deal: auto-detection is the default, but this forces system-mode if that detection fails for some reason.-straceβ displays all the system calls executed by the user level programs. only valid when running in user-mode. the output looks like a highly simplified version of the output fromstrace(1).-ifile β process initialization <file> at startup.-icntβ store instruction counts in <file>.-restβ restore simulation state from <file>.-statsβ display execution run-time and instruction rate.-palen<n> β implemented physical address bits. default:n=63-valen<n> β implemented virtual address bits. default:n=61-ridlen<n> β implemented RR.rid bits. default:n=24-keylen<n> β implemented PKR.key bits. default:n=24-grlen<n> β general Register file size. default:n=128
π Running in user-mode π
to run a simple IA-64 program in user-mode only, you just type this:
$ bskinc my_ia64_prg
this will force execution in the current terminal and in batch mode. periodt.
IMPORTANT: to run dynamically linked IA-64 binaries, you need IA-64 versions of the necessary shared libraries installed. on x86 Linux, the easiest way to do this is by installing the NUE(1) environment. don't skip this step, bestie, it will not work otherwise. π
π§ Running in system-mode π§
to run a Linux kernel on top of the simulator, you need several components, and i need you to have all of them:
- a Linux kernel compiled to use the HP-simulator. it needs to have the
CONFIG_SIMSERIAL,CONFIG_SIMSCSI, andCONFIG_SIMETHoptions turned on. - a boot loader that goes with it (compiled with
make bootin the kernel source tree). - a disk image file with IA-64 binaries on it.
please refer to extra documentation to learn in greater detail how to build those 3 components. (yes, three. count them. π )
once you have those components, you launch execution by simply typing:
$ ski bootloader vmlinux simscsi=/path/sd simeth=eth0
in this example, the simscsi= option informs the Linux kernel where to find the SCSI disk images. here /path/sd is just the prefix β the kernel will automatically look for /path/sd{a,b,c,...}. so the disk image must use the full name, i.e., /path/sda. and simeth= indicates which local interface to use for the simulated Ethernet driver. the simulator must be run with root privilege to get the networking emulation to work. π
you can specify other options on the command line, just like you would do at the LILO boot prompt for instance.
π Getting help inside ski π
when you run ski in interactive mode via ski, you can get help on commands by typing help. so simple, so iconic.
when running in curses mode, you must make sure you have the PAGER environment variable set to whatever is your preferred pager command. it's usually set to more(1) or less(1). if the variable does not exist, ski will default to using less(1). note that less(1) usually behaves the best when interacting with ski. trust. β¨
π¦ ENVIRONMENT VARIABLES π¦
SKI_USE_FAKE_XTERMβ if this environment variable is set (the value is unimportant), theski-fake-xterm(1)utility will be used for output to stdout, instead ofxterm(1). this will result in a temporary file created in the current working directory with a name of the form"ski.XXXXXX", where"XXXXXX"can be any six characters.
π SEE ALSO π
β AUTHORS β
- Hewlett-Packard Company
- Stephane Eranian
<eranian@hpl.hp.com> - David Mosberger
<davidm@hpl.hp.com>
and that's the whole page, bestie!! π written by the lovely folks at Hewlett-Packard Company, filed under Development Tools, in the SKI(1) corner of the manual. go forth and simulate. πβ¨π¦
π¦ where this page comes from
- fedora 43: ski 1.5.0-1.fc43 Β· GPL-2.0-only and GPL-2.0-or-later
- fedora 44: ski 1.5.0-1.fc43 Β· GPL-2.0-only and GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms