# Copyright 2019 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# This file may be modified to make local changes to the command line that
# ARCVM uses to start a VM. It contains one directive per line, with the
# following forms available:
#
#    # This is a comment.
#      Lines beginning with '#' are skipped.
#
#    --some-flag=some-value
#      Appends "--some-flag" and "some-value" to command line.
#
#    --some-flag
#      Appends "--some-flag" to command line.
#
#    !--flag-prefix
#      Removes all arguments beginning with "--flag-prefix".
#
#    KERNEL_PATH=/set/to/new_path
#      Override the guest kernel path to /set/to/new_path. KERNEL_PATH must
#      consist of capital letters.
#
# Directives are applied in the order they appear (i.e. to change a flag, first
# delete it and then re-add it with the desired value).
#
# Setting values on environment variables is not supported.
#
# -----------------------------------------------------------------------------
# TIP: When you want to see raw dmesg logs from the Android guest kernel and
# system processes such as init, uncomment the following line. By default,
# the guest kernel rate-limits the logging and some logs could be silently
# dropped. This is useful when modifying init.bertha.rc, for example.
#
# --params=printk.devkmsg=on
#
# Only uncommenting the line above won't let you see all the logs though. If you
# want to see very early (the first a few hundred milliseconds) logs from the
# guest kernel, make sure to install the guest kernel built with USE=pcserial:
#
#    chroot$ cros_workon --board=$BOARD start arcvm-kernel-5_4
#    chroot$ USE=pcserial emerge-$BOARD arcvm-kernel-5_4
#    chroot$ cros deploy DUT arcvm-kernel-5_4
# -----------------------------------------------------------------------------
#
# Other tips:
#
# Disable selinux on userdebug image
# --params=androidboot.selinux=permissive
# Suppress selinux audit kernel message.
# --params=audit=0
################################################################################
# This file should only be modified by hand by developers on their local
# dev-mode devices; do not check in changes to it or write code that modifies
# it. Permanent changes to ARCVM's configuration, including conditionally-set
# flags, should be made in ARCVM (see arc_vm.cc).
################################################################################

# Add serial-based earlycon and virtio-console logging.
--serial=type=syslog,hardware=serial,num=1,earlycon=true
--serial=type=syslog,hardware=virtio-console,num=1,console=true
