Merge "Install procps to the debian image" into main
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/InstallerActivity.java b/android/TerminalApp/java/com/android/virtualization/terminal/InstallerActivity.java
index 0774bb1..1abba85 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/InstallerActivity.java
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/InstallerActivity.java
@@ -32,11 +32,11 @@
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
-import android.widget.Toast;
import com.android.internal.annotations.VisibleForTesting;
import com.google.android.material.progressindicator.LinearProgressIndicator;
+import com.google.android.material.snackbar.Snackbar;
import java.lang.ref.WeakReference;
import java.util.concurrent.ExecutorService;
@@ -110,10 +110,10 @@
public void handleCriticalError(Exception e) {
if (Build.isDebuggable()) {
- Toast.makeText(
- this,
+ Snackbar.make(
+ findViewById(android.R.id.content),
e.getMessage() + ". File a bugreport to go/ferrochrome-bug",
- Toast.LENGTH_LONG)
+ Snackbar.LENGTH_INDEFINITE)
.show();
}
Log.e(TAG, "Internal error", e);
@@ -189,9 +189,9 @@
@MainThread
private void handleError(String displayText) {
- // TODO(b/375542145): Display error with snackbar.
if (Build.isDebuggable()) {
- Toast.makeText(this, displayText, Toast.LENGTH_LONG).show();
+ Snackbar.make(findViewById(android.R.id.content), displayText, Snackbar.LENGTH_LONG)
+ .show();
}
setInstallEnabled(true);
}
diff --git a/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java b/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
index ebf6154..fdf1f3b 100644
--- a/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
+++ b/android/TerminalApp/java/com/android/virtualization/terminal/MainActivity.java
@@ -88,7 +88,7 @@
private AccessibilityManager mAccessibilityManager;
private ConditionVariable mBootCompleted = new ConditionVariable();
private static final int POST_NOTIFICATIONS_PERMISSION_REQUEST_CODE = 101;
- private ActivityResultLauncher<Intent> manageExternalStorageActivityResultLauncher;
+ private ActivityResultLauncher<Intent> mManageExternalStorageActivityResultLauncher;
private static int diskSizeStep;
@Override
@@ -122,27 +122,17 @@
readClientCertificate();
connectToTerminalService();
- manageExternalStorageActivityResultLauncher =
+ mManageExternalStorageActivityResultLauncher =
registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
(ActivityResult result) -> {
- if (Environment.isExternalStorageManager()) {
- Toast.makeText(this, "Storage permission set!", Toast.LENGTH_SHORT)
- .show();
- } else {
- Toast.makeText(
- this,
- "Storage permission not set",
- Toast.LENGTH_SHORT)
- .show();
- }
startVm();
});
// if installer is launched, it will be handled in onActivityResult
if (!launchInstaller) {
if (!Environment.isExternalStorageManager()) {
- requestStoragePermissions(this, manageExternalStorageActivityResultLauncher);
+ requestStoragePermissions(this, mManageExternalStorageActivityResultLauncher);
} else {
startVm();
}
@@ -435,7 +425,7 @@
finish();
}
if (!Environment.isExternalStorageManager()) {
- requestStoragePermissions(this, manageExternalStorageActivityResultLauncher);
+ requestStoragePermissions(this, mManageExternalStorageActivityResultLauncher);
} else {
startVm();
}
diff --git a/build/debian/build.sh b/build/debian/build.sh
index 7fc9035..899e376 100755
--- a/build/debian/build.sh
+++ b/build/debian/build.sh
@@ -11,6 +11,7 @@
echo "Options:"
echo "-h Print usage and this help message and exit."
echo "-a ARCH Architecture of the image [default is aarch64]"
+ echo "-r Release mode build"
}
check_sudo() {
@@ -21,7 +22,7 @@
}
parse_options() {
- while getopts "ha:" option; do
+ while getopts "hra:" option; do
case ${option} in
h)
show_help
@@ -36,6 +37,9 @@
debian_arch="amd64"
fi
;;
+ r)
+ mode=release
+ ;;
*)
echo "Invalid option: $OPTARG"
exit
@@ -119,11 +123,17 @@
build_rust_binary_and_copy() {
pushd "$(dirname "$0")/../../guest/$1" > /dev/null
+ local release_flag=
+ local artifact_mode=debug
+ if [[ "$mode" == "release" ]]; then
+ release_flag="--release"
+ artifact_mode=release
+ fi
RUSTFLAGS="-C linker=${arch}-linux-gnu-gcc" cargo build \
--target "${arch}-unknown-linux-gnu" \
- --target-dir "${workdir}/$1"
+ --target-dir "${workdir}/$1" ${release_flag}
mkdir -p "${dst}/files/usr/local/bin/$1"
- cp "${workdir}/$1/${arch}-unknown-linux-gnu/debug/$1" "${dst}/files/usr/local/bin/$1/AVF"
+ cp "${workdir}/$1/${arch}-unknown-linux-gnu/${artifact_mode}/$1" "${dst}/files/usr/local/bin/$1/AVF"
chmod 777 "${dst}/files/usr/local/bin/$1/AVF"
mkdir -p "${dst}/files/usr/share/doc/$1"
@@ -197,6 +207,7 @@
resources_dir=${debian_cloud_image}/src/debian_cloud_images/resources
arch=aarch64
debian_arch=arm64
+mode=debug
parse_options "$@"
check_sudo
install_prerequisites
diff --git a/build/debian/build_in_container.sh b/build/debian/build_in_container.sh
index fd1a975..d5680e0 100755
--- a/build/debian/build_in_container.sh
+++ b/build/debian/build_in_container.sh
@@ -3,7 +3,8 @@
if [ -z "$ANDROID_BUILD_TOP" ]; then echo "forgot to source build/envsetup.sh?" && exit 1; fi
arch=aarch64
-while getopts "a:" option; do
+release_flag=
+while getopts "ra:" option; do
case ${option} in
a)
if [[ "$OPTARG" != "aarch64" && "$OPTARG" != "x86_64" ]]; then
@@ -12,6 +13,9 @@
fi
arch="$OPTARG"
;;
+ r)
+ release_flag="-r"
+ ;;
*)
echo "Invalid option: $OPTARG"
exit
@@ -21,4 +25,4 @@
docker run --privileged -it --workdir /root/Virtualization/build/debian -v \
"$ANDROID_BUILD_TOP/packages/modules/Virtualization:/root/Virtualization" -v \
- /dev:/dev ubuntu:22.04 /root/Virtualization/build/debian/build.sh -a "$arch"
+ /dev:/dev ubuntu:22.04 /root/Virtualization/build/debian/build.sh -a "$arch" $release_flag
diff --git a/build/debian/fai_config/files/etc/systemd/system/forwarder_guest_launcher.service/AVF b/build/debian/fai_config/files/etc/systemd/system/forwarder_guest_launcher.service/AVF
index f4c2a24..6dbabea 100644
--- a/build/debian/fai_config/files/etc/systemd/system/forwarder_guest_launcher.service/AVF
+++ b/build/debian/fai_config/files/etc/systemd/system/forwarder_guest_launcher.service/AVF
@@ -4,7 +4,7 @@
After=network.target
After=virtiofs_internal.service
[Service]
-ExecStart=/usr/bin/bash -c '/usr/local/bin/forwarder_guest_launcher --host 192.168.0.1 --grpc_port $(cat /mnt/internal/debian_service_port)'
+ExecStart=/usr/bin/bash -c 'RUST_LOG=debug /usr/local/bin/forwarder_guest_launcher --host 192.168.0.1 --grpc_port $(cat /mnt/internal/debian_service_port)'
Type=simple
Restart=on-failure
RestartSec=1
diff --git a/build/debian/fai_config/files/etc/systemd/system/ttyd.service/AVF b/build/debian/fai_config/files/etc/systemd/system/ttyd.service/AVF
index a2516ff..4a32f2b 100644
--- a/build/debian/fai_config/files/etc/systemd/system/ttyd.service/AVF
+++ b/build/debian/fai_config/files/etc/systemd/system/ttyd.service/AVF
@@ -4,7 +4,7 @@
After=network.target
After=virtiofs_internal.service
[Service]
-ExecStart=/usr/local/bin/ttyd --ssl --ssl-cert /etc/ttyd/server.crt --ssl-key /etc/ttyd/server.key --ssl-ca /mnt/internal/ca.crt -W login -f droid
+ExecStart=/usr/local/bin/ttyd --ssl --ssl-cert /etc/ttyd/server.crt --ssl-key /etc/ttyd/server.key --ssl-ca /mnt/internal/ca.crt -t disableLeaveAlert=true -W login -f droid
Type=simple
Restart=always
User=root
diff --git a/guest/forwarder_guest_launcher/Cargo.toml b/guest/forwarder_guest_launcher/Cargo.toml
index b7f9eaf..03fda56 100644
--- a/guest/forwarder_guest_launcher/Cargo.toml
+++ b/guest/forwarder_guest_launcher/Cargo.toml
@@ -7,6 +7,8 @@
[dependencies]
anyhow = "1.0.91"
clap = { version = "4.5.20", features = ["derive"] }
+env_logger = "0.11.5"
+log = "0.4.22"
prost = "0.13.3"
tokio = { version = "1.40.0", features = ["process", "rt-multi-thread"] }
tonic = "0.12.3"
diff --git a/guest/forwarder_guest_launcher/src/main.rs b/guest/forwarder_guest_launcher/src/main.rs
index d753d19..abb39f6 100644
--- a/guest/forwarder_guest_launcher/src/main.rs
+++ b/guest/forwarder_guest_launcher/src/main.rs
@@ -18,6 +18,7 @@
use clap::Parser;
use debian_service::debian_service_client::DebianServiceClient;
use debian_service::QueueOpeningRequest;
+use log::debug;
use tokio::process::Command;
use tonic::transport::Endpoint;
use tonic::Request;
@@ -41,7 +42,8 @@
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
- println!("Starting forwarder_guest_launcher");
+ env_logger::init();
+ debug!("Starting forwarder_guest_launcher");
let args = Args::parse();
let addr = format!("https://{}:{}", args.host_addr, args.grpc_port);
@@ -58,7 +60,7 @@
.context("Failed to convert guest_tcp_port as i16")?;
let vsock_port = response.vsock_port as u32;
- println!(
+ debug!(
"executing forwarder_guest with guest_tcp_port: {:?}, vsock_port: {:?}",
&tcp_port, &vsock_port
);
diff --git a/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java b/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
index 917a027..a6c79cb 100644
--- a/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
+++ b/tests/testapk/src/java/com/android/microdroid/test/MicrodroidTests.java
@@ -221,6 +221,7 @@
@Test
@CddTest(requirements = {"9.17/C-1-1", "9.17/C-2-1"})
+ @VsrTest(requirements = {"VSR-7.1-001.006"})
public void vmAttestationWhenRemoteAttestationIsNotSupported() throws Exception {
// pVM remote attestation is only supported on protected VMs.
assumeProtectedVM();
@@ -249,6 +250,7 @@
@Test
@CddTest(requirements = {"9.17/C-1-1", "9.17/C-2-1"})
+ @VsrTest(requirements = {"VSR-7.1-001.006"})
public void vmAttestationWithVendorPartitionWhenSupported() throws Exception {
// pVM remote attestation is only supported on protected VMs.
assumeProtectedVM();
@@ -267,6 +269,7 @@
@Test
@CddTest(requirements = {"9.17/C-1-1", "9.17/C-2-1"})
+ @VsrTest(requirements = {"VSR-7.1-001.006"})
public void vmAttestationWhenRemoteAttestationIsSupported() throws Exception {
// pVM remote attestation is only supported on protected VMs.
assumeProtectedVM();