# Full file system artifact and the kernel

**URL:** <https://hub.mender.io/t/full-file-system-artifact-and-the-kernel/2357>\
**Category:** General Discussions\
**Created:** [August 26, 2020, 3:09pm UTC](https://hub.mender.io/t/full-file-system-artifact-and-the-kernel/2357 "2020-08-26T15:09:53Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![jmeirow](https://avatars.discourse-cdn.com/v4/letter/j/90ced4/32.png) [@jmeirow](https://hub.mender.io/u/jmeirow)\
**Post date:** [August 26, 2020, 3:09pm UTC](https://hub.mender.io/t/full-file-system-artifact-and-the-kernel/2357/1 "2020-08-26T15:09:53Z")

</div>

This is not a problem, but simply a question to help me better understand the Mender ecosystem. On a SD/microSD card that has been flashed with a mender image, having both an active and a passive partition, does there exist on that card _two_ Linux kernels, one in the active and one in the passive partition, or… is there only one Linux kernel on the card? If so, where is it? In the U Boot loader partition? And if so, does that mean that the kernel is never really update-able? (OTA) Thanks!

---

<div class="post-metadata">

**Author:** ![dellgreen](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/dellgreen/32/85_2.png) [@dellgreen](https://hub.mender.io/u/dellgreen)\
**Post date:** [August 26, 2020, 6:08pm UTC](https://hub.mender.io/t/full-file-system-artifact-and-the-kernel/2357/2 "2020-08-26T18:08:49Z")

</div>

If its a yocto build, I think you can have both setups depending upon how you configure the mender build variables. I personally have 2 kernels, 1 on active and 1 on passive, so that I can roll kernel updates as part of a mender update.

[https://docs.mender.io/2.4/artifacts/yocto-project/variables](https://docs.mender.io/2.4/artifacts/yocto-project/variables)

---

<div class="post-metadata">

**Author:** ![jmeirow](https://avatars.discourse-cdn.com/v4/letter/j/90ced4/32.png) [@jmeirow](https://hub.mender.io/u/jmeirow)\
**Post date:** [August 26, 2020, 6:10pm UTC](https://hub.mender.io/t/full-file-system-artifact-and-the-kernel/2357/3 "2020-08-26T18:10:52Z")

</div>

Thank you so much for your response! I am using Raspberry Pi OS, however, your mention of “mender build variables” gives me something to look at. My thinking is just like yours: I want to be able update the kernel if necessary. Thanks again!

---

<div class="post-metadata">

**Author:** ![drewmoseley](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/drewmoseley/32/47_2.png) [@drewmoseley](https://hub.mender.io/u/drewmoseley)\
**Post date:** [August 26, 2020, 7:01pm UTC](https://hub.mender.io/t/full-file-system-artifact-and-the-kernel/2357/4 "2020-08-26T19:01:10Z")

</div>

Hi @jmeirow there are 2 kernels even for the mender-convert versions from Raspbian. All mender-enabled systems are set up this way. Basically mender-convert (or yocto with the meta-mender layer) arranges for the kernel to be stored in the root filesystem and the boot command is updated to load it from there.  
Drew

---

<div class="post-metadata">

**Author:** ![twoerner](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/twoerner/32/650_2.png) [@twoerner](https://hub.mender.io/u/twoerner)\
**Post date:** [September 1, 2020, 5:16pm UTC](https://hub.mender.io/t/full-file-system-artifact-and-the-kernel/2357/5 "2020-09-01T17:16:57Z")

</div>

I see that this issue is solved, and I agree with the responses that have been provided. But I’d like to add the following in order to _expand_ on the already-provided correct information. In my case I’m using U-Boot with the Yocto build.

There are a number of ways U-Boot (on its own) can be configured to load a kernel and filesystem. One of those ways is called “distro booting”. U-Boot’s distro booting requires that the filesystem contain a file (by default /boot/extlinux/extlinux.conf) in which the locations and names of a kernel, a device tree blob (dtb), and other parameters (e.g. initrd, bootargs) can be specified. U-Boot mounts the filesystem, finds and parses this file, loads the components into RAM (based on the values in include/configs/.h’s MEM\_LAYOUT\_ENV\_SETTINGS variable) and boots them.

Mender requires your U-Boot to be “distro booting”-enabled then uses this mechanism to boot your board. Each of the A and B partitions has their own extlinux.conf file and therefore has its own copies of kernel, dtb, and other components.
