Start the [Fuchsia emulator][femu] on the host machine. This guide uses an instance of the Fuchsia emulator as the target device for running and testing Fuchsia software. And to be able to supply new Fuchsia software to the target device, you also need to start the [Fuchsia package server][fuchsia-package-server] on the host machine.
The tasks include:
ffx commands can connect to the emulator instance.In VS Code, do the following:
Click Terminal > New Terminal.
In the terminal, download the latest Fuchsia Workstation prebuilt image for the emulator:
tools/ffx product-bundle get workstation_eng.qemu-x64 --force-repo --repository workstation-packages
This command may take a few minutes to download the image and product metadata.
Once the download is finished, the ffx product-bundle get command creates a local Fuchsia package repository named workstation-packages on your host machine. This package repository hosts additional system packages for this Workstation prebuilt image. Later in step 10 you’ll register this package repository to the emulator instance.
Stop all running emulator instances:
tools/ffx emu stop --all
Start a new Fuchsia emulator instance:
Note: If your Linux machine does not support KVM hardware virtualization, start the emulator with the following command instead: tools/ffx emu start workstation_eng.qemu-x64 --engine qemu --startup-timeout 720 --accel none --device qemu-x64-emu-min --headless
tools/ffx emu start workstation_eng.qemu-x64 --headless
This command starts a headless emulator instance running the Workstation prebuilt image.
When the instance is up and running, the command prints output similar to the following:
$ tools/ffx emu start workstation_eng.qemu-x64 --headless ... Logging to "/home/alice/.local/share/Fuchsia/ffx/emu/instances/fuchsia-emulator/emulator.log" Waiting for Fuchsia to start (up to 60 seconds)........... Emulator is ready.
Click the Not connected icon at the bottom of VS Code.
{: .screenshot}
This opens the Command Palette at the top of VS Code.
Click Set fuchsia-emulator as default in the Command Palette.
This sets fuchsia-emulator as the default target at the bottom of VS Code:
{: .screenshot}
In the terminal, to verify that you can establish an SSH connection to the emulator instance, run the following command:
tools/ffx target show
This command prints output similar to the following:
$ tools/ffx target show Target: Name: "fuchsia-emulator" SSH Address: "127.0.0.1:37787" Board: Name: "default-board" Revision: "1" Instruction set: "x64" Device: ... Build: Version: "10.20221130.0.1" Product: "workstation_eng" Board: "qemu-x64" Commit: "2022-11-30T07:03:36+00:00" Last Reboot: Graceful: "false" Reason: "Cold" ...
The example output above shows that the target device is running a workstation_eng.qemu-x64 prebuilt image.
Start the Fuchsia package server:
tools/ffx repository server start
This command prints output similar to the following:
$ tools/ffx repository server start ffx repository server is listening on [::]:8083
Check the list of Fuchsia package repositories available on your host machine:
tools/ffx repository list
This command prints output similar to the following:
$ tools/ffx repository list +-----------------------+------+-------------------------------------------------------------------------------------------------+ | NAME | TYPE | EXTRA | +=======================+======+=================================================================================================+ | workstation-packages* | pm | /home/alice/.local/share/Fuchsia/ffx/pbms/4751486831982119909/workstation_eng.qemu-x64/packages | +-----------------------+------+-------------------------------------------------------------------------------------------------+
Notice a package repository named workstation-packages is created for the Workstation prebuilt image.
Register the workstation-packages package repository to the target device:
tools/ffx target repository register -r workstation-packages --alias fuchsia.com --alias chromium.org
This command exits silently without output.