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
102 changes: 101 additions & 1 deletion docs/Release_Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,109 @@

## What's Changed

## v25.8.1 (2025-8-17)


• Fix - Package apt-xapian-index missing on Trixie by @Grippy98 in #8202
• Fix and improve Armbian GH Action by @igorpecovnik in #8201
• partitioning: fix compressed BTRFS creation by @alex3d in #8200
• Allwinner: replace bc with awk in temperature check by @igorpecovnik in #8205
• Work if no customize-image.sh present by @iav in #8222
• grub: ensure tty0 console if others used by @rpardini in #8247
• artifacts: force fsync() before caching by @rpardini in #8242
• rootfs-to-image: drop --sparse (too slow) by @rpardini in #8249
• docker: speed up extension checks by @rpardini in #8248
• kernel-debs: retry make clean with logs by @rpardini in #8241
• Signing key: keep symlink to old location by @igorpecovnik in #8282
• motd: fix login screen alignment by @leggewie in #8322
• README cleanup, update logo, declutter by @igorpecovnik in #8391
• Plymouth: update boot logo by @igorpecovnik in #8381
• fix firstlogin password creation on sid by @amazingfate in #8415
• gcc-arm-linux-gnueabi: install conditionally by @leggewie in #8401
• Don’t copy id_ecdsa if not needed by @gbrdead in #8446
• minor spelling mistakes by @leggewie in #8450
• APA extension: small fixes by @leggewie in #8509
• Trixie: drop non-existing packages by @igorpecovnik in #8279
• Bullseye: drop backports repo (gone) by @igorpecovnik in #8437
• Debian: drop security repo from package lists by @igorpecovnik in #8444
• Debian Trixie: declare supported by @igorpecovnik in #8470
• Wireless drivers: bump commit hash, mark deprecated by @igorpecovnik in #8408
• kernel-debs: use dynamic kernel image names by @amazingfate in #8451
• Improve WiFi support for sun50iw1 family by @leggewie in #8467
• drop apt-xapian-index and pavumeter from desktops by @leggewie in #8356
• update plasma-workspace pkgs for RB5 by @leggewie in #8357
• config/desktop: disable mate-sntray-plugin on Trixie by @leggewie in #8491
• config/desktop: update gnome-bluetooth in Noble/Trixie by @leggewie in #8502
• Preparation for HTTP proxy caching by @EvilOlaf in #8281
• Add dual signing support by @igorpecovnik in #8320
• Add new repository key by @igorpecovnik in #8323
• mvebu: bump EDGE kernel to 6.12 by @igorpecovnik in #8193
• sunxi 6.12: switch to v6.12.30 by @The-going in #8233
• sunxi-6.15: bump EDGE to v6.15 by @The-going in #8270
• Allwinner: bump current to 6.12.35 & edge to 6.15.4 by @igorpecovnik in #8337
• rockchip64: bump edge to 6.16-rc3 by @EvilOlaf in #8328
• mainline-kernel: bump 6.16 → released by @amazingfate in #8443
• uefi-arm64: bump to 6.16 by @amazingfate in #8453
• rockchip edge: bump to 6.16 by @paolosabatino in #8435
• rpi4b: bump edge to 6.16 by @EvilOlaf in #8390
• BPI-F3: update linux-6.6.95 → 99 by @pyavitz in #8411
• SpacemiT: linux-6.6.93 → 95 by @pyavitz in #8333
• odroidxu4: bump to 6.6.93 → 100 by @belegdol in #8277, #8442
• Bump rockchip32 edge kernel to 6.15 by @paolosabatino in #8262
• Bump imx6, mvebu, xu4 kernels, mark wdk2023 EoS by @igorpecovnik in #8410
• khadas-edge2: fix u-boot by @efectn in #8220
• Gateway GZ80x: switch back to u-boot v2024.10 by @pyavitz in #8216
• nanopct6(-lts): bump u-boot to v2025.04 final by @rpardini in #8239
• odroidhc4: u-boot v2025.04, unify configs by @rpardini in #8244
• mixtible-blade3: revert to radxa u-boot v2024.03 by @rpardini in #8243
• khadas-vim3: bump u-boot v2025.04 final by @rpardini in #8238
• nanopct6(-lts): switch to mainline ATF + u-boot for current by @rpardini in #8219
• tinkerboard-2: bump u-boot v2025.04 by @hyx0329 in #8268
• quartz64a: bump u-boot to v2025.04 final by @rpardini in #8250
• BananaPi BPI-M4-Zero: bump u-boot v2025.01 & v2025.07 by @pyavitz in #8339, #8434
• orangepi5pro: bump u-boot v2025.07 (eMMC) by @c127dev in #8417
• MBa8MPxL: bump u-boot to v2024.04 by @schmiedelm in #8291
• station-m3: update u-boot patches by @chainsx in #8424
• lckfb-taishanpi: update u-boot patches by @chainsx in #8428
• rock-4se: binman boot with mainline ATF by @jclds139 in #8449
• Update Realtek RTL8822CS external driver by @adeepn in #8195
• Unlock radios on RPi with service by @igorpecovnik in #8210
• helios4: fix WOL service by @djurny in #8235
• Rock-5C: enable thermal sensors by @mdziekon in #8430
• Fix DSI display on RPi5 by @CaWeissWz in #8294
• Restore RockPI-S audio by @brentr in #8360
• SMART AM40: add PHY LED config by @retro98boy in #8431
• Gateway GZ80x: add rtl8723ds BT support by @pyavitz in #8351
• Orangepi Zero: drop Crust support (fix reboot) by @igorpecovnik in #8503
• linux-rk35xx-vendor: add LTE em05 driver by @rafayahmed317 in #8484, #8508
• Xradio: adjust for kernel 6.16+ by @igorpecovnik in #8469
• Innosilicon USB3 phy driver for rk3328 by @paolosabatino in #8510
• Netplan: DHCP on lan*/wan* interfaces by @djurny in #8259
• sunxi-6.14: bananapi_m4_berry → supported by @The-going in #8226
• SpacemiT: enable audio, bump kernels by @pyavitz in #8221, #8333, #8481
• CAINIAO CNIoT-CORE initial support by @retro98boy in #8208
• NanoPi R3S LTS added by @pyavitz in #8300
• BananaPi BPI-CM4 Waveshare IO-BASE-B fixes by @pyavitz in #8303
• Add imb3588 board by @JackHuang021 in #8267
• Add KickPi K2B board by @pyavitz in #8452
• Add DshanPi A1 (RK3576) by @chainsx in #8380
• Orange Pi 5 Pro initial support by @c127dev in #8348
• Orange Pi 5 Ultra fixes & improvements by @khusika in #8373
• Rock-5B-Plus: align Edge with upstream by @HeyMeco in #8338
• BananaPi BPI-M4-Zero DTS + overlays fixes by @pyavitz in #8339, #8434, #8448, #8454, #8498
• BananaPi CM4/M2S: revert SDIO WiFi change by @pyavitz in #8495
• Nanopi R6/R5: netplan fix (wan→wan1) by @igorpecovnik in #8325
• PocketBeagle2: image fixes + USB serial enable by @Ayush1325 in #8283, #8349, #8370
• Pcduino2/3: add HDMI, fix drm regression by @Ryzer58 in #8341
• MediaTek Filogic: BananaPi R4 community support by @chainsx in #8407
• Radxa Cubie A5E: migrate to mainline 6.16 by @juanesf in #8447
• coolpi-genbook: vendor branch by @andyshrk in #8275
• Inovato quadra bootfix + u-boot bump by @igorpecovnik in #8334

Comment on lines +10 to +105
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Fix list rendering: de-indent and use standard Markdown bullets instead of a 4‑space indented "•".

As written, each line starts with 4 spaces and the "•" glyph, which most Markdown renderers interpret as a code block, not a list. This will render poorly (monospace block), break wrapping, and impair navigation. Use "-" (or "*") without the 4-space indent, and keep one item per line.

Apply this pattern across lines 10–105 (sample shown for the first few items):

-    • Fix - Package apt-xapian-index missing on Trixie by @Grippy98 in #8202 
-    • Fix and improve Armbian GH Action by @igorpecovnik in #8201 
-    • partitioning: fix compressed BTRFS creation by @alex3d in #8200 
-    • Allwinner: replace bc with awk in temperature check by @igorpecovnik in #8205 
-    • Work if no customize-image.sh present by @iav in #8222 
+ - Fix - Package apt-xapian-index missing on Trixie by @Grippy98 in #8202
+ - Fix and improve Armbian GH Action by @igorpecovnik in #8201
+ - partitioning: fix compressed BTRFS creation by @alex3d in #8200
+ - Allwinner: replace bc with awk in temperature check by @igorpecovnik in #8205
+ - Work if no customize-image.sh present by @iav in #8222

Optionally, convert the trailing “in #NNNN” to proper links (see separate comment).

📝 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
• Fix - Package apt-xapian-index missing on Trixie by @Grippy98 in #8202
• Fix and improve Armbian GH Action by @igorpecovnik in #8201
• partitioning: fix compressed BTRFS creation by @alex3d in #8200
• Allwinner: replace bc with awk in temperature check by @igorpecovnik in #8205
• Work if no customize-image.sh present by @iav in #8222
• grub: ensure tty0 console if others used by @rpardini in #8247
• artifacts: force fsync() before caching by @rpardini in #8242
• rootfs-to-image: drop --sparse (too slow) by @rpardini in #8249
• docker: speed up extension checks by @rpardini in #8248
• kernel-debs: retry make clean with logs by @rpardini in #8241
• Signing key: keep symlink to old location by @igorpecovnik in #8282
• motd: fix login screen alignment by @leggewie in #8322
• README cleanup, update logo, declutter by @igorpecovnik in #8391
• Plymouth: update boot logo by @igorpecovnik in #8381
• fix firstlogin password creation on sid by @amazingfate in #8415
• gcc-arm-linux-gnueabi: install conditionally by @leggewie in #8401
• Don’t copy id_ecdsa if not needed by @gbrdead in #8446
• minor spelling mistakes by @leggewie in #8450
• APA extension: small fixes by @leggewie in #8509
• Trixie: drop non-existing packages by @igorpecovnik in #8279
• Bullseye: drop backports repo (gone) by @igorpecovnik in #8437
• Debian: drop security repo from package lists by @igorpecovnik in #8444
• Debian Trixie: declare supported by @igorpecovnik in #8470
• Wireless drivers: bump commit hash, mark deprecated by @igorpecovnik in #8408
• kernel-debs: use dynamic kernel image names by @amazingfate in #8451
• Improve WiFi support for sun50iw1 family by @leggewie in #8467
• drop apt-xapian-index and pavumeter from desktops by @leggewie in #8356
• update plasma-workspace pkgs for RB5 by @leggewie in #8357
• config/desktop: disable mate-sntray-plugin on Trixie by @leggewie in #8491
• config/desktop: update gnome-bluetooth in Noble/Trixie by @leggewie in #8502
• Preparation for HTTP proxy caching by @EvilOlaf in #8281
• Add dual signing support by @igorpecovnik in #8320
• Add new repository key by @igorpecovnik in #8323
• mvebu: bump EDGE kernel to 6.12 by @igorpecovnik in #8193
• sunxi 6.12: switch to v6.12.30 by @The-going in #8233
• sunxi-6.15: bump EDGE to v6.15 by @The-going in #8270
• Allwinner: bump current to 6.12.35 & edge to 6.15.4 by @igorpecovnik in #8337
• rockchip64: bump edge to 6.16-rc3 by @EvilOlaf in #8328
• mainline-kernel: bump 6.16 → released by @amazingfate in #8443
• uefi-arm64: bump to 6.16 by @amazingfate in #8453
• rockchip edge: bump to 6.16 by @paolosabatino in #8435
• rpi4b: bump edge to 6.16 by @EvilOlaf in #8390
• BPI-F3: update linux-6.6.95 → 99 by @pyavitz in #8411
• SpacemiT: linux-6.6.93 → 95 by @pyavitz in #8333
• odroidxu4: bump to 6.6.93 → 100 by @belegdol in #8277, #8442
• Bump rockchip32 edge kernel to 6.15 by @paolosabatino in #8262
• Bump imx6, mvebu, xu4 kernels, mark wdk2023 EoS by @igorpecovnik in #8410
• khadas-edge2: fix u-boot by @efectn in #8220
• Gateway GZ80x: switch back to u-boot v2024.10 by @pyavitz in #8216
• nanopct6(-lts): bump u-boot to v2025.04 final by @rpardini in #8239
• odroidhc4: u-boot v2025.04, unify configs by @rpardini in #8244
• mixtible-blade3: revert to radxa u-boot v2024.03 by @rpardini in #8243
• khadas-vim3: bump u-boot v2025.04 final by @rpardini in #8238
• nanopct6(-lts): switch to mainline ATF + u-boot for current by @rpardini in #8219
• tinkerboard-2: bump u-boot v2025.04 by @hyx0329 in #8268
• quartz64a: bump u-boot to v2025.04 final by @rpardini in #8250
• BananaPi BPI-M4-Zero: bump u-boot v2025.01 & v2025.07 by @pyavitz in #8339, #8434
• orangepi5pro: bump u-boot v2025.07 (eMMC) by @c127dev in #8417
• MBa8MPxL: bump u-boot to v2024.04 by @schmiedelm in #8291
• station-m3: update u-boot patches by @chainsx in #8424
• lckfb-taishanpi: update u-boot patches by @chainsx in #8428
• rock-4se: binman boot with mainline ATF by @jclds139 in #8449
• Update Realtek RTL8822CS external driver by @adeepn in #8195
• Unlock radios on RPi with service by @igorpecovnik in #8210
• helios4: fix WOL service by @djurny in #8235
• Rock-5C: enable thermal sensors by @mdziekon in #8430
• Fix DSI display on RPi5 by @CaWeissWz in #8294
• Restore RockPI-S audio by @brentr in #8360
• SMART AM40: add PHY LED config by @retro98boy in #8431
• Gateway GZ80x: add rtl8723ds BT support by @pyavitz in #8351
• Orangepi Zero: drop Crust support (fix reboot) by @igorpecovnik in #8503
• linux-rk35xx-vendor: add LTE em05 driver by @rafayahmed317 in #8484, #8508
• Xradio: adjust for kernel 6.16+ by @igorpecovnik in #8469
• Innosilicon USB3 phy driver for rk3328 by @paolosabatino in #8510
• Netplan: DHCP on lan*/wan* interfaces by @djurny in #8259
• sunxi-6.14: bananapi_m4_berry → supported by @The-going in #8226
• SpacemiT: enable audio, bump kernels by @pyavitz in #8221, #8333, #8481
• CAINIAO CNIoT-CORE initial support by @retro98boy in #8208
• NanoPi R3S LTS added by @pyavitz in #8300
• BananaPi BPI-CM4 Waveshare IO-BASE-B fixes by @pyavitz in #8303
• Add imb3588 board by @JackHuang021 in #8267
• Add KickPi K2B board by @pyavitz in #8452
• Add DshanPi A1 (RK3576) by @chainsx in #8380
• Orange Pi 5 Pro initial support by @c127dev in #8348
• Orange Pi 5 Ultra fixes & improvements by @khusika in #8373
• Rock-5B-Plus: align Edge with upstream by @HeyMeco in #8338
• BananaPi BPI-M4-Zero DTS + overlays fixes by @pyavitz in #8339, #8434, #8448, #8454, #8498
• BananaPi CM4/M2S: revert SDIO WiFi change by @pyavitz in #8495
• Nanopi R6/R5: netplan fix (wan→wan1) by @igorpecovnik in #8325
• PocketBeagle2: image fixes + USB serial enable by @Ayush1325 in #8283, #8349, #8370
• Pcduino2/3: add HDMI, fix drm regression by @Ryzer58 in #8341
• MediaTek Filogic: BananaPi R4 community support by @chainsx in #8407
• Radxa Cubie A5E: migrate to mainline 6.16 by @juanesf in #8447
• coolpi-genbook: vendor branch by @andyshrk in #8275
• Inovato quadra bootfix + u-boot bump by @igorpecovnik in #8334
- Fix - Package apt-xapian-index missing on Trixie by @Grippy98 in #8202
- Fix and improve Armbian GH Action by @igorpecovnik in #8201
- partitioning: fix compressed BTRFS creation by @alex3d in #8200
- Allwinner: replace bc with awk in temperature check by @igorpecovnik in #8205
- Work if no customize-image.sh present by @iav in #8222
🤖 Prompt for AI Agents
In docs/Release_Changelog.md around lines 10 to 105, the list items are indented
with four spaces and a "•" glyph which Markdown treats as a code block; remove
the leading four spaces and replace the "•" with a standard list marker ("-" or
"*") so each entry is a proper markdown bullet on its own line, ensuring no
extra indentation and preserving the existing text; optionally convert the
trailing "in #NNNN" fragments into proper issue/PR links if desired.


## v25.5.1 (2025-5-26)

* [Bugfix] Fixed Non supported OS warning message. by @Tearran in https://github.com/armbian/configng/pull/498
* [Bugfix] Fixed Non supported OS warning message. by @Tearran in https://github.com/armbian/configng/pull/498
Copy link
Collaborator

Choose a reason for hiding this comment

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

this change should be dropped, it adds a superfluous space at the end

* [Bugfix] feature array names, by @Tearran in https://github.com/armbian/configng/pull/305
* [Bugfix] Unexpected command executed when config overlays #349 by @Tearran in https://github.com/armbian/configng/pull/355
* Activate the specified network interface, before applying IP stack by @igorpecovnik in https://github.com/armbian/configng/pull/411
Expand Down
90 changes: 90 additions & 0 deletions docs/boot_multiple_kernel.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# Using Multiple Kernels on SBC with Armbian via SD Cards

A common and effective way to use multiple kernels on a single-board computer (SBC) running Armbian is to use separate SD cards. This method is especially useful for testing new kernels, different versions of a kernel, or different Linux distributions without risking your primary, stable system. It also simplifies the process by leveraging the standard SBC boot sequence, which typically checks for a bootable SD card first.

This tutorial will walk you through the process of setting up multiple SD cards with different Armbian kernels.

---

## Prerequisites

Before you begin, you'll need a few things:

- **Your SBC**: A compatible single-board computer (e.g., Orange Pi, Rock Pi, Odroid).
- **Multiple SD cards**: One for each kernel or system you want to run. Use reliable, high-speed cards from a reputable brand.
- **A computer** to write the images to the SD cards.
- **A reliable power supply** for your SBC.
- **Armbian images**: The specific Armbian images for your board, each with the desired kernel version (`current`, `edge`, or `legacy`). You can download these from the [official Armbian website](https://www.armbian.com/download/).

---

## Step 1: Prepare the SD Cards 💾

Each SD card must be flashed with a different Armbian image.

1. **Download the Images**
Go to the official Armbian download page and find the images for your specific SBC model.
Example: one with the `current` kernel and another with the `edge` kernel.

2. **Flash the SD Cards**
Use a flashing tool like **BalenaEtcher** or the `dd` command-line utility.

### Using BalenaEtcher
- Insert an SD card into your computer.
- Open Etcher, select the downloaded Armbian image file.
- Select your SD card from the list of drives.
- Click **Flash!** to start the process.
- Repeat for each SD card and image.

### Using `dd` (Linux/macOS users)
- Unzip the Armbian image file (`.xz`).
- Identify your SD card's device name with `lsblk` or `diskutil list`.
- Run:
```bash
sudo dd if=/path/to/armbian-image.img of=/dev/sdX bs=1M status=progress && sync
```
Replace `/path/to/armbian-image.img` and `/dev/sdX` with the correct path and device name.
- **Be extremely careful** to select the right device to avoid data loss.
Comment on lines +39 to +47
Copy link
Contributor

@coderabbitai coderabbitai bot Aug 18, 2025

Choose a reason for hiding this comment

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

⚠️ Potential issue

Fix dd instructions for macOS compatibility; split Linux/macOS with correct flags and steps

The current dd example won’t work on macOS (BSD dd doesn’t support status=progress and typically uses bs=1m; device is /dev/rdiskN). Also, “Unzip” is inaccurate for .xz images—use “decompress”. Propose a precise, safe rewrite.

-   ### Using `dd` (Linux/macOS users)
-   - Unzip the Armbian image file (`.xz`).  
-   - Identify your SD card's device name with `lsblk` or `diskutil list`.  
-   - Run:  
-     ```bash
-     sudo dd if=/path/to/armbian-image.img of=/dev/sdX bs=1M status=progress && sync
-     ```  
-     Replace `/path/to/armbian-image.img` and `/dev/sdX` with the correct path and device name.  
-   - **Be extremely careful** to select the right device to avoid data loss.  
+   ### Using `dd` (advanced)
+   - Decompress the image first if using `dd` (Etcher can flash `.xz` directly):
+     ```bash
+     unxz /path/to/armbian-image.img.xz
+     ```
+   - Identify your SD card device:
+     - Linux: `lsblk` (device looks like `/dev/sdX` or `/dev/mmcblkX`)
+     - macOS: `diskutil list` (device looks like `/dev/diskN` and raw `/dev/rdiskN`)
+   - Linux (GNU dd):
+     ```bash
+     sudo dd if=/path/to/armbian-image.img of=/dev/sdX bs=4M conv=fsync status=progress
+     ```
+   - macOS (BSD dd):
+     ```bash
+     diskutil unmountDisk /dev/diskN
+     sudo dd if=/path/to/armbian-image.img of=/dev/rdiskN bs=1m ; sync
+     # Tip: press Ctrl+T to see progress on macOS, or install coreutils and use `gdd ... status=progress`
+     ```
+     Replace `/path/to/armbian-image.img`, `/dev/sdX`, `/dev/diskN`, and `/dev/rdiskN` with your actual paths/devices.
+   - Double-check the device path to avoid data loss.
🧰 Tools
🪛 LanguageTool

[style] ~47-~47: As an alternative to the over-used intensifier ‘extremely’, consider replacing this phrase.
Context: ...rrect path and device name. - Be extremely careful to select the right device to avoid d...

(EN_WEAK_ADJECTIVE)

🪛 markdownlint-cli2 (0.17.2)

39-39: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


43-43: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


45-45: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)

🤖 Prompt for AI Agents
In docs/boot_multiple_kernel.md around lines 39-47, the dd instructions are
inaccurate for macOS and the .xz step is mislabeled as "Unzip"; update the
section to (1) say "decompress .xz" (or recommend Etcher) rather than "unzip",
(2) split Linux and macOS commands with correct device names and flags: for
Linux recommend GNU dd with bs=4M conv=fsync status=progress, and for macOS
instruct to unmount the disk with diskutil, target the raw device (/dev/rdiskN),
use BSD dd with bs=1m and run sync afterwards (or suggest installing
coreutils/gdd to get status=progress), and (3) keep a clear warning to
double-check the target device to avoid data loss.

Copy link
Collaborator

Choose a reason for hiding this comment

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

sounds good to me

Copy link
Contributor

Choose a reason for hiding this comment

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

@leggewie Thank you for confirming! The suggested changes will help make the dd instructions much more accurate and usable for both Linux and macOS users. The split approach with platform-specific commands, proper device naming conventions, and the correction about decompressing .xz files (rather than "unzipping") will definitely improve the documentation quality.

  /|   /|  
 ( :v:  )
  |(_)|
 /     \
/       \

/_________\


If you found this review helpful, would you consider giving us a shout-out on X?

Thank you for using CodeRabbit!


---

## Step 2: Initial Boot and Configuration ⚙️

After flashing, each SD card is a self-contained, bootable system.

1. **Insert and Boot**
Insert one SD card into your SBC and connect power. The SBC’s bootloader (usually U-Boot) will detect and boot from it.

2. **Initial Setup**
On first boot, Armbian will:
- Resize the filesystem
- Prompt for a root password
- Prompt to create a new user

Complete these steps for each SD card.

3. **Shut Down and Swap**
- Power down the SBC.
- Remove the first SD card.
- Insert the second SD card.
- Repeat the boot and setup process.

---

## Step 3: Managing and Using Different Kernels 🧑💻

Now you have multiple independent systems on separate SD cards.

- **Swapping SD Cards**
To switch kernels, power down, swap SD cards, and power back up. The bootloader handles everything automatically.

- **Testing and Development**
- Use one SD card for a stable, “production” kernel.
- Use another for experimental or development kernels.
- If something fails, swap back to your stable card instantly.

- **Kernel Version Management**
While Armbian’s `armbian-config` tool allows kernel management inside a single installation, using separate SD cards gives **full isolation**.
This prevents conflicts between kernel versions and ensures a clean test environment.

---
Loading