diff --git a/.gitignore b/.gitignore index 239ac06e..f37a2a37 100644 --- a/.gitignore +++ b/.gitignore @@ -42,9 +42,9 @@ htmlcov initrd.img -state/ +/state -tools/ +/tools *.swp diff --git a/TODO.md b/TODO.md index c8a3eaca..3e8f2246 100644 --- a/TODO.md +++ b/TODO.md @@ -27,8 +27,8 @@ ### Docs -- [ ] Overview -- [ ] Setup +- [x] Overview +- [x] Setup - [ ] Develop images - [ ] Packaging apps - [ ] Developing apps diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index 49a83cbe..67f028b4 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -4,9 +4,22 @@ - [Overview](overview.md) - [Setup](setup.md) -- [Developing images](images.md) -- [Packaging apps](packaging.md) -- [Developing apps](app_development.md) -- [The dev container](container/index.md) -- [The workspace](workspace/index.md) +- [Developing images](images/index.md) + - [EbcL image concept](images/overview.md) + - [EbcL image specification](images/spec.md) + - [Building an image from scratch](images/from_scatch.md) - [The example images](examples/index.md) +- [Kernel development](kernel.md) +- [Board Bringup](board_bringup.md) +- [Packaging apps](packaging.md) +- [Developing apps](apps/index.md) +- [Bulding old images](old_images.md) +- [The workspace in detail](workspace/index.md) +- [The dev container](dev_container.md) +- [The build tools](tools/index.md) + - [Embdgen](tools/embdgen.md) + - [Root generator](tools/root.md) + - [Root configurator](tools/root_config.md) + - [Initrd generator](tools/initrd.md) + - [Boot generator](tools/boot.md) + diff --git a/docs/app_development.md b/docs/app_development.md deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/apps/index.md b/docs/apps/index.md new file mode 100644 index 00000000..13106316 --- /dev/null +++ b/docs/apps/index.md @@ -0,0 +1 @@ +# Developing apps diff --git a/docs/assets/EmbeddedSystem.drawio b/docs/assets/EmbeddedSystem.drawio new file mode 100644 index 00000000..b053d33d --- /dev/null +++ b/docs/assets/EmbeddedSystem.drawio @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/EmbeddedSystem.drawio.png b/docs/assets/EmbeddedSystem.drawio.png new file mode 100644 index 00000000..f9700294 Binary files /dev/null and b/docs/assets/EmbeddedSystem.drawio.png differ diff --git a/docs/assets/EmbeddedSystem.drawio.svg b/docs/assets/EmbeddedSystem.drawio.svg new file mode 100644 index 00000000..6224d932 --- /dev/null +++ b/docs/assets/EmbeddedSystem.drawio.svg @@ -0,0 +1,4 @@ + + + +
System on Chip (SoC)
Hardware Layer
Bootloader (SPL)
Linux kernel
Linux Userland
(Libraries, Apps,
Containers, ...)
Very simple embedded system
System on Chip (SoC)
Hardware Layer
Bootloader (SPL)
Linux kernel
Linux Userland
(Libraries, Apps,
Containers, ...)
Trusted Execution Environment
(TEE)
Simple embedded system
System on Chip (SoC)
Hardware Layer
Bootloader (SPL)
Linux kernel
Linux Userland
(Libraries, Apps,
Containers, ...)
Trusted Execution Environment
(TEE)
Embedded system
Real-time
Operating
System
(e.g. FreeRTOS,
classic Autosar)
Linux kernel
Linux Userland
(Libraries, Apps,
Containers, ...)
Embedded High-Perfomance Controller
System on Chip (SoC)
Hardware Layer
Bootloader (SPL)
Hypervisor
Trusted Execution Environment
(TEE)
Real-time
Operating
System
(e.g. FreeRTOS,
classic Autosar)
Android kernel
Andorid
Userland
Other VMs
\ No newline at end of file diff --git a/docs/board_bringup.md b/docs/board_bringup.md new file mode 100644 index 00000000..3ada191a --- /dev/null +++ b/docs/board_bringup.md @@ -0,0 +1 @@ +# Board Bringup diff --git a/docs/container/index.md b/docs/container/index.md deleted file mode 100644 index bba5c77f..00000000 --- a/docs/container/index.md +++ /dev/null @@ -1,8 +0,0 @@ -# EB corbos Linux dev container - -The EB corbos Linux SDK dev container is a containerized build environment for the EB corbos Linux distribution. -The container allows building of images using [berrymill]( https://github.com/isbm/berrymill/) / [kiwi-ng](https://osinside.github.io/kiwi/) -or [elbe](https://elbe-rfs.org/), and building and packaging applications using [pbuilder](https://wiki.ubuntu.com/PbuilderHowto). - - - diff --git a/docs/dev_container.md b/docs/dev_container.md new file mode 100644 index 00000000..65f412c1 --- /dev/null +++ b/docs/dev_container.md @@ -0,0 +1 @@ +# The dev container diff --git a/docs/images/from_scatch.md b/docs/images/from_scatch.md new file mode 100644 index 00000000..41ed71ae --- /dev/null +++ b/docs/images/from_scatch.md @@ -0,0 +1 @@ +# Building an image from scratch diff --git a/docs/images.md b/docs/images/index.md similarity index 98% rename from docs/images.md rename to docs/images/index.md index 8f58600e..7d11c9ec 100644 --- a/docs/images.md +++ b/docs/images/index.md @@ -1,5 +1,7 @@ # Developing images +TODO: Rework + EB corbos Linux is intended as _embedded Linux distribution build kit_, like _Yocto_ is. Instead of starting form a pre-defined and pre-configured already integrated image, you describe what you need, and build a embedded Linux distribution tailored to your needs. @@ -41,4 +43,4 @@ of the template. The image descriptions of [kiwi-ng](https://osinside.github.io/kiwi/) and [elbe](https://elbe-rfs.org/) use different tags, but are very similar form the basic ideas, and converting a [kiwi-ng](https://osinside.github.io/kiwi/) to [elbe](https://elbe-rfs.org/) -is straight forward. \ No newline at end of file +is straight forward. diff --git a/docs/images/overview.md b/docs/images/overview.md new file mode 100644 index 00000000..a284c05e --- /dev/null +++ b/docs/images/overview.md @@ -0,0 +1 @@ +# EbcL image concept diff --git a/docs/images/spec.md b/docs/images/spec.md new file mode 100644 index 00000000..31674091 --- /dev/null +++ b/docs/images/spec.md @@ -0,0 +1 @@ +# EbcL image specification diff --git a/docs/kernel.md b/docs/kernel.md new file mode 100644 index 00000000..1952ab93 --- /dev/null +++ b/docs/kernel.md @@ -0,0 +1 @@ +# Kernel development diff --git a/docs/old_images.md b/docs/old_images.md new file mode 100644 index 00000000..b5a9c6bf --- /dev/null +++ b/docs/old_images.md @@ -0,0 +1 @@ +# Bulding old Berrymill images diff --git a/docs/overview.md b/docs/overview.md index ddb72682..033427e8 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -2,10 +2,18 @@ EB corbos Linux built on Ubuntu is a long-term maintained embedded Linux distribution focused on automotive ECUs. It provides security patches for a frozen package set for up to 15 years on a quite low pricing. To realize this, Elektrobit partners with Canonical. EB corbos Linux makes use of many Ubuntu packages, qualifies these packages for automotive embedded use-cases in reference images, and adds additional embedded optimized components, to create an industry grade embedded Linux build toolkit. -In contrast to IT Linux distributions, EB corbos Linux allows a user to create a completely customer specific image from scratch in a reproducible way. This is realized using this SDK. +In contrast to IT Linux distributions, EB corbos Linux allows a user to create a completely customer specific image from scratch in a reproducible way. This is realized using this SDK. A free variant of EB corbos Linux is available at the [Elektrobit homepage](https://www.elektrobit.com/products/ecu/eb-corbos/linux-built-on-ubuntu/). The free variant doesn't contain proprietary hardware drivers or pre-qualified reference images.To kick-start the development of new ECUs, a full EB corbos Linux release also contains pre-qualified reference images which already implement typical automotive use-cases. Please contact [Elektrobit sales](https://www.elektrobit.com/contact-us/) to get a full evaluation package of EB corbos Linux. -A free variant of EB corbos Linux is available at the [Elektrobit homepage](https://www.elektrobit.com/products/ecu/eb-corbos/linux-built-on-ubuntu/). The free variant doesn't contain proprietary hardware drivers or pre-qualified reference images. +![Embedded Systems](/assets/EmbeddedSystem.drawio.png) -To kick-start the development of new ECUs, a full EB corbos Linux release also contains pre-qualified reference images which already implement typical automotive use-cases. Please contact [Elektrobit sales](https://www.elektrobit.com/contact-us/) to get a full evaluation package of EB corbos Linux. +The image above shows a range of embedded system architectures. -[This repository](https://github.com/Elektrobit/ebcl_template/) provides a template workspace to start developing your own Linux images and applications. It's based on a dev container to provide a consistent build environment. This dev container can also be used stand-alone with other IDEs or in CI environments. For more details about the container and stand-alone usage look at the dev container chapter. +Very simple embedded systems run only a bare-metal Linux. An example for such a system is the Raspberry Pi running Raspberry Pi OS. Such images can be easily directly generated with tools like [elbe](https://elbe-rfs.org/), [kiwi-ng](https://osinside.github.io/kiwi/) or [debos](https://github.com/go-debos/debos), but this architecture doesn’t fit industrial needs. + +For real world industrial solutions at least secure boot is required, and typically a Trusted Execution Environment (TEE) is involved in the secure boot process. This is depicted above as a simple embedded system. Such images may already require a more complex partition layout, depending on the bootloader and SoC requirements. + +In the automotive world, in addition to a Posix OS, typically also a safety certified OS like classic Autosar is involved. This is depicted above as an embedded system. If this is combined with an A/B schema for the update of the Linux and the classic Autosar the partition layouts get quite complex and can hardly be directly created with the tools mentioned above. + +Our day to day business at [Elektrobit](https://www.elektrobit.com/) are automotive high-performance controllers. Which extends the embedded system architecture with a hypervisor and multiple virtual machines (VMs), like an additional Andriod VM for infotainment solutions. The target of EB corbos Linux, and this SDK, is to fully support such embedded high-performance controller system architectures, and allow development and maintenance of such systems in an easy, efficient and reliable way. + +[This repository](https://github.com/Elektrobit/ebcl_template/) provides a template workspace to start developing your own Linux images and applications. It's based on a [dev container](https://github.com/Elektrobit/ebcl_dev_container) to provide a consistent build environment. This dev container can also be used stand-alone with other IDEs or in CI environments. For more details about the container and stand-alone usage look at the [dev container repository](https://github.com/Elektrobit/ebcl_dev_container). diff --git a/docs/setup.md b/docs/setup.md index e9aabdd4..e9810ec9 100644 --- a/docs/setup.md +++ b/docs/setup.md @@ -1,20 +1,18 @@ # Setup -The EB corbos Linux SDK is tested with Ubuntu 22.04 and Ubuntu 24.04 host environments on x86_64 machines. It is not compatible with ARM hosts, but ARM host support is planned. +The EB corbos Linux template workspace is tested using Ubuntu 22.04 and Ubuntu 24.04 host environments on x86_64 machines. It is not compatible with other host CPU architectures, but arm64 host support is planned for a future release. -The build host needs to provide a Docker installation and a Python 3 installation, and Docker needs support for running privileged containers. For x86_64 images KVM acceleration can be used for speeding up the build, if nested virtualization is supported in the host environment. +The build host needs to provide a Docker installation and a Python 3 installation, including Python3 venv. Docker needs support for running privileged containers. For amd64 images, KVM acceleration can be used for speeding up the build, if nested virtualization is supported in the host environment. -The SDK contains a [modified variant of elbe](https://github.com/Elektrobit/elbe), which allows image building without using a nested virtual machine. This simplifies the setup and provides good build speed, but it requires support for executing non-native binaries if images for foreign architectures shall be built. To make this work, the host needs to support _binfmt_. On Ubuntu hosts, _binfmt_ can be enabled by installing the packages _binfmt-support_ and _qemu-user-static_. To allow mount operations which are required during image build, a privileged execution of the container is necessary, and the _/dev_ folder needs to be bind-mounted into the container to allow access to newly created _losetup_ devices. Running other workloads on the build host may cause issues, since _binfmt_ and _losetup_ configure the kernel and therefore modify the host environment for all running processes. +The EB corbos Linux template workspace is based on a [dev container](https://github.com/Elektrobit/ebcl_dev_container), and is not using VMs for cross-building. This simplifies the setup and provides good build speed, but it requires support for executing non-native binaries if images for foreign architectures shall be built. To make this work, the host needs to support _binfmt_. On Ubuntu hosts, _binfmt_ can be enabled by installing the packages _binfmt-support_ and _qemu-user-static_. To allow mount operations which are required during image build, a privileged execution of the container is necessary, and the _/dev_ folder needs to be bind-mounted into the container to allow access to newly created _losetup_ devices. Running other workloads on the build host may cause issues, since _binfmt_ and _losetup_ configure the kernel and therefore modify the host environment for all running processes and containers. -The following sections assume that you don't have an Ubuntu 22.04 or 24.04 host OS and use the Remote SSH feature of Visual Studio Code to connect to a remote environment as build host. This will work if you can SSH into the build host and doesn't require UI-support. On Windows, WSL2 should also work. +The following sections assume that you don't have an Ubuntu 22.04 or 24.04 host OS and use the Remote SSH feature of Visual Studio Code to connect to a remote environment as build host. This will work if you can SSH into the build host and doesn't require UI-support on the build host. On Windows, WSL2 should also work. ## Optional: Prepare Virtual Box VM -If you don't have already an Ubuntu development host, you can setup a new one using [VirtualBox](https://www.virtualbox.org/), a free hypervisor available for many operating systems. +If you don't already have an Ubuntu development host, you can create a new one using [VirtualBox](https://www.virtualbox.org/), a free hypervisor available for many operating systems. -First download an Ubuntu ISO image. For preparing this section, I used an Ubuntu 24.04 server ISO, since a desktop UI is not needed. - -First download and install [VirtualBox](https://www.virtualbox.org/), then create a new virtual machine with the following options: +First download an Ubuntu ISO image. For preparing this section, I used an Ubuntu 24.04 server ISO, since a desktop UI is not needed. Then download and install [VirtualBox](https://www.virtualbox.org/), and create a new virtual machine with the following options: - RAM: 8192 MB (less should also work) - CPU: 3 cores (more is better, less will also work) @@ -25,107 +23,55 @@ Skipping automatic installation will allow you to change the hardware settings b Boot the VM with the Ubuntu ISO image and follow the installation wizard. I have chosen the minimal server variant. -After installation, log in to the VM and install openssh-server, docker and git: `sudo apt install openssh-server docker.io git`. -Get the IP address of the VM by running the command `ip addr`. The address starting with `192.168.` is the one of the host-only interface. +After installation, log in to the VM and install openssh-server, docker and git: `sudo apt install openssh-server docker.io git`. Get the IP address of the VM by running the command `ip addr`. The address starting with `192.168.` is the one of the host-only interface. For me the address was `192.168.56.106`. ## Setup Visual Studio Code -Install [Visual Studio Code](https://code.visualstudio.com/) on your local machine. It's for free available for all major operating systems. +Install [Visual Studio Code](https://code.visualstudio.com/) on your local machine. It's available for free for all major operating systems. -Run [Visual Studio Code](https://code.visualstudio.com/) (VS Code) and open the extensions view (_CTRL_ + _SHIFT_ + _X_). -Now install the _Remote SSH_ and the _Dev Containers_ extensions. +Run [Visual Studio Code](https://code.visualstudio.com/) (VS Code) and open the extensions view (_CTRL_ + _SHIFT_ + _X_). Now install the _Remote SSH_ and the _Dev Containers_ extensions. ### Prepare SSH connection -Let's try to connect to the Ubuntu remote development host. Open a new terminal in VS Code and type `ssh @`. -In my case it is: `ssh ebcl@192.168.56.106`. -If it works, you are asked to accept the key, then you can login with your password. -This will give you a shell on the remote development host. +Let's try to connect to the Ubuntu remote development host. Open a new terminal in VS Code and type `ssh @`. In my case it is: `ssh ebcl@192.168.56.106`. If it works, you are asked to accept the key, then you can login with your password. This will give you a shell on the remote development host. -If you are on Windows, and you get an error that ssh is not available, you can install [git for windows](https://www.git-scm.com/download/win). -This will also give you a ssh client. +If you are on Windows, and you get an error that ssh is not available, you can install [git for windows](https://www.git-scm.com/download/win). This will also give you a ssh client. -To avoid typing your password all the time, you can authenticate with a key. -To use key authentication, disconnect form the remote host by typing `exit`, and then run `ssh-copy-id @` in the VS Code shell. -If you are on Windows and get the error that the command `ssh-copy-id` is not known, you can use `type $env:USERPROFILE\.ssh\id_rsa.pub | ssh @ "cat >> .ssh/authorized_keys"`. If you don't have an SSH authentication key, you can create one using the `ssh-keygen` command. +To avoid typing your password all the time, you can authenticate with a key. To use key authentication, disconnect from the remote host by typing `exit`, and then run `ssh-copy-id @` in the VS Code shell. If you are on Windows and get the error that the command `ssh-copy-id` is not known, you can use `type $env:USERPROFILE\.ssh\id_rsa.pub | ssh @ "cat >> .ssh/authorized_keys"`. If you don't have an SSH authentication key, you can create one using the `ssh-keygen` command. ### Connect using VS Code _Remote SSH_ plugin -Now you are ready to use the _Remote SSH_. Open VS Code, then open the command palette (_Ctrl_ + _Shift_ + _P_) and choose _Remote SSH: Connect to host_. -Select _Add new host_ and enter `@`. In my case, I entered `ebcl@192.168.56.106`. Then select Linux as host OS. -VS Code will install the remote VS Code server on the remote host, and open a window connected to this server. -If it works, you should see `SSH: ` in the lower left corner. Pressing on this element will bring up the connection menu. +Now you are ready to use the _Remote SSH_. Open VS Code, then open the command palette (_Ctrl_ + _Shift_ + _P_) and choose _Remote SSH: Connect to host_. Select _Add new host_ and enter `@`. In my case, I entered `ebcl@192.168.56.106`. Then select Linux as the host OS. VS Code will install the remote VS Code server on the remote host, and open a window connected to this server. If it works, you should see `SSH: ` in the lower left corner. Pressing on this element will bring up the connection menu. ### Install required tools and clone ebcl_template repository -To use the SDK, we need _git_ to clone the remote repository (or you download it otherwise), and we need _Docker_ to run the dev container. -All other required tools come as part of the container. -When connect to the remote host, opening a new terminal in VS Code will give you a shell on the remote machine. -Use this shell to install _Docker_ and _git_: `sudo apt install docker.io git`. -To be able to use the docker service, your user needs to be part of the docker group. -Add your user to this group by running `sudo usermod -aG docker $USER`. -This needs a restart of the remote development host to take an effect. To restart the host, run `sudo reboot`. -This will disconnect your VS Code remote connection, and you need to reconnect after restart of the remote development host. +If you start from a plain Ubuntu 22.04 installation, you can install the needed dependencies using the following command: `sudo apt install docker.io python3 python3-venv python-is-python3 binfmt-support qemu-user-static` + +To use dev containers, your user on the remote machine needs to be able to create local Docker containers. To give your user this rights, you need to add the user to the docker group with the command: `sudo usermod -aG docker $USER`. The changes become active after a new login. Close the remote connection using the menu in the lower left corner of your VS Code window and reopen the connection using the command palette. + +To use the SDK, we need _git_ to clone the remote repository (or you download it otherwise), and we need _Docker_ to run the dev container. All other required tools come as part of the container. -Open again a shell on the remote machine, change you your preferred storage location, and clone the _ebcl_template_ repositoy -by running: `git clone https://github.com/Elektrobit/ebcl_template.git`. This will give you a new folder _ebcl_template_. +Open again a shell on the remote machine, change you your preferred storage location, and clone the _ebcl_template_ repository by running: `git clone https://github.com/Elektrobit/ebcl_template.git`. This will give you a new folder _ebcl_template_. -To build the container, change to _ebcl_template/container_ and run `./build_container`. -This will build the free version of the SDK container. Wait for the build to finish, this may take a while for the first run. -If you got an official EB corbos Linux delivery or evaluation bundle, this contains a pre-build container which may contain -additional proprietary tools, e.g. a safety certified compiler. In this case, please follow the instruction in the delivery -document to import the pre-built container. +In VS Code, open “File > Open Workspace from File…”, navigate to the _ebcl_template_ folder and select _ebcl_sdk.code-workspace_. Now you can enter the dev container by opening the remote menu in the lower left corner and selecting “Reopen in Container”. +This will automatically run a local build of the EB corbos Linux dev container. The first time, when the container is built completely from scratch, may take quite some time. On my machine it takes about 30 minutes. When you open the workspace a second time, it will be a matter of seconds. Now you are ready to start development! ### Using the EBcL SDK VS Code integration -To use VS Code for developing with the EBcL SDK, choose _File > Open Workspace from File_ and navigate to the ebcl_template location. -Select the _ebcl_sdk_1-2.code-workspace_ file. This will open the folder bind-mounted in the docker dev container environment. +To use VS Code for developing with the EBcL SDK, choose _File > Open Workspace from File_ and navigate to the ebcl_template location. Select the _ebcl_sdk.code-workspace_ file. This will open the folder bind-mounted in the docker dev container environment. -Now you can use the VS Code build tasks (_Ctrl_ + _Shift_ + _B_) to build the example images and build and package the example apps. +Now you can use the VS Code build tasks (_Ctrl_ + _Shift_ + _B_) to build the example images and build and package the example applications. ### Using the EBcL SDK container stand-alone. -To use the EBcL SDK container standalone, you can run and enter the container for interactive mode using the _run_container_ script. -If you don't provide any arguments, this will drop you to an interactive shell. If you provide arguments, this will execute the command -given as argument in the container. - -If you want to integrate the container in a CI environment, or another IDE, take a look at the _run_container_ script. - -If you want to use _pbuilder_ for application packaging, image builds with _elbe_, or KVM accelerated image builds with _kiwi-ng_, -you need to run the container as privileged container. - -For _elbe_ image builds, you also need to bind-mount the `/dev` folder form the host into the container, to make new created -_losetup_ devices available. - -The tooling in the container expects the VS Code workspace bind-mounted at `/workspace`, but this is only used for some edge cases -which manipulate the static considered parts of the build environment. Most of the commands make use of the mountpoints below the -`/build` folder. - -All build results will be written to sub-folders of `/build/results`. In stand-alone mode, a host folder should be rw bind-mounted -to this location. - -The users identity, i.e. used for package maintainer information, is taken from the _env_ script at `/build/identity/env`, located -at `/identity/env` in the template. This folder can be mounted read-only, to avoid unintended change of the identity information. - -The image descriptions are expected to be located at `/build/images`. This folder should also be bind-mounted read-only to ensure that -the image descriptions are not affected as a side effect of SDK commands. The container environment automatically overlay-mounts this -folder writeable at the location `/tmp/build/images`. - -The sysroots should also be read-only bind-mounted, to ensure that the application build process cannot manipulate it and provide repeatable -results. The SDK cmake commands expects the sysroot at the locations `/build/sysroot_x86_64` and `/build/sysroot_aarch64`. +If you don’t want to use VS Code, or you want to integrate the EBcL SDK in your CI workflows, you can use the dev container stand-alone. For more details on how to do this, take a look at [dev container](https://github.com/Elektrobit/ebcl_dev_container). ### Enabling nested virtualization for KVM support -The Linux KVM technology allows running virtual machines, for the same CPU architecture as the host, with almost native speed. - -To make use of this in VirtualBox, you need to disable the Windows Hypervisor. -Please be aware that this may affect other virtualization tooling like Windows WSL. -To disable the Windows Hypervisor, open a PowerShell as Administrator, and run `bcdedit /set hypervisorlaunchtype off`. -Afterwards, you need to reboot your Windows machine. +The Linux KVM technology allows running virtual machines, for the same CPU architecture as the host, with almost native speed. To make use of this in VirtualBox, you need to disable the Windows Hypervisor. Please be aware that this may affect other virtualization tooling like Windows WSL. To disable the Windows Hypervisor, open a PowerShell as Administrator, and run `bcdedit /set hypervisorlaunchtype off`. Afterwards, you need to reboot your Windows machine. -After the reboot, you can enable nested virtualization for your VirtualBox VM by editing the machine, choosing _System > CPU_ -and enabling the checkbox for nested VT-x/AMD-V. +After the reboot, you can enable nested virtualization for your VirtualBox VM by editing the machine, choosing _System > CPU_ and enabling the checkbox for nested VT-x/AMD-V. diff --git a/docs/tools/boot.md b/docs/tools/boot.md new file mode 100644 index 00000000..d721bd81 --- /dev/null +++ b/docs/tools/boot.md @@ -0,0 +1 @@ +# Boot generator diff --git a/docs/tools/embdgen.md b/docs/tools/embdgen.md new file mode 100644 index 00000000..0f70c811 --- /dev/null +++ b/docs/tools/embdgen.md @@ -0,0 +1 @@ +# Embdgen diff --git a/docs/tools/index.md b/docs/tools/index.md new file mode 100644 index 00000000..6ef00119 --- /dev/null +++ b/docs/tools/index.md @@ -0,0 +1 @@ +# The build tools diff --git a/docs/tools/initrd.md b/docs/tools/initrd.md new file mode 100644 index 00000000..1bba2a41 --- /dev/null +++ b/docs/tools/initrd.md @@ -0,0 +1 @@ +# Initrd generator diff --git a/docs/tools/root.md b/docs/tools/root.md new file mode 100644 index 00000000..13026fde --- /dev/null +++ b/docs/tools/root.md @@ -0,0 +1 @@ +# Root generator diff --git a/docs/tools/root_config.md b/docs/tools/root_config.md new file mode 100644 index 00000000..5b62c745 --- /dev/null +++ b/docs/tools/root_config.md @@ -0,0 +1 @@ +# Root configurator