All Projects → robotpy → roborio-vm

robotpy / roborio-vm

Licence: other
Scripts to create QEMU virtual machine from the RoboRIO image file

Programming Languages

shell
77523 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to roborio-vm

lima-gui
Making a GUI for lima VM
Stars: ✭ 36 (+9.09%)
Mutual labels:  vm, qemu
Cv4pve Autosnap
Automatic snapshot tool for Proxmox VE
Stars: ✭ 123 (+272.73%)
Mutual labels:  vm, qemu
Embiggen Disk
embiggden-disk live-resizes a filesystem after first live-resizing any necessary layers below it: an optional LVM LV and PV, and an MBR or GPT partition table
Stars: ✭ 440 (+1233.33%)
Mutual labels:  vm, qemu
js5005
js5005 is a virtual CPU with every logic gate simulated. A pretty interface, a built in assembler, display, and 256 bytes of RAM to boot. It's the better i4004.
Stars: ✭ 14 (-57.58%)
Mutual labels:  vm, qemu
UTM
Virtual machines for iOS and macOS
Stars: ✭ 16,904 (+51124.24%)
Mutual labels:  vm, qemu
Dockerpi
A Virtualised Raspberry Pi inside a Docker image
Stars: ✭ 1,064 (+3124.24%)
Mutual labels:  vm, qemu
S2e
S2E: A platform for multi-path program analysis with selective symbolic execution.
Stars: ✭ 102 (+209.09%)
Mutual labels:  vm, qemu
Pixy2JavaAPI
Pixy2 API ported to Java for FIRST Robotics RoboRIO
Stars: ✭ 36 (+9.09%)
Mutual labels:  frc, roborio
FRC-Java-Tutorial
A tutorial on how to program a robot for use in the FIRST Robotics Competition
Stars: ✭ 52 (+57.58%)
Mutual labels:  frc, roborio
roborio-opencv
Scripts to build OpenCV for the RoboRIO
Stars: ✭ 13 (-60.61%)
Mutual labels:  frc, roborio
lima
Linux virtual machines, typically on macOS, for running containerd
Stars: ✭ 8,723 (+26333.33%)
Mutual labels:  vm, qemu
qemujs
Qemu.js source code with proof-of-concept machine-code-to-WASM JIT.
Stars: ✭ 101 (+206.06%)
Mutual labels:  vm, qemu
ProxmoxVE PHP API
ProxmoxVE PHP API
Stars: ✭ 78 (+136.36%)
Mutual labels:  vm, qemu
qemu-android-x86-runner
Quick Start on How to Run Android x86 in QEMU
Stars: ✭ 102 (+209.09%)
Mutual labels:  qemu
dextop
Dextop - Linux-based distribution workstation on Android
Stars: ✭ 24 (-27.27%)
Mutual labels:  vm
vm-automation
VirtualBox automation using Python
Stars: ✭ 1 (-96.97%)
Mutual labels:  vm
mdepx
MDEPX — A BSD-style RTOS
Stars: ✭ 17 (-48.48%)
Mutual labels:  qemu
Steamworks-2017
SERT's code for the 2017 Steamworks game
Stars: ✭ 13 (-60.61%)
Mutual labels:  frc
packer-kvm
Create VM templates with Packer for usage with Libvirt/KVM virtualization : CentOS 7, CentOS 8, CentOS 8 Stream, Alma Linux, Rocky Linux, Bionic (Ubuntu 1804), Focal (Ubuntu 2004), Debian 11 (stable), Kali Linux, Fedora 33 and Fedora 34.
Stars: ✭ 99 (+200%)
Mutual labels:  qemu
kcs
Scripting in C with JIT(x64)/VM.
Stars: ✭ 25 (-24.24%)
Mutual labels:  vm

QEMU RoboRIO ARM Virtual Machine

This is a set of scripts that extracts the files for National Instruments Real Time Linux from the RoboRIO image zipfile, creates an image from them, and provides a script that allows you to run them via the QEMU emulator.

What can you use this for? Well, if you need to compile packages that are difficult to cross compile or build on a resource constrained system, or do testing that requires an ARM platform but does not require actual NI hardware.. this might be for you.

Tested with:

  • Fedora 22/24, OSX (run only)
  • QEMU 2.5.0, 2.6.1
  • FRC images: 2017v8 and 2016v18
    • I tried 2015v23, but there's an error starting the NI configuration daemon and so ssh refuses to start.

It probably works on other Linux distributions, and may even work with OSX if you adjust the scripts to work there.

Requirements

For creating an image:

  • A linux host with the following installed:
    • mkfs
    • unzip
    • qemu-img, qemu-nbd
    • root permissions

For running the created image:

  • QEMU arm emulator (qemu-system-arm)
    • Works on Linux and OSX

Creating the Virtual Machine root filesystem

First, you need the image zipfile that is distributed with the FRC Update Suite. On a machine with the RoboRIO imaging program installed, you can find it at:

C:\Program Files (x86)\National Instruments\LabVIEW 2015\project\roboRIO Tool\FRC Images

Copy the zipfile to your Linux host, and run the following:

./create_rootfs.sh /path/to/FRC_roboRIO_*.zip

Give it a few minutes, enter in your password when prompted, and at the end you should end up with an image file and a kernel file. This only needs to be done once.

Running the Virtual Machine

Simple command:

./run_vm.sh

At the moment there are a lot of error messages, but eventually it will finish starting and you can login via the console or via SSH.

To SSH into your VM, you can execute the following:

ssh admin@localhost -p 10022

Or, you can setup an SSH alias by adding this to .ssh/config:

Host roborio-vm
  User admin
  Hostname 127.0.0.1
  Port 10022

Then you can login using the following:

ssh roborio-vm

Snapshots

QEMU has good support for snapshots and other such things. When the rootfs is created, an initial snapshot is created in case you want to revert the VM back to a 'pristine' state. To do so:

qemu-img snapshot -a initial roborio.img

There is now also a reset.sh command that you can run to do this.

Known issues

  • I haven't figured out a good way to safely shutdown the system
  • Probably should use a different filesystem for the image
  • Lots of error messages on bootup, would be nice if we could use the actual kernel used on the RoboRIO (this seems like it should be possible)

Building QEMU from source

Download latest version of QEMU, and...

tar -xf qemu-2.6.1.tar.bz2
cd qemu-2.6.1
mkdir build
cd build
../configure --target-list=arm-softmmu --enable-fdt
make
make install

Versions of QEMU that I've had work for me:

  • 2.5
  • 2.6.x
  • 2.8.x

Versions known to not work:

  • 2.7.0

Contributing new changes

This is intended to be a project that all members of the FIRST community can quickly and easily contribute to. If you find a bug, or have an idea that you think others can use:

  1. Fork this git repository to your github account
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push -u origin my-new-feature)
  5. Create new Pull Request on github

Authors

These scripts are not endorsed or associated with Xilinx, FIRST Robotics, or National Instruments.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].