This commit is contained in:
An Bui 2025-01-18 01:08:28 +07:00
parent 8ca54aa1f5
commit 5ae877298a
11 changed files with 61 additions and 29 deletions

View file

@ -82,6 +82,7 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.vectras.vterm.Terminal;
public class CustomRomActivity extends AppCompatActivity {
@ -528,6 +529,13 @@ public class CustomRomActivity extends AppCompatActivity {
} else {
title.setText("New VM");
setDefault();
if (MainSettingsManager.autoCreateDisk(CustomRomActivity.this)) {
File myDir = new File(AppConfig.vmFolder + vmID);
myDir.mkdirs();
Terminal vterm = new Terminal(CustomRomActivity.this);
vterm.executeShellCommand2("qemu-img create -f qcow2 " + AppConfig.vmFolder + vmID + "/disk.qcow2 128G", false, CustomRomActivity.this);
drive.setText(AppConfig.vmFolder + vmID + "/disk.qcow2");
}
}
}
VectrasApp.prepareDataForAppConfig(activity);

View file

@ -119,6 +119,7 @@ public class AdapterMainRoms extends RecyclerView.Adapter<RecyclerView.ViewHolde
@Override
public void onClick(View v) {
com.vectras.vm.CustomRomActivity.current = data.get(position);
VMManager.setArch(current.itemArch, MainActivity.activity);
MainActivity.activity.startActivity(new Intent(MainActivity.activity, CustomRomActivity.class).putExtra("POS", position).putExtra("MODIFY", true).putExtra("VMID", current.vmID));
bottomSheetDialog.cancel();
}

View file

@ -50,7 +50,7 @@ public class MainService extends Service {
String filesDir = MainActivity.activity.getFilesDir().getAbsolutePath();
Terminal vterm = new Terminal(this);
vterm.executeShellCommand2("dwm", false, MainActivity.activity);
vterm.executeShellCommand2(env, false, MainActivity.activity);
vterm.executeShellCommand2(env, true, MainActivity.activity);
}
} else
Log.e(TAG, "env is null");

View file

@ -44,7 +44,7 @@ public class StartVM {
String ifType;
ifType= MainSettingsManager.getIfType(activity);
String cdrom;
String cdrom = "";
String hdd0;
String hdd1;
@ -74,10 +74,10 @@ public class StartVM {
if (cdromFile.exists()) {
if (MainSettingsManager.getArch(activity).equals("ARM64")) {
cdrom = "-device";
cdrom += " usb-storage,drive=cdrom";
cdrom += " -drive";
cdrom = " -drive";
cdrom += " if=none,id=cdrom,format=raw,media=cdrom,file='" + cdromFile.getPath() + "'";
cdrom += "-device";
cdrom += " usb-storage,drive=cdrom";
if (!extras.contains("-device nec-usb-xhci")) {
cdrom += " -device";
cdrom += " qemu-xhci";
@ -100,16 +100,12 @@ public class StartVM {
}
} else {
if (MainSettingsManager.getArch(activity).equals("ARM64")) {
cdrom = "-device";
cdrom += " usb-storage,drive=cdrom";
cdrom += " -device";
cdrom += " nec-usb-xhci,id=defaultxhci";
cdrom += " -device";
cdrom += " usb-storage,bus=defaultxhci.0,drive=cdrom";
cdrom += " -drive";
cdrom += " if=none,id=cdrom,format=raw,media=cdrom,file='" + cdrompath + "'";
if (!extras.contains("-device nec-usb-xhci")) {
cdrom += " -device";
cdrom += " qemu-xhci";
cdrom += " -device";
cdrom += " nec-usb-xhci";
}
} else {
if (ifType.isEmpty()) {
cdrom = "-cdrom";
@ -177,23 +173,23 @@ public class StartVM {
bios = "-L ";
bios += "pc-bios";
} else if (MainSettingsManager.getArch(activity).equals("ARM64")) {
bios = "-pflash ";
bios += AppConfig.basefiledir + "QEMU_EFI.img";
bios += " -pflash ";
bios += AppConfig.basefiledir + "QEMU_VARS.img";
bios = "-drive ";
bios += "file=" + AppConfig.basefiledir + "QEMU_EFI.img,format=raw,readonly=on,if=pflash";
bios += " -drive ";
bios += "file=" + AppConfig.basefiledir + "QEMU_VARS.img,format=raw,if=pflash";
} else {
bios = "-bios ";
bios += AppConfig.basefiledir + "bios-vectras.bin";
}
}
String machine = "-M ";
if (Objects.equals(MainSettingsManager.getArch(activity), "X86_64")) {
machine += "pc";
params.add(machine);
} else if (Objects.equals(MainSettingsManager.getArch(activity), "ARM64")) {
machine += "virt";
params.add(machine);
}
String machine = "-M ";
if (Objects.equals(MainSettingsManager.getArch(activity), "X86_64")) {
machine += "pc";
params.add(machine);
} else if (Objects.equals(MainSettingsManager.getArch(activity), "ARM64")) {
machine += "virt";
params.add(machine);
}
if (MainSettingsManager.useMemoryOvercommit(MainActivity.activity)) {

View file

@ -519,8 +519,10 @@ public class VMManager {
}
public static boolean isExecutedCommandError(String _command, String _result, Activity _activity) {
if (!_command.contains("qemu-system") || _result.contains("Killed"))
if (!_command.contains("qemu-system"))
return false;
if (_command.contains("qemu-system") && _result.contains("Killed"))
return true;
//Error code: PROOT_IS_MISSING_0
if (_result.contains("proot\": error=2,")) {
AlertDialog alertDialog = new AlertDialog.Builder(_activity, R.style.MainDialogTheme).create();
@ -569,6 +571,11 @@ public class VMManager {
});
alertDialog.show();
return true;
} else if (_result.contains("No such file or directory")) {
//Error code: NO_SUCH_FILE_OR_DIRECTORY
VectrasApp.oneDialog(_activity.getResources().getString(R.string.problem_has_been_detected), _activity.getResources().getString(R.string.error_NO_SUCH_FILE_OR_DIRECTORY), true, false, _activity);
_activity.stopService(new Intent(_activity, MainService.class));
return true;
} else {
return false;
}