Docker on Rock 4C+ with Debian

On Debian you can get some problems with running docker. After installed docker by

curl -o - https://get.docker.com | sudo sh

probably docker wont start:

rock@rock-4c-plus:~$ sudo systemctl start docker
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.
rock@rock-4c-plus:~$ sudo systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Thu 2023-01-26 13:23:06 UTC; 25s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
    Process: 4613 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
   Main PID: 4613 (code=exited, status=1/FAILURE)

Jan 26 13:23:03 rock-4c-plus systemd[1]: docker.service: Failed with result 'exit-code'.
Jan 26 13:23:03 rock-4c-plus systemd[1]: Failed to start Docker Application Container Engine.
Jan 26 13:23:06 rock-4c-plus systemd[1]: docker.service: Scheduled restart job, restart counter is at 3.
Jan 26 13:23:06 rock-4c-plus systemd[1]: Stopped Docker Application Container Engine.
Jan 26 13:23:06 rock-4c-plus systemd[1]: docker.service: Start request repeated too quickly.
Jan 26 13:23:06 rock-4c-plus systemd[1]: docker.service: Failed with result 'exit-code'.
Jan 26 13:23:06 rock-4c-plus systemd[1]: Failed to start Docker Application Container Engine.
Jan 26 13:23:25 rock-4c-plus systemd[1]: docker.service: Start request repeated too quickly.
Jan 26 13:23:25 rock-4c-plus systemd[1]: docker.service: Failed with result 'exit-code'.
Jan 26 13:23:25 rock-4c-plus systemd[1]: Failed to start Docker Application Container Engine.

So… problem is related with iptables (iptables wont works also). You can just run dockerd command and see real error:

rock@rock-4c-plus:~$ sudo dockerd
INFO[2023-01-26T13:24:47.874169777Z] Starting up                                  
INFO[2023-01-26T13:24:47.877662675Z] parsed scheme: "unix"                         module=grpc
INFO[2023-01-26T13:24:47.877740839Z] scheme "unix" not registered, fallback to default scheme  module=grpc
INFO[2023-01-26T13:24:47.877817545Z] ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock  <nil> 0 <nil>}] <nil> <nil>}  module=grpc
INFO[2023-01-26T13:24:47.877850794Z] ClientConn switching balancer to "pick_first"  module=grpc
INFO[2023-01-26T13:24:47.881145947Z] parsed scheme: "unix"                         module=grpc
INFO[2023-01-26T13:24:47.881240445Z] scheme "unix" not registered, fallback to default scheme  module=grpc
INFO[2023-01-26T13:24:47.881314526Z] ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock  <nil> 0 <nil>}] <nil> <nil>}  module=grpc
INFO[2023-01-26T13:24:47.881347192Z] ClientConn switching balancer to "pick_first"  module=grpc
INFO[2023-01-26T13:24:47.894612677Z] [graphdriver] using prior storage driver: overlay2 
WARN[2023-01-26T13:24:47.908022534Z] Unable to find cpu controller                
WARN[2023-01-26T13:24:47.908088740Z] Unable to find io controller                 
WARN[2023-01-26T13:24:47.908106531Z] Unable to find cpuset controller             
INFO[2023-01-26T13:24:47.908568809Z] Loading containers: start.                   
INFO[2023-01-26T13:24:47.948959958Z] unable to detect if iptables supports xlock: 'iptables --wait -L -n': `iptables v1.8.7 (nf_tables): Could not fetch rule set generation id: Invalid argument`  error="exit status 4"
INFO[2023-01-26T13:24:48.656481769Z] stopping event stream following graceful shutdown  error="<nil>" module=libcontainerd namespace=moby
failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: iptables failed: iptables -t nat -N DOCKER: iptables v1.8.7 (nf_tables): Could not fetch rule set generation id: Invalid argument

 (exit status 4)

As we see docker have problem with iptables. Problem exists because you have kernel 4.x, but new iptables required kernel 5.x or above, so you have to replace current iptables with iptables-legacy, by these commands:

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy

Now you can run docker:

sudo systemctl start docker

Lets run first container:

root@rock-4c-plus:/home/rock# sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
7050e35b49f5: Pull complete 
Digest: sha256:aa0cc8055b82dc2509bed2e19b275c8f463506616377219d9642221ab53cf9fe
Status: Downloaded newer image for hello-world:latest
ERRO[0007] error waiting for container: context canceled 
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: cgroup namespaces aren't enabled in the kernel: unknown.

Yaay, another error! 🙂 Now we have to add to file /boot/extlinux/extlinux.conf these argument:

#timeout 10
#menu title select kernel

label kernel-4.4.194-11-rk3399-rockchip-g1bb08d49cc40
    kernel /vmlinuz-4.4.194-11-rk3399-rockchip-g1bb08d49cc40
    initrd /initrd.img-4.4.194-11-rk3399-rockchip-g1bb08d49cc40
    devicetreedir /dtbs/4.4.194-11-rk3399-rockchip-g1bb08d49cc40
    append earlyprintk console=ttyFIQ0,1500000n8 rw init=/sbin/init rootfstype=ext4 rootwait  root=UUID=63e973d2-653e-4174-9ac7-63bb03114e2b console=ttyS2,1500000n8 systemd.unified_cgroup_hierarchy=0

Now you have to reboot ROCK. After fresh start you can run container again:

rock@rock-4c-plus:~$ sudo docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (arm64v8)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Hurraaa! It works.

BTW, if you want buy ROCK board you can do this here: https://sklep.wizro.pl/szukaj?controller=search&s=rock

With code BE-A-ROOT you will get 5% discount!

Protip 1: add user to docker group for using docker command without sudo:

sudo usermod -a -G docker rock

apt-get update on Rock 4C+ Debian

During apt-get update you can get error:

Err:3 http://apt.radxa.com/bullseye-stable bullseye InRelease    
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 9B98116C9AA302C7

(...)

Reading package lists... Done                                                                                            
W: GPG error: http://apt.radxa.com/bullseye-stable bullseye InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 9B98116C9AA302C7
E: The repository 'http://apt.radxa.com/bullseye-stable bullseye InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

You have to just type:

export DISTRO=bullseye-stable
curl -o - apt.radxa.com/$DISTRO/public.key | sudo apt-key add -

Where bullseye-stable is your distro from above error. Now you can do apt-get update again.

BTW, if you want buy ROCK board you can do this here: https://sklep.wizro.pl/szukaj?controller=search&s=rock

With code BE-A-ROOT you will get 5% discount!

Blokowanie laptopa/notebooka po zamknięciu pokrywy

Niestety Windows 7/8/8.1/Vista ani żaden inny nie posiada wbudowanej umożliwiającej zablokowanie komputera po zamknięciu pokrywy.

Jednak jest do tego prosty program dostępny pod tym linkiem. Pierwsza wersja (LClock) jest bardzo prostym programem, którego wystarczy wrzucić do Autostartu, aby uruchamiał się z komputerem, nie ma tam żadnego interfejsu graficznego do konfiguracji. Druga opcja posiada kilka dodatkowych parametrów do ustawienia.

Problem z czcionkami przy wydruku poprzez przekierowaną drukarkę z pulpitu zdalnego na Windows XP

Na Windows XP z zainstalowanymi wszystkimi aktualizacjami, gdy podłączymy się do pulpitu zdalnego i spróbujemy wydrukować cokolwiek to na drukarce nie będą zgadzały się czcionki, dodatkowo nie będzie polskich liter.

Rozwiązaniem jest ten oto hotfix:

http://support.microsoft.com/?kbid=946411

Pomimo, że jego opis może nie sugerować, że jest on rozwiązaniem problemu to jak się okazuje jest!

rdp, remote desktop, printer from desktop, print from rdp, print from remote desktop, invalid font, wrong font

Mapowanie zasobu z Win 95/98 na nowszych systemach

W windows 95/98 można udostępnić zasób zabezpieczając go jedynie hasłem (nie ma użytkownika), aby zamapować go w nowych systemach wpisujemy jako użytkownika:

nazwa_komputera_95_98\administrator

gdzie zamiast nazwa_komputera_95_98 podajemy nazwę komputera z udostępnionym zasobem, a hasło podajemy takie jakie zostało zdefiniowane w zasobie.

Jeżeli wciąż jest brak dostępu musimy dodać klucz rejestru

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\LMCompatibilityLevel=”DWORD:00000001″

Gotowy plik z wpisem do rejestru: fix_win98_map_share

I działa!

How map share from windows 95/98 on windows vista, 7, 8

Thunderbird: Lightning i Google Calendar

Nie trzeba mieć zainstalowanego „Provider for Google Calendar”, żeby poprawnie obsługiwać kalendarze w Thunderbirdzie.

Wystarczy dodając kalendarz wybrać kalendarz CalDAV i jako ścieżkę wpisać:
https://www.google.com/calendar/dav/[identyfikator kalendarza]/event

Jako identyfikator kalendarza należy wpisać identyfikator wyświetlający się w ustawieniach kalendarza:

Po zatwierdzeniu wystarczy podać hasło (warto jest zapisać przy użyciu managera haseł w Thunderbirdzie).

 

Windows 7/8/8.1 nie odświeża adresu IP po zmianie WIFI

Od której (najprawdopodobniej) aktualizacji Microsoft coś skopał z odświeżaniem adresu. Jeżeli komputer jest uśpiony i wybudza się w nowym środowisku w którym podłącza się do innej SSID nie odświeża adresu.

W takiej sytuacji trzeba zrobić ipconfig /release oraz ipconfig /renew co jest bardzo frustrujace.

Jednak rozwiązanie jest błahsze – wystarczy zmiana w rejestrze klucza

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters]
„DisableDHCPMediaSense”
na wartość 0
(lub dodanie takiego klucza, jeżeli nie istnieje.

Dla wygodnych – plik z regiem do zastosowania.

/Problem with renew IP address after changed SSID in Windows 7, Windows 8/

Instalacja Windows 8/8.1 OEM bez naklejki

Zwykle mawiam w takich sytuacjach: „Miało być tak pięknie, a wyszło jak zwykle”. Tym powiedzeniem mogę również skomentować ruch Microsoftu dotyczący usunięcia naklejek z CD-Keyem z komputerów z preinstalowanym systemem Windows 8.

Miałem wątpliwość okazję przywracać system na takim laptopie – brak partycji recovery, jedyne rozwiązanie: serwis lub samodzielna instalacja. Wybrałem to drugie.

Skąd płytka?

Cała idea braku klucza miała polegać na tym, że użytkownik nie musi pamiętać klucza, nie musi uważać, żeby się nie zamazał (och, to jest piękne, jak klucz się wytarł 🙂 ) itp. Jednak użytkownik może chcieć zainstalować sobie system na np. nowym dysku. Producent w teorii powinien udostępnić płytkę recovery – w Sony chyba jednak o  tym nie słyszeli.

Płytka z Internetu

Wspaniałomyślnie Microsoft dał możliwość pobrania obrazów Windows 8 i 8.1 ze swoich serwerów po podaniu klucza. Zaraz, jak po podaniu klucza? Przecież ja go nie mam!

Jestę hakerę i wyciągnąłem klucz z BIOSu

Przy użyciu oprogramowania RW-Everything możesz dobrać się do klucza (http://rweverything.com/ instalujemy, wybieramy ikonkę z napisem ACPI u góry, a następnie zakładkę MSDM i mamy klucz).

Nie tak szybko mój hakerze!

Microsoft wypnie się na Ciebie jak spróbujesz pobrać obraz przy użyciu tego klucza. Powie „aj Ty, aj Ty, niedobry użyszkodniczku detaliczny, idź tam gdzie kupiłeś a nie będziesz nam tutaj serwerki obciążał”.

Rozwiązanie

Na to chyba czekali wszyscy. Rozwiązanie jest jedno: szukasz płyty z systemem (skądkolwiek, internetu, kolegi, serwisu, MSDN, cokolwiek), instalujesz system i dopiero wtedy wpisujesz wyciągnięty z BIOSu klucz.

Produkey, pkeyui.exe

Bardzo fajne softy, ale jak uruchamiasz je na preinstalowanym przez producenta systemie, ponieważ odczytują aktualnie wpisany w systemie klucz, a nie ten zapisany w BIOSie.

Konkluzja

Microsofcie! Nie tak to powinno wyglądać! Dochodzimy do sytuacji, gdy kupując oprogramowanie nie możemy z niego korzystać!

 

IMAP + Office 2003/2007 + usuwanie maili

Jeżeli szukasz haseł IMAP oraz Office 2003/2007 w zestawieniu z „usuwanie maili” to prawdopodobnie masz problem polegający na tym, że MS w trosce o Ciebie, drogi użytkowniku, postanowił, że korzystając z IMAPa Outlook 2003/2007 nie będzie usuwał od razu wiadomości, a jedynie dopiero wtedy kiedy sobie tego zażyczysz na prawdę 😉

Outlook 2003/2007 zatem zamiast usunąć maila oznacza go do usunięcia i na liście wyświetla się jako przekreślony, jednak fizycznie wciąż pozostaje na serwerze.

Jeżeli chcielibyśmy, żeby maile były rzeczywiście usuwane z serwera to wyjścia mamy dwa:

  1. Godzimy się na to, żeby maile były oznaczane przekreśleniem do usunięcia i jeśli chcemy je fizycznie usunąć z serwera wybieramy z menu Edycja -> Przeczyść
  2. Chcielibyśmy, aby maile czyściły się automatycznie – wtedy wybieramy z menu Edycja -> Przeczyść -> Opcje przeczyszczania i zaznaczamy „Przeczyść elementy podczas przełączania folderów w trybie online”. Ta opcja spowoduje, że gdy tylko zmienimy folder na inny – maile zostaną usunięte fizycznie z serwera.

Niestety, żadna z powyższych opcji nie umożliwia przenoszenia usuniętych wiadomości do kosza. W Office 2010 już pojawia się opcja wskazania folderu Kosz.