Protože podpora pro Debian 9 Stretch bude brzy končit, začal jsem řešit přechod na novější Debian 10 Buster. Do přechodu se nikdy nehrnu, protože mám trochu obavy z dílčích problémů při upgrade. A pokud se jedná o router, který mi zajišťuje připojení k síti, tak jsem o to opatrnější. Respektive raději si na upgrade vyhrazuju více času.
Postup na přechod není nikterak složitý a při upgrade jsem se nesetkal s žádnou výraznou komplikací. Jediný problém, který se objevil byl ten, že po bootování automaticky nestartoval dhcp server (dnsmasq) a musel jsem ho nastartovat ručně. Chvíli mi trvalo, než jsem přišel na to, jak problém s automatickým startováním vyřešit. Pojďme tedy na postup přechodu Debian 9 na Debian 10.
Aktualizace instalovaných balíčků
Nejprve je dobré začít aktualizací současného systému Debian 9. K tomu poslouží sekvence následujících příkazů.
sudo apt update sudo apt upgrade sudo apt full-upgrade sudo apt --purge autoremove
Po aktualizace je dobré systém restartovat, pro ujištění, že všechno funguje jak má (zejména pokud došlo k aktualizaci jádra).
Aktualizace zdrojů balíčkovacího systému APT
Na začátek jsem zkontroloval na jaké zdroje balíčkovací systém odkazuje. Výstup vypadal takto:
root@espressobin:~# cat /etc/apt/sources.list deb http://httpredir.debian.org/debian stretch main contrib non-free #deb-src http://httpredir.debian.org/debian stretch main contrib non-free deb http://httpredir.debian.org/debian stretch-updates main contrib non-free #deb-src http://httpredir.debian.org/debian stretch-updates main contrib non-free deb http://httpredir.debian.org/debian stretch-backports main contrib non-free #deb-src http://httpredir.debian.org/debian stretch-backports main contrib non-free deb http://security.debian.org/ stretch/updates main contrib non-free #deb-src http://security.debian.org/ stretch/updates main contrib non-free
Následující sekvence příkazů zajistí, přepsání slova stretch na slovo buster ve všech zdrojích. Pro jistotu je dobré udělat zálohu.
sudo cp -v /etc/apt/sources.list /root/ sudo cp -rv /etc/apt/sources.list.d/ /root/ sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list sudo sed -i 's/stretch/buster/g' /etc/apt/sources.list.d/* ### see updated file now ### cat /etc/apt/sources.list
Načtení nových zdrojů balíčků
Jednoduše příkaz:
sudo apt update
Minimální systémový upgrade
Nejprve aktualizujeme nezbytné minimum.
sudo apt upgrade
Při tomto procesu se bude systém ptát na některé konfigurační soubory, jestli chcete ponechat původní nebo nainstalovat nové. Buďte v tomto obezřetní, ať si nepřepíšete vlastní konfigurace. Já jsem si vždycky porovnával obsah nových souborů s obsahem existujících a podle toho jsem se rozhodoval.
Zároveň jsem povolil restartování služeb po aktualizaci balíčků. Počítejte ovšem s tím, že Vám postupně spadne většina služeb. V mém případě to byla i wifi konektivita. Proto jsem se připojil k zařízení raději kabelem, aby se proces instalace nepřerušil.
Úplný upgrade na Debian 10
Nejprve aktualizujeme nezbytné balíčky v rámci Debian 10.
sudo apt full-upgrade
Po restartu je dobré ověřit si verzi systému a odstranit staré balíčky.
uname -r lsb_release -a sudo apt --purge autoremove
Problém se startováním DNSMASQ – přidělování IP adres
Po restartu systému jsem narazil na problém, že dhcp server nestartoval automaticky. Musel jsem ho nastartovat ručně po startu:
systectl start dnsmasq
V logu jsem našel následující informaci:
dnsmasq: failed to create listening socket for port 53: Address already in use [fail] invoke-rc.d: initscript dnsmasq, action "start" failed.
Po delším hledání se mi podařilo část problému vyřešit editací souboru /etc/systemd/resolved.conf. Bylo nutné nastavit proměnnou:
DNSStubListener=no
Bohužel se u mě sešly 2 problémy najednou a proto řešení trvalo ještě déle. Ani tento zásah nepomohl, aby démon dnsmasq startoval automaticky. V logu jsem dohledal další chybové hlášení. V rámci konfigurace souboru /etc/dnsmasq.conf jsem opsal i tento parametr:
bind-interfaces
A to byla druhá příčina, proč démon při bootování nenastartoval. Asi ještě nebyla aktivní síť a proto padnul. Zakomentování parametru se vše vyřešilo. Přikládám ještě úplnou konfiguraci souboru /etc/dnsmasq.conf:
interface=br0 # Use interface wlp0s0 listen-address=172.24.1.1 # Explicitly specify the address to listen on #bind-interfaces # Bind to the interface to make sure we aren't sending things elsewhere server=8.8.8.8 # Forward DNS requests to Google DNS domain-needed # Don't forward short names bogus-priv # Never forward addresses in the non-routed address spaces dhcp-range=172.24.1.50,172.24.1.150,12h # Assign IP addresses between 172.24.1.50 and 172.24.1.150 with