Code Monkey home page Code Monkey logo

boot-tests's Introduction

title tags layout permalink shortdoc author
Linux x86-ubuntu image
x86
fullsystem
default
resources/x86-ubuntu
Resources to build a generic x86-ubuntu disk image and run a "boot-exit" test.
Ayaz Akram

This document provides instructions to create the "x86-ubuntu" image, the Linux kernel binaries, and also points to the gem5 configuration files needed to run the boot. The x86-ubuntu disk image is based on Ubuntu 18.04 and has its .bashrc file modified in such a way that it executes a script passed from the gem5 configuration files (using the m5 readfile instruction). The boot-exit test passes a script that causes the guest OS to terminate the simulation (using the m5 exit instruction) as soon as the system boots.

We assume the following directory structure while following the instructions in this README file:

x86-ubuntu/
  |___ gem5/                                   # gem5 source code (to be cloned here)
  |
  |___ disk-image/
  |      |___ build.sh                         # the script downloading packer binary and building the disk image
  |      |___ shared/                          # Auxiliary files needed for disk creation
  |      |___ x86-ubuntu/
  |            |___ x86-ubuntu-image/           # Will be created once the disk is generated
  |            |      |___ x86-ubuntu           # The generated disk image
  |            |___ x86-ubuntu.json             # The Packer script
  |            |___ exit.sh                    # Exits the simulated guest upon booting
  |            |___ post-installation.sh       # Moves exit.sh to guest's .bashrc
  |
  |___ configs
  |      |___ system                           # gem5 system config files
  |      |___ run_exit.py                      # gem5 run script
  |
  |___ linux                                   # Linux source will be downloaded in this folder
  |
  |___ README.md                               # This README file

Disk Image

Assuming that you are in the src/x86-ubuntu/ directory (the directory containing this README), first build m5 (which is needed to create the disk image):

git clone https://gem5.googlesource.com/public/gem5
cd gem5/util/m5
scons build/x86/out/m5

Next (within the src/x86-ubuntu/ directory),

cd disk-image
./build.sh          # the script downloading packer binary and building the disk image

If you see errors or warnings from packer validate you can modify the file disk-image/x86-ubuntu/x86-ubuntu.json to update the file. Specifically, you may see the following error.

Error: Failed to prepare build: "qemu"

1 error(s) occurred:

* Bad source '../gem5/util/m5/build/x86/out/m5': stat
../gem5/util/m5/build/x86/out/m5: no such file or directory

In this case, the gem5 directory is in a different location than when this script was written. You can update the following line in the x86-ubuntu.json file.

         "destination": "/home/gem5/",
-        "source": "../gem5/util/m5/build/x86/out/m5",
+        "source": "<your path to gem5>/util/m5/build/x86/out/m5",
         "type": "file"

Once this process succeeds, the disk image can be found on x86-ubuntu/x86-ubuntu-image/x86-ubuntu. A disk image already created following the above instructions can be found, gzipped, here.

gem5 Run Scripts

gem5 scripts which configure the system and run simulation are available in configs-boot-tests/. The main script run_exit.py expects following arguments:

kernel: path to the Linux kernel (see src/linux-kernel/ for information on building/obtaining a linux kernel binary).

disk: path to the disk image.

cpu_type: cpu model (kvm, atomic, simple, o3).

mem_sys: memory system (classic, MI_example, MESI_Two_Level, MOESI_CMP_directory).

num_cpus: number of cpu cores.

boot_type: Linux kernel boot type (init, systemd).

An example use of this script is the following:

[gem5 binary] configs/run_exit.py [path to the Linux kernel] [path to the disk image] kvm classic 4 init

Working Status

Working status of these tests for gem5-20 can be found here.

boot-tests's People

Contributors

leehayun avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.