From: Waldemar Kozaczuk <jwkozac...@gmail.com>
Committer: Waldemar Kozaczuk <jwkozac...@gmail.com>
Branch: master

scripts: update firecracker.py to support aarch64

Signed-off-by: Waldemar Kozaczuk <jwkozac...@gmail.com>

---
diff --git a/scripts/firecracker.py b/scripts/firecracker.py
--- a/scripts/firecracker.py
+++ b/scripts/firecracker.py
@@ -172,16 +172,16 @@ def setup_tap_interface(mode, tap_interface_name, 
tap_ip=None, physical_nic=None
             else:
                 subprocess.call([setup_networking_script, 'natted', 
tap_interface_name, tap_ip])
 
-def find_firecracker(dirname):
-    firecracker_path = os.path.join(dirname, '../.firecracker/firecracker')
+def find_firecracker(dirname, arch):
+    firecracker_path = os.path.join(dirname, '../.firecracker/firecracker-%s' 
% arch)
     if os.environ.get('FIRECRACKER_PATH'):
         firecracker_path = os.environ.get('FIRECRACKER_PATH')
 
     # And offer to install if not found
-    firecracker_version = 'v0.21.0'
+    firecracker_version = 'v0.21.1'
     if not os.path.exists(firecracker_path):
         url_base = 
'https://github.com/firecracker-microvm/firecracker/releases/download'
-        download_url = '%s/%s/firecracker-%s-x86_64' % (url_base, 
firecracker_version, firecracker_version)
+        download_url = '%s/%s/firecracker-%s-%s' % (url_base, 
firecracker_version, firecracker_version, arch)
         answer = input("Firecracker executable has not been found under %s. "
                            "Would you like to download it from %s and place it 
under %s? [y|n]" %
                            (firecracker_path, download_url, firecracker_path))
@@ -255,7 +255,7 @@ def get_memory_size_in_mb(options):
 def main(options):
     # Check if firecracker is installed
     dirname = os.path.dirname(os.path.abspath(__file__))
-    firecracker_path = find_firecracker(dirname)
+    firecracker_path = find_firecracker(dirname, options.arch)
 
     # Firecracker is installed so lets start
     print_time("Start")
@@ -277,7 +277,11 @@ def main(options):
     if not cmdline:
         with open(os.path.join(dirname, '../build/release/cmdline'), 'r') as f:
             cmdline = f.read()
-    cmdline = "--nopci %s" % cmdline
+
+    if options.arch == 'aarch64':
+        cmdline = "console=tty --disable_rofs_cache %s" % cmdline
+    else:
+        cmdline = "--nopci %s" % cmdline
 
     if options.networking:
         tap_device = 'fc_tap0'
@@ -322,6 +326,8 @@ def main(options):
         print_time("Created OSv VM with cmdline: %s" % cmdline)
 
         if not options.api:
+            if options.verbose:
+                print(client.firecracker_config_json())
             firecracker, config_file_path = 
start_firecracker_with_no_api(firecracker_path, 
client.firecracker_config_json())
         else:
             client.start_instance()
@@ -375,6 +381,8 @@ def main(options):
                         help="use socket-based API to configure and start OSv 
on firecracker")
     parser.add_argument("-p", "--physical_nic", action="store", default=None,
                         help="name of the physical NIC (wired or wireless) to 
forward to if in natted mode")
+    parser.add_argument("--arch", action="store", 
choices=["x86_64","aarch64"], default="x86_64",
+                        help="specify Firecracker architecture: x86_64, 
aarch64")
 
     cmd_args = parser.parse_args()
     if cmd_args.verbose:

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to osv-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/osv-dev/00000000000055eff205aae68d70%40google.com.

Reply via email to