Difference between revisions of "FEXBash"

From FEX-Emu Wiki
Jump to navigation Jump to search
(Created page with "FEXBash is a utility program provided by FEX-emu for quickly spinning up a bash instance. == What isn't FEXBash == FEXBash is '''not''': * A virtual machine * A chroot * A way...")
 
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
[[Category:Utility_Type_Application]]
 
FEXBash is a utility program provided by FEX-emu for quickly spinning up a bash instance.
 
FEXBash is a utility program provided by FEX-emu for quickly spinning up a bash instance.
 
== What isn't FEXBash ==
 
== What isn't FEXBash ==
 
FEXBash is '''not''':
 
FEXBash is '''not''':
 
* A virtual machine
 
* A virtual machine
 +
** FEX is never a virtual machine.
 
* A chroot
 
* A chroot
 +
** See [[Development:Setting_up_RootFS#Chrooting_in_to_rootfs_with_FEX-Emu_Rootfs|this wiki page]] if you want to chroot in to the rootfs.
 
* A way to install packages inside the x86-64 rootfs
 
* A way to install packages inside the x86-64 rootfs
 +
** See [[Development:Setting_up_RootFS#If_you_want_to_install_packages_in_the_squashfs|this wiki page]] if you want to add packages to the rootfs.
 +
** Trying to install packages while running under FEXBash will not work. The rootfs is effectively read-only.
  
 
== What is FEXBash ==
 
== What is FEXBash ==

Latest revision as of 00:22, 5 October 2023

FEXBash is a utility program provided by FEX-emu for quickly spinning up a bash instance.

What isn't FEXBash

FEXBash is not:

  • A virtual machine
    • FEX is never a virtual machine.
  • A chroot
  • A way to install packages inside the x86-64 rootfs
    • See this wiki page if you want to add packages to the rootfs.
    • Trying to install packages while running under FEXBash will not work. The rootfs is effectively read-only.

What is FEXBash

FEXBash is a wrapper program that executes FEXInterpreter to run x86-64 /bin/sh or /bin/bash. Which application is executed depends on the number of arguments passed in

Usage

Zero arguments

If the user passes in no arguments then FEXBash will execute x86-64 /bin/bash to give an emulated shell environment for tinkering around in.

 ryanh@ubuntu:~$ uname -a
 Linux ubuntu 5.15.0-rc1+ #106 SMP Tue Aug 2 19:43:23 PDT 2022 aarch64 aarch64 aarch64 GNU/Linux
 ryanh@ubuntu:~$ FEXBash
 FEXBash-ryanh@ubuntu:~> uname -a
 Linux ubuntu 5.15.0 #FEX-2208-11-ga2f4f494a SMP Aug 13 2022 09:47:20 x86_64 x86_64 x86_64 GNU/Linux

This is not a virtual machine. It is just an emulated environment that overlays the AArch64 host environment. You can still execute AArch64 programs from the host and also x86-64 programs.

Any arguments

If any arguments are passed in then FEXBash executes /bin/sh -c with the provided arguments passed along. One must be careful with this as sh -c is usually expected to have its arguments wrapped in double quotes.

 ryanh@ubuntu:~$ sh -c uname -a
 Linux
 ryanh@ubuntu:~$ sh -c "uname -a"
 Linux ubuntu 5.15.0-rc1+ #106 SMP Tue Aug 2 19:43:23 PDT 2022 aarch64 aarch64 aarch64 GNU/Linux
 ryanh@ubuntu:~$ FEXBash uname -a
 Linux
 ryanh@ubuntu:~$ FEXBash "uname -a"
 Linux ubuntu 5.15.0 #FEX-2208-11-ga2f4f494a SMP Aug 13 2022 09:47:20 x86_64 x86_64 x86_64 GNU/Linux

As one can see, without the double quotes you effectively lose the -a argument. This behaves the same as /bin/sh -c behaviour without FEXBash.

This is usually used for some sort of scripting wanting to enter the FEX emulated environment.