Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 66 additions & 0 deletions docs/config/microshift-edge.ks
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
lang en_US.UTF-8
keyboard us
timezone UTC
text
reboot

# Configure network to use DHCP and activate on boot
network --bootproto=dhcp --device=link --activate --onboot=on

# Partition the disk with hardware-specific boot partitions, adding an LVM
# volume that contains a 10GB+ system root. The remainder of the volume will
# be used by the LVMS CSI driver for storing data.
zerombr
clearpart --all --initlabel
Comment thread
coderabbitai[bot] marked this conversation as resolved.
reqpart --add-boot
part pv.01 --grow
volgroup rhel pv.01
logvol / --vgname=rhel --fstype=xfs --size=10240 --name=root

# Lock root user account
rootpw --lock

# Deploy the ostree commit embedded in the edge-installer ISO
ostreesetup --nogpg --osname=rhel --remote=edge --url=file:///run/install/repo/ostree/repo --ref=rhel/9/x86_64/edge

# Post install configuration
%post --log=/dev/console --erroronfail

@coderabbitai coderabbitai Bot Aug 7, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail
rg -n -C 3 'openshift-pull-secret|firewall-offline-cmd|10\.42\.0\.0/16|169\.254\.169\.1' .

Repository: openshift/microshift

Length of output: 50379


Add MicroShift runtime prerequisites to the Kickstart.

docs/config/microshift-edge.ks currently renders only a user account and does not create /etc/crio/openshift-pull-secret with mode 0600 or add the trusted firewall sources 10.42.0.0/16 and 169.254.169.1. Render the pull secret during image build without committing it, and add the MicroShift firewall rules here or via an equivalent blueprint customization.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/config/microshift-edge.ks` at line 27, Update the Kickstart post-install
configuration around %post to create /etc/crio/openshift-pull-secret with mode
0600 using the build-time pull secret without committing its contents, and
configure trusted firewall sources 10.42.0.0/16 and 169.254.169.1 through the
Kickstart or equivalent blueprint customization.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Won't fix — pull secret and firewall rules are handled by blueprint customizations in the official procedure that this guide references.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '--- documentation outline ---'
ast-grep outline docs/contributor/rhel4edge_iso.md --items all 2>/dev/null || true

printf '%s\n' '--- relevant guide content ---'
rg -n -i -C 5 \
  'blueprint|customization|pull.?secret|firewall|image.builder|composer|red.?hat' \
  docs/contributor/rhel4edge_iso.md docs/config/microshift-edge.ks || true

printf '%s\n' '--- repository references to required settings ---'
rg -n -i -C 3 \
  'openshift-pull-secret|firewall-offline-cmd|10\.42\.0\.0/16|169\.254\.169\.1' \
  docs config packaging 2>/dev/null || true

Length of output: 44838


🤖 web_search executed:

Red Hat Build of MicroShift 4.22 "Embedding in a RHEL for Edge image" blueprint pull secret /etc/crio/openshift-pull-secret customizations

Length of output: 14288


@copejon, the finding remains valid.

The linked Red Hat procedure instructs users to add the pull secret and both firewall sources in the Kickstart %post section. It does not provide both settings through blueprint customizations.

The repository blueprint template configures the firewall sources, but it does not configure /etc/crio/openshift-pull-secret. docs/config/microshift-edge.ks replaces the procedure Kickstart and currently omits both requirements.

You are interacting with an AI system.


# Create a default redhat user, allowing it to run sudo commands without password
useradd -m -d /home/redhat -p \$5\$XDVQ6DxT8S5YWLV7\$8f2om5JfjK56v9ofUkUAwZXTxJl3Sqnc9yPnza4xoJ0 redhat
echo -e 'redhat\tALL=(ALL)\tNOPASSWD: ALL' > /etc/sudoers.d/microshift
Comment thread
coderabbitai[bot] marked this conversation as resolved.

# Import Red Hat public keys to allow RPM GPG check (not necessary if a system is registered)
if ! subscription-manager status >& /dev/null ; then
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-*
fi

# Make the KUBECONFIG from MicroShift directly available for the root user
echo -e 'export KUBECONFIG=/var/lib/microshift/resources/kubeadmin/kubeconfig' >> /root/.bash_profile

# Configure systemd journal service to persist logs between boots and limit their size to 1G
sudo mkdir -p /etc/systemd/journald.conf.d
cat > /etc/systemd/journald.conf.d/microshift.conf <<EOF
[Journal]
Storage=persistent
SystemMaxUse=1G
RuntimeMaxUse=1G
EOF

# Make sure all the Ethernet network interfaces are connected automatically
# by removing autoconnect option from the configuration files
find /etc/NetworkManager -name '*.nmconnection' -print0 | while IFS= read -r -d $'\0' file ; do
if grep -qE '^type=ethernet' "${file}" ; then
sed -i '/autoconnect=.*/d' "${file}"
fi
done

# Work around bootupd not installing the EFI grub.cfg during ostree deployment.
# Without these files the UEFI firmware loads grubx64.efi but GRUB drops to a
# shell because it cannot find its configuration.
if [ -d /boot/efi/EFI/redhat ] && [ -f /usr/lib/bootupd/grub2-static/grub-static-efi.cfg ]; then
cp /usr/lib/bootupd/grub2-static/grub-static-efi.cfg /boot/efi/EFI/redhat/grub.cfg
cp /boot/grub2/bootuuid.cfg /boot/efi/EFI/redhat/bootuuid.cfg
fi
Comment thread
coderabbitai[bot] marked this conversation as resolved.

%end
123 changes: 85 additions & 38 deletions docs/contributor/rhel4edge_iso.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,24 @@
# Install MicroShift on RHEL for Edge
To test MicroShift in a setup similar to the production environment, it is necessary to create a RHEL for Edge ISO installer with all the necessary components preloaded on the image.

The official [Embedding in a RHEL for Edge image](https://docs.redhat.com/en/documentation/red_hat_build_of_microshift/4.22/html/embedding_in_a_rhel_for_edge_image/microshift-embed-in-rpm-ostree) documentation covers the full procedure for building an installer ISO from released MicroShift RPMs. This document describes a modified workflow for building from **locally compiled** RPMs, which is necessary when testing changes that have not been released.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We now support latest in the doc links, so let's replace 4.22 by latest?


The procedures described in this document require the following setup:
* A `physical hypervisor host` with the [libvirt](https://libvirt.org/) virtualization platform, to be used for starting virtual machines that run RHEL for Edge OS containing MicroShift binaries
* A `physical hypervisor host` running RHEL with the [libvirt](https://libvirt.org/) virtualization platform and at least 50GB of free disk space
* Packages: `libvirt`, `virt-install`, `virt-viewer`, `qemu-kvm`
Comment thread
ggiguash marked this conversation as resolved.
* A `development virtual machine` set up according to the [MicroShift Development Environment](./devenv_setup.md) instructions, to be used for building a RHEL for Edge ISO installer
* An active RHEL subscription is required for building images

## Build RHEL for Edge Installer ISO
Log into the `development virtual machine` with the `microshift` user credentials.

Follow the instructions in the [RPM Packages](./devenv_setup.md#rpm-packages) section to create MicroShift RPM packages.
Log into the `development virtual machine` with the `microshift` user credentials.

### Prerequisites
Execute the `scripts/devenv-builder/configure-composer.sh` script to install the tools necessary for building the installer image.

Execute the `scripts/devenv-builder/configure-composer.sh` script to install `osbuild-composer` and its dependencies.
```bash
~/microshift/scripts/devenv-builder/configure-composer.sh
```

Download the OpenShift pull secret from the https://console.redhat.com/openshift/downloads#tool-pull-secret page and save it into the `~/.pull-secret.json` file.

Expand All @@ -20,17 +27,54 @@ Make sure there is more than 20GB of free disk space necessary for the build art
~/microshift/scripts/devenv-builder/cleanup-composer.sh -full
```

### Building Installer
> TODO: The `image-builder/build.sh` script has been deprecated.
> This section will be rewritten in the context of [USHIFT-4299](https://issues.redhat.com/browse/USHIFT-4299).
### Build MicroShift RPMs

Follow the instructions in the [RPM Packages](./devenv_setup.md#rpm-packages) section or run:
```bash
cd ~/microshift
make rpm
```

The RPMs are placed under `_output/rpmbuild/RPMS/`.

### Create a Local RPM Repository

Create a local repository from the built RPMs so that `osbuild-composer` can resolve them as a package source. This replaces the released MicroShift RPMs that the [official procedure](https://docs.redhat.com/en/documentation/red_hat_build_of_microshift/4.22/html/embedding_in_a_rhel_for_edge_image/microshift-embed-in-rpm-ostree#adding-microshift-repos-image-builder_microshift-embed-in-rpm-ostree) obtains from CDN.

```bash
BUILDDIR=~/microshift/_output/image-builder
mkdir -p "${BUILDDIR}/microshift-local"
cp ~/microshift/_output/rpmbuild/RPMS/*/*.rpm "${BUILDDIR}/microshift-local/"
createrepo "${BUILDDIR}/microshift-local"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

for command_name in createrepo_c createrepo; do
  if command -v "${command_name}" >/dev/null 2>&1; then
    printf '%s: %s\n' "${command_name}" "$(command -v "${command_name}")"
  else
    printf '%s: unavailable\n' "${command_name}"
  fi
done

Repository: openshift/microshift

Length of output: 208


🏁 Script executed:

#!/bin/bash
set -euo pipefail

file="$(git ls-files | rg '^docs/contributor/rhel4edge_iso\.md$')"
printf '%s\n' "$file"
cat -n "$file" | sed -n '1,145p'
printf '\nPackage and command references:\n'
rg -n -i 'createrepo(_c)?|edk2-ovmf|dnf .*install|microshift-local' docs scripts .github 2>/dev/null | head -200

Repository: openshift/microshift

Length of output: 13892


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' 'configure-composer.sh:'
cat -n scripts/devenv-builder/configure-composer.sh | sed -n '1,90p'

printf '%s\n' 'configure-vm.sh relevant sections:'
cat -n scripts/devenv-builder/configure-vm.sh | sed -n '250,350p'

printf '%s\n' 'All repository references:'
rg -n -C 2 '\bcreaterepo(_c)?\b' --glob '!docs/contributor/rhel4edge_iso.md'

Repository: openshift/microshift

Length of output: 9516


🌐 Web query:

RHEL 9 documentation createrepo_c package createrepo command repository metadata

💡 Result:

In Red Hat Enterprise Linux (RHEL) 9, the legacy createrepo command has been replaced by createrepo_c [1]. The createrepo_c package provides a C-based implementation of the repository metadata generation utility, which is designed to be more efficient than the original Python-based version [2][3][4]. To create or update repository metadata in RHEL 9, use the createrepo_c command. 1. Installation If not already present, you can install the utility using the following command: sudo dnf install createrepo_c 2. Generating Repository Metadata To create a repository from a directory containing RPM packages, run the command pointing to that directory [5][6]: sudo createrepo_c /path/to/your/rpms This command will generate a repodata/ directory containing the necessary XML metadata files [6]. 3. Updating Repository Metadata If you add or remove packages from the repository, you can update the existing metadata efficiently by using the --update flag [7][6]: sudo createrepo_c --update /path/to/your/rpms Using --update is significantly faster for large repositories because it reuses existing metadata for packages that have not changed, recalculating only what is necessary [7][4]. Key Features: - Compatibility: createrepo_c is the standard tool for managing repositories in RHEL 9 and is fully compatible with modern DNF-based systems [6][8]. - Performance: Being written in C, it offers improved performance and lower resource usage compared to the legacy tool [2][3]. - Utilities: The package also includes related utilities such as mergerepo_c (for merging repositories), modifyrepo_c (for modifying metadata), and sqliterepo_c [3].

Citations:


🌐 Web query:

site:docs.redhat.com/en/documentation/red_hat_enterprise_linux/9 createrepo_c "dnf install"

💡 Result:

To install the createrepo_c package on systems that use DNF (such as RHEL, Fedora, or AlmaLinux), use the following command: sudo dnf install createrepo_c createrepo_c is a tool used to generate common metadata for package repositories [1][2]. It creates the necessary repository metadata (in XML format) from a directory of RPM packages, enabling DNF or other package managers to treat that directory as a valid software repository [1][3]. It is frequently used in workflows involving custom software distribution and repository management [4][2]. Note that while createrepo_c is used to prepare repositories, it is a separate utility from DNF itself; DNF is the client-side tool used to install software from repositories [5][6].

Citations:


🌐 Web query:

site:access.redhat.com RHEL 9 createrepo package createrepo_c command

💡 Result:

In Red Hat Enterprise Linux (RHEL) 9, the legacy createrepo tool has been replaced by createrepo_c [1]. You should use the createrepo_c command to generate repository metadata for your RPM packages [2]. The createrepo_c package provides the functionality required to create, update, and manage local yum/dnf repositories [1]. Key details: - Package Name: The tool is provided by the createrepo_c package [3][1]. - Command: Use the createrepo_c command [2]. For example, to create a repository in the current directory, run: createrepo_c. [2] - Context: While older RHEL versions used createrepo, RHEL 8 and RHEL 9 utilize the more efficient C-based implementation, createrepo_c, to handle repository metadata generation [1][4]. If you are migrating legacy workflows that relied on the createrepo command, you should update those scripts or commands to use createrepo_c [1][2].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' 'Tracked setup references with line numbers:'
rg -n -C 3 '\bcreaterepo(_c)?\b' scripts/devenv-builder docs/contributor/rhel4edge_iso.md

printf '%s\n' 'Package-name references in repository metadata files:'
rg -n -i '(^|[^[:alnum:]_])createrepo(_c)?([^[:alnum:]_]|$)' --glob '*.spec' --glob '*.yaml' --glob '*.yml' --glob '*.toml' --glob '*.json' --glob '*.txt' . 2>/dev/null || true

Repository: openshift/microshift

Length of output: 2826


Use createrepo_c on RHEL 9.

Change line 48 and update scripts/devenv-builder/configure-composer.sh and scripts/devenv-builder/configure-vm.sh to install and invoke createrepo_c.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/contributor/rhel4edge_iso.md` at line 48, Replace the createrepo
invocation in the RHEL 4edge ISO instructions with createrepo_c, and update
configure-composer.sh and configure-vm.sh to install the createrepo_c package
and invoke its command consistently.

chmod -R a+rX "${BUILDDIR}/microshift-local"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Grant Image Builder access to the parent directories.

chmod -R a+rX "${BUILDDIR}/microshift-local" does not grant traversal permission on /home/microshift or its parent directories. A restricted home directory can cause the file:// source to fail with permission denied. Add traverse permission to the required parents or place the repository in a shared path. The official MicroShift workflow includes a home-directory permission step. (docs.redhat.com)

Proposed fix
 chmod -R a+rX "${BUILDDIR}/microshift-local"
+chmod a+rx "${HOME}" "${HOME}/microshift" \
+    "${HOME}/microshift/_output" "${BUILDDIR}"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
chmod -R a+rX "${BUILDDIR}/microshift-local"
chmod -R a+rX "${BUILDDIR}/microshift-local"
chmod a+rx "${HOME}" "${HOME}/microshift" \
"${HOME}/microshift/_output" "${BUILDDIR}"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/contributor/rhel4edge_iso.md` at line 49, Update the Image Builder setup
instructions around the chmod command to grant traverse permission on
/home/microshift and any required parent directories before using the file://
source. Preserve the recursive read/access permissions for
BUILDDIR/microshift-local, following the official workflow’s home-directory
permission step.

```

Register it with `osbuild-composer`:
```bash
cat <<EOF | sudo tee /tmp/microshift-local.toml
id = "microshift-local"
name = "MicroShift Local RPM Repo"
type = "yum-baseurl"
url = "file://${BUILDDIR}/microshift-local/"
check_gpg = false
check_ssl = false
system = false
EOF

sudo composer-cli sources add /tmp/microshift-local.toml
```

### Build the Image

With the local RPM source registered, follow the official documentation starting from [Adding MicroShift repositories to image builder](https://docs.redhat.com/en/documentation/red_hat_build_of_microshift/4.22/html/embedding_in_a_rhel_for_edge_image/microshift-embed-in-rpm-ostree#adding-microshift-repos-image-builder_microshift-embed-in-rpm-ostree) through [Download the ISO and prepare it for use](https://docs.redhat.com/en/documentation/red_hat_build_of_microshift/4.22/html/embedding_in_a_rhel_for_edge_image/microshift-embed-in-rpm-ostree#microshift-download-iso-prep-for-use_microshift-embed-in-rpm-ostree). The procedure is identical — `osbuild-composer` will resolve `microshift` packages from the local repository instead of CDN.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here about latest

Use `rhel/9/x86_64/edge` as the ostree ref in all `composer-cli compose start-ostree --ref` commands. This must match the ref in the [`microshift-edge.ks`](../config/microshift-edge.ks) kickstart.

### Disk Partitioning
The `kickstart.ks` file is configured to partition the main disk using `Logical Volume Manager` (LVM). Such partitioning is required for the data volume to be utilized by the MicroShift CSI driver and it allows for flexible file system customization if the disk space runs out.
The [`microshift-edge.ks`](../config/microshift-edge.ks) file is configured to partition the main disk using `Logical Volume Manager` (LVM). Such partitioning is required for the data volume to be utilized by the MicroShift CSI driver and it allows for flexible file system customization if the disk space runs out.

By default, the following partition layout is created and formatted with the `XFS` file system:
* BIOS boot partition (1MB)
* It is required to boot ISO to systems with legacy BIOS while using GPT as the partitioning scheme.
* EFI partition with EFI file system (200MB)
By default, the following partition layout is created. The `/boot` and root partitions use the `XFS` file system:
* EFI System Partition with FAT file system (600MB)
* Boot partition is allocated on a 1GB volume
* The rest of the disk is managed by the `LVM` in a single volume group named `rhel`
* System root partition is allocated on a 10GB volume (minimal recommended size for a root partition)
Expand All @@ -41,63 +85,66 @@ By default, the following partition layout is created and formatted with the `XF

As an example, a 20GB disk is partitioned in the following manner by default.
```
$ lsblk /dev/sda
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 200M 0 part /boot/efi
├─sda3 8:3 0 800M 0 part /boot
└─sda4 8:4 0 19G 0 part
$ lsblk /dev/vda
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda 252:0 0 20G 0 disk
├─vda1 252:1 0 600M 0 part /boot/efi
├─vda2 252:2 0 1G 0 part /boot
└─vda3 252:3 0 18.4G 0 part
└─rhel-root 253:0 0 10G 0 lvm /sysroot

$ sudo vgdisplay -s
"rhel" <19.02 GiB [10.00 GiB used / <9.02 GiB free]
"rhel" 18.41 GiB [10.00 GiB used / 8.41 GiB free]
```

> Unallocated disk space of 9GB size remains in the `rhel` volume group to be used by the CSI driver.
> Unallocated disk space of 8GB size remains in the `rhel` volume group to be used by the CSI driver.

## Install MicroShift for Edge

Log into the `physical hypervisor host` using your user credentials. The remainder of this section describes how to install a virtual machine running RHEL for Edge OS containing MicroShift binaries.

Start by copying the installer image from the `development virtual machine` to the host file system.
Start by copying the installer image and kickstart from the `development virtual machine` to the host file system. Replace `<dev-vm-ip>` with the IP address of your development VM (run `sudo virsh domifaddr <vm-name>` on the hypervisor to find it).
```bash
sudo scp microshift@microshift-dev:/home/microshift/microshift/_output/image-builder/microshift-installer-*.$(uname -m).iso /var/lib/libvirt/images/
scp microshift@<dev-vm-ip>:/home/microshift/microshift/_output/image-builder/microshift-installer.$(uname -m).iso ~/
Comment thread
coderabbitai[bot] marked this conversation as resolved.
scp microshift@<dev-vm-ip>:/home/microshift/microshift/docs/config/microshift-edge.ks ~/
```

Run the following commands to create a virtual machine using the installer image.
Run the following commands to create a virtual machine using the installer image. The `--boot uefi` flag is required because the ostree image uses `bootupd` for bootloader management, which only supports UEFI. The `--location` flag extracts the installer kernel from the ISO for direct boot, and `--initrd-inject` embeds the kickstart into the installer initrd.
```bash
VMNAME="microshift-edge"
NETNAME="default"
sudo bash -c " \
cd /var/lib/libvirt/images/ && \
virt-install \
--name ${VMNAME} \
ISOFILE="${HOME}/microshift-installer.$(uname -m).iso"

sudo virt-install \
--name "${VMNAME}" \
--vcpus 2 \
--memory 3072 \
--disk path=./${VMNAME}.qcow2,size=20 \
--network network=${NETNAME},model=virtio \
--memory 4096 \
--boot uefi \
--disk path="${HOME}/${VMNAME}.qcow2,size=50" \
--network network="${NETNAME}",model=virtio \
--events on_reboot=restart \
--cdrom ./microshift-installer-*.$(uname -m).iso \
--location "${ISOFILE}" \
--initrd-inject "${HOME}/microshift-edge.ks" \
--extra-args "inst.ks=file:/microshift-edge.ks" \
--noautoconsole \

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

sed -n '115,145p' docs/contributor/rhel4edge_iso.md
printf '\n--- related console references ---\n'
rg -n -i 'virt-viewer|console|noautoconsole|boot uefi|edk2-ovmf' docs/contributor/rhel4edge_iso.md docs/contributor 2>/dev/null | head -80

Repository: openshift/microshift

Length of output: 4931


Document how to access the console when using --noautoconsole.

The command suppresses automatic console attachment, but the next paragraph instructs users to watch the console. Add virt-viewer "${VMNAME}" or remove --noautoconsole.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/contributor/rhel4edge_iso.md` at line 129, Update the command
documentation around the --noautoconsole option to explain how users can
manually access the VM console by running virt-viewer "${VMNAME}", or remove
--noautoconsole so the console attaches automatically; keep the surrounding
console-watching instructions consistent.

--wait \
"
--wait
```

Watch the OS console to see the progress of the installation, waiting until the machine is rebooted and the login prompt appears.

Note that it may be more convenient to access the machine using SSH. Run the following command to get its IP address and use it to remotely connect to the system.
```bash
sudo virsh domifaddr microshift-edge
sudo virsh domifaddr "${VMNAME}"
```

Log into the system using `redhat:redhat` credentials and run the following commands to configure MicroShift access.
Log into the system using `redhat:redhat` credentials (as configured in [`microshift-edge.ks`](../config/microshift-edge.ks)) and run the following commands to configure MicroShift access.
```bash
mkdir ~/.kube
sudo cat /var/lib/microshift/resources/kubeadmin/kubeconfig > ~/.kube/config
chmod go-r ~/.kube/config
```
Comment thread
coderabbitai[bot] marked this conversation as resolved.

Finally, check if MicroShift is up and running by executing `oc` commands.
Verify that MicroShift is up and running.
```bash
oc get cs
oc get pods -A
```
4 changes: 2 additions & 2 deletions docs/user/image_mode.md
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ sudo virt-install \
--events on_reboot=restart \
--location /var/lib/libvirt/images/rhel-9.6-$(uname -m)-boot.iso \
--initrd-inject kickstart.ks \
--extra-args "inst.ks=file://kickstart.ks" \
--extra-args "inst.ks=file:/kickstart.ks" \
--wait
```

Expand Down Expand Up @@ -336,7 +336,7 @@ sudo virt-install \
--events on_reboot=restart \
--location /var/lib/libvirt/images/${VMNAME}.iso \
--initrd-inject kickstart.ks \
--extra-args "inst.ks=file://kickstart.ks" \
--extra-args "inst.ks=file:/kickstart.ks" \
--wait
```

Expand Down
2 changes: 1 addition & 1 deletion packaging/imagemode/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ sudo virt-install \
--location "/var/lib/libvirt/images/${VMNAME}.iso" \
--osinfo detect=on \
--initrd-inject kickstart.ks \
--extra-args "inst.ks=file://kickstart.ks" \
--extra-args "inst.ks=file:/kickstart.ks" \
--wait
```

Expand Down
2 changes: 1 addition & 1 deletion packaging/kickstart/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ sudo virt-install \
--events on_reboot=restart \
--location /var/lib/libvirt/images/rhel-9.4-$(uname -m)-boot.iso \
--initrd-inject "${HOME}/kickstart.ks" \
--extra-args "inst.ks=file://kickstart.ks" \
--extra-args "inst.ks=file:/kickstart.ks" \
--wait
```

Expand Down