Ok, trochę się tym pobawiłem. Może komuś się jeszcze przyda.
Spróbowałem zbudować samemu 17.01 z gałęzi lede-17.01 w repozytorium. Wziąłem Twój config.seed.apu z wersji luci jako podstawę, ale bez patchy (nct5104d działa u mnie prawidłowo bez patcha). Nie wiem, czy to kwestia tego, że obecnie kod w repo jest nowszy niż Twój obecny build, ale był problem z budowaniem usbip (nie może zaaplikować patcha), więc go wyłączyłem.
Okazuje się, że włączenie podstawowego wsparcia dla lxc jest bardzo proste. W menuconfig w Utilities trzeba zaznaczyć lxc i wejść w konfigurację, gdzie wystarczy zaznaczyć Enable kernel support for LXC oraz Enable support for seccomp in LXC (to drugie możliwe, że nie jest wymagane, ale zwiększa bezpieczeństwo). NIE ZAZNACZAMY wsparcia dla lxc-create w busybox. Będzie później sypać konfliktami przy instalacji różnych pakietów jak np tar, zx itd.
Oprócz tego można włączyć kilka dodatkowych opcji cgroup, które nie są wymagane przez lxc, ale są sprawdzane przez lxc-checkconfig (zmiana w Global build settings):
-*- Enable kernel cgroups
[ ] Example debug cgroup subsystem
[*] Freezer cgroup subsystem
[*] Device controller for cgroups
[*] PIDs cgroup subsystem
[*] Cpuset support
[ ] Include legacy /proc/<pid>/cpuset file
[*] Simple CPU accounting cgroup subsystem
[*] Resource counters
[*] Memory Resource Controller for Control Groups
[*] Memory Resource Controller Swap Extension
[ ] Memory Resource Controller Swap Extension enabled by default
[ ] Memory Resource Controller Kernel Memory accounting (EXPERIMENTAL)
[ ] Enable perf_event per-cpu per-container group (cgroup) monitoring
[*] Group CPU scheduler ---> (nie trzeba nic dodatkowo zaznaczać w tym submenu)
[*] Block IO controller
[ ] Enable Block IO controller debugging
[*] Control Group Classifier
[*] Network priority cgroupDodatkowo przydatne są również kmod-veth oraz kmod-macvlan, jeżeli kontener ma mieć dostęp do sieci. U siebie dodałem je jako preinstalowane od razu w obrazie.
Po instalacji lxc-checkconfig oraz kmod-ikconfig (je też dodałem od razu do buildu) lxc-checkconfig pokazuje niemal wszystko na zielono z wyjątkiem kilku opcjonalnych pozycji.
lxc-create nadal nie działa prawidłowo - tu problem jest niestety z szablonami dostarczonymi razem z pakietem. Utworzyłem więc rootfs i config dla kontenera u siebie na komputerze i przeniosłem na APU2. Na Archu mam dużo nowsze LXC więc, trzeba było zrobić kilka poprawek w configu kontenera.
lxc-start startuje kontener bez problemu. Przetestowałem sieć na veth zbridge'owane do br-lan i odpalony tak debian dostał IP z dnsmasq w LEDE. Jest łączność ze światem.
Niestety są też problemy. lxc-stop nie jest w stanie zamknąć kontenera. Po odpaleniu czeka i nic się nie dzieje. Można zamknąć przez ctrl+c. Zamknięcie kontenera przez shutdown now z systemu kontenera działa i maszyna się ładnie zamyka i kontener się wyłącza. Niestety powtórna próba uruchomienia przez lxc-start kończy się tym, że lxc-start staje się defunct i w dmesgu lecą błędy:
[ 869.729125] unregister_netdevice: waiting for lo to become free. Usage count = 1
[ 879.918748] unregister_netdevice: waiting for lo to become free. Usage count = 1
[ 890.058376] unregister_netdevice: waiting for lo to become free. Usage count = 1Jedyny sposób na przywrócenie lxc do działania to reboot urządzenia. Nie mam obecnie siły i czasu, żeby próbować dojść do tego, co może być powodem - czy to jest bug w samym kernelu, czy może niekompatybilność między narzędziami userspace, a kernelem.