Skip to content

Add kernel features needed to support docker#1

Open
codybrookshear wants to merge 1 commit intoGOcontroll:gocontroll-6.12.79from
Blue-Water-Autonomy:feat-docker-support
Open

Add kernel features needed to support docker#1
codybrookshear wants to merge 1 commit intoGOcontroll:gocontroll-6.12.79from
Blue-Water-Autonomy:feat-docker-support

Conversation

@codybrookshear
Copy link
Copy Markdown

@codybrookshear codybrookshear commented Apr 9, 2026

TBD if we will use Docker in our production setup, but it's great knowing it works. However,, consider if you need Docker or not. The extra kernel size on a constrained device like this one may not be desirable unless you specifically need to use Dokcer. With these kernel defconfig changes in place, you should be able to now run a docker image on a GOControll Moduline IV.

I'll step thru the process just to "show my work":

make gocontroll_defconfig
make -j(nproc) bindeb-pkg
scp ../linux-image-6.12.79+_6.12.79-g4620b6e3bc4b-2_arm64.deb <gocontroll IP>:~/

Over on the GOControll box now, first install the generated kernel deb file and then reboot:

apt install --reinstall ./linux-image-6.12.79+_6.12.79-g4620b6e3bc4b-2_arm64.deb
reboot now

Then, make sure you have docker installed and started:

# install prerequisites
sudo apt update
sudo apt install -y ca-certificates curl gnupg
# add docker gpg key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg \
  | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# finally, add docker repository
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/debian trixie stable" \
  | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# and install
sudo apt install -y \
  docker-ce \
  docker-ce-cli \
  containerd.io
# start and enable docker
sudo systemctl enable docker
sudo systemctl start docker

The easiest test is then:

$ docker run hello-world

@SpieringsAE
Copy link
Copy Markdown
Collaborator

SpieringsAE commented Apr 10, 2026

Good to hear you got it working as desired, there are a couple of points about the pull request. The format seems off and there seem to be some options enabled that don't work together, for example you have set CONFIG_NETFILTER_XT_MATCH_IPVS=y but this option depends on CONFIG_IP_VS which is currently =n so in the resulting .config this option is not actually enabled. You should be able to verify this by grepping through the output of gzip -dc /proc/config.gz | grep "CONFIG_NETFILTER" on the controller, or directly during building by checking what is in the .config file after doing make gocontroll_defconfig.

The workflow I recommend is:
make gocontroll_defconfig
make menuconfig then enable what you require
make savedefconfig this will produce a reduced config file based on the current .config file
cp defconfig arch/arm64/config/gocontroll_defconfig

This will output the correct format of the config file with all the dependencies checked. It might look like there are options missing in this resulting file but that is because there are some implicit options that are left out it this file, they will appear in the resulting .config file though.

I also have some doubts about the package that bindeb-pkg produces, are you sure you are booting into the new kernel? I have some custom packaging set up in the debian folder, the system is not set up to use the packaging that bindeb-pkg creates. You can check with uname -r, by default the bootloader will load /loader/entries/iv_306_d.conf.

The way I produce the deb package is that I have a debian trixie distrobox then I run dpkg-buildpackage. But I don't know how to cross compile this way properly, I do this on an arm64 host.

If you could do this check and see if everything there is okay, then I will squash the results together into our tree.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants