Ubuntu 20.04 LTS Focal Fossaszerver telepítése
56 min
czakó krisztián telepítés előkészítése telepítő letöltése https //releases ubuntu com/20 04/ "server install image" telepítő indítása a gyári telepítőt csak arra használom, hogy kapjak egy parancssort bár az elmúlt kiadások során jelentős ráncfelvarrást kapott, profi telepítésre csak akkor alkalmas, ha ext4, xfs vagy btrfs fájlrendszert szeretnél hagyományos szoftveres vagy hardveres raid környezetben én zfs t szeretnék, amit a szerver telepítő nem támogat alap beállítások ahhoz, hogy a gyári telepítőt a céljaimra fel tudjam használni az első pár lépést végig kell csinálni a rendszerem uefi boot módban van a hagyományos módot nem javaslom mai hardvereken indítás után "boot ubuntu installer" választása nyelv "english" lehetne magyar, de a telepítéskor és rendszer üzemeltetéskor ezt kerülni szoktam desktopra kiváló felajánlja a telepítő frissítését nem valószínű, hogy számunkra van jelentősége, de bajt nem okoz, így frissítem billentyűzet layout hungarian (állítsd arra, ami a valós billentyűzeted) variant hungarian (szintén) hálózat válaszd ki azt a csatolót, amin keresztül látod a netet nekem ez az ens33 a beállítás a telepítésnél jó dhcp n ha van dhcp szervered ha nincs, állítsd be kézzel proxy ha van/kell, értelemszerűen add meg! mirror address válassz egy hozzád közelit (azt javasolja automatikusan) idáig kellett a gyári telepítő parancssori telepítés előkészítése ezt egyszerűbb távolról, ssh val csinálni (tudom másolni a parancsokat) válts át egy másik terminálra alt f2 állíts be jelszót az ubuntu server felhasználónak! passwd nézd meg az ip címet! networkctl list networkctl status ens33 lépj be távolról! ssh ubuntu server\@192 168 7 215 egyszerűsítsd a további belépéseket! mkdir / ssh ssh add l > / ssh/authorized keys indíts tmux ot vagy screen t! ez segít, hogy ha megszakad a kapcsolat a telepítést ne kelljen újrakezdeni tmux innen root ként dolgozunk sudo i ha kell proxy, állítsd be! export http proxy=http //192 168 2 1 8888/ export https proxy=$http proxy telepítés paramétereinek beállítása hálózat export srvname="srv01" export domain="devopsakademia lan" export mac=$(cat /sys/class/net/ens33/address) export iface="lan0" export ip="192 168 7 200/24" export gw="192 168 7 2" export dns="192 168 7 2" időzóna beállítása export tzarea="europe" export tzname="budapest" nyelvi támogatás beállítása export languages="en hu" export default locale="c utf 8" bios vagy uefi boot? export boot="uefi" # or boot="mbr" if \[ $boot == "uefi" ] ; then export parttype="ef00" ; \ else parttype="ef02" ; fi diszkek és raid diszkek felsorolása lsblk export disks="sda sdb sdc sdd" raid beállítása lehetőségek mirror hagyományos tükör (min 1 diszk, kapacitás 1 diszk, működik mindaddig, míg van működő diszk) raidz1 ez valójában raid5 (min 3 diszk, 1 hibáját bírja ki, kapacitás n 1) raidz2 ez valójában raid6 (min 4 diszk, 2 hibáját bírja ki, kapacitás n 2) raidz3 ez még egy szinttel több (min 5 diszk, 3 hibáját bírja ki, kapacitás n 3) raid mód beállítása export raid="raidz2" zfs pool neve export pool="${srvname}pool" disztribúció és verzió beállítása a telepítő ezt tartalmazza, azt használom source /etc/os release export id export version codename kernel kiválasztása több lehetőséged van a környezettől függően linux image generic linux image aws linux image azure linux image gcp linux image gke linux image virtual linux image extra virtual fizikai gépen a generic a logikus export kernel="linux image generic" zfs létrehozása zfs telepítése frissítsd a csomagokat! apt update tedd fel a zfs t! apt y install zfsutils linux zfs zed spl diszk partícionálása for disk in ${disks} ; do sgdisk z \ n9 8m 0 t9\ bf07 c9 ${disk}9 reserved \ n1 1m +512m t1 ${parttype} c1 ${disk}1 ${boot} \ n2 0 0 t2\ bf01 c2 ${disk}2 zfs /dev/${disk} done lsblk kell egy könyvtár, ahová csatolod a zfs t, amire telepítesz mkdir p /target fájlrendszer elkészítése hozd létre a zfs t! parts=$(for disk in ${disks} ; do echo n "/dev/${disk}2 " ; done) zpool create f \ o ashift=12 \ o atime=off \ o canmount=off \ o compression=lz4 \ o normalization=formd \ o mountpoint=/ \ r /target ${pool} ${raid} ${parts} zpool status hozz létre a rendszer gyökérnek (/) egy dataset et teljesen elkülönítve! zfs create o canmount=off \ o mountpoint=none \ ${pool}/root zfs create o canmount=noauto \ o mountpoint=/ \ o exec=on \ o setuid=on \ o devices=on \ ${pool}/root/${id} zfs mount ${pool}/root/${id} zpool set bootfs=${pool}/root/${id} ${pool} mount t zfs kapcsold ki a zfs pool on a felesleges jogokat! zfs set exec=off ${pool} zfs set setuid=off ${pool} zfs set devices=off ${pool} hozd létre a rendszer dataset eket, hogy elkülönítsd a különböző dolgokat! zfs create o canmount=off ${pool}/var zfs create o canmount=off ${pool}/var/lib zfs create ${pool}/var/lib/apt zfs create o exec=on ${pool}/var/lib/dpkg zfs create ${pool}/var/log zfs create o com sun\ auto snapshot=false ${pool}/var/tmp zfs create o com sun\ auto snapshot=false ${pool}/var/cache zfs create o com sun\ auto snapshot=false ${pool}/var/cache/apt zfs create ${pool}/var/spool zfs create ${pool}/var/mail zfs create o com sun\ auto snapshot=false o exec=on ${pool}/tmp zfs create o exec=on ${pool}/root zfs create o mountpoint=/home ${pool}/home zfs create o mountpoint=/srv ${pool}/srv zfs list állítsd be a tmp könyvtárak jogát! chmod 1777 /target/tmp chmod 1777 /target/var/tmp telepítés alaprendszer telepítése apt y install debootstrap debootstrap ${version codename} /target alaprendszer beállítása állítsd be a hálózatot! echo ${srvname} > /target/etc/hostname echo "127 0 1 1 ${srvname} ${domain} ${srvname}" >> /target/etc/hosts cat <\<eof > /target/etc/systemd/network/10 persistent net link \[match] macaddress=${mac} \[link] name=${iface} eof cat <\<eof > /target/etc/netplan/00 lan config yaml network version 2 renderer networkd ethernets ${iface} dhcp4 no dhcp6 no addresses \[${ip}] gateway4 ${gw} nameservers addresses \[${dns}] search \[${domain}] eof állítsd be az apt forrásokat! grep '^deb http' /etc/apt/sources list > /target/etc/apt/sources list beállítások a telepített alaprendszeren belül készítsd elő a telepített környezetet, hogy chroot al lehessen használni! mount rbind /dev /target/dev mount rbind /proc /target/proc mount rbind /sys /target/sys lépj be a telepített környezetbe chroot al! chroot /target /bin/bash frissítsd a telepített rendszert! apt update apt y full upgrade időzóna és nyelvi támogatás debconf set selections <\<eof locales locales/default environment locale select ${default locale} debconf debconf/priority select critical debconf debconf/frontend select noninteractive tzdata tzdata/areas select ${tzarea} tzdata tzdata/zones/${tzarea} select ${tzname} eof apt y install $(for language in ${languages} ; \ do echo language pack ${language} ; done) echo "${tzarea}/${tzname}" > /etc/timezone ln sf /usr/share/zoneinfo/${tzarea}/${tzname} /etc/localtime update locale ${default locale} kernel telepítése apt y install no install recommends ${kernel} ha kell firmware, azt is tedd fel! pl apt y install firmware realtek alapvető programok telepítése szükséged van a zfs alkalmazásokra ezen felül ha van más, ami biztosan kell, az itt jöhet vagy később bármikor a dosfstools elengedhetetlen, ha uefi boot ot használsz én felteszem még a gdisk et is (ha particionálni kell jól jön), valamint az rsync et (hatékony fájlmásoló, fogom használni) apt y install gdisk dosfstools zfsutils linux zfs zed zfs initramfs spl rsync grub telepítése for disk in ${disks} ; do mkdosfs f 32 n uefi ${disk^^} /dev/${disk}1 done mkdir /boot/efi disk1=$(echo $disks | cut d' ' f1) echo partuuid=$(blkid s partuuid o value /dev/disk/by partlabel/${disk1}1 uefi) /boot/efi vfat defaults 0 1 >> /etc/fstab mount /boot/efi apt y install grub efi grub probe / update initramfs c k all update grub grub install target=x86 64 efi efi directory=/boot/efi bootloader id=ubuntu recheck no floppy disks2=$(echo ${disks} | cut d' ' f 2 ) for disk in ${disks2} ; do mount /dev/${disk}1 /mnt rsync a /boot/efi/ /mnt/ umount /mnt done swap létrehozása zfs create v 4g b $(getconf pagesize) \\ o compression=zle \\ o logbias=throughput \\ o sync=always \\ o primarycache=metadata \\ o secondarycache=none \\ o com sun\ auto snapshot=false \\${pool}/swap mkswap /dev/zvol/${pool}/swap echo /dev/zvol/${pool}/swap none swap defaults 0 0 >> /etc/fstab zfs dataset quota beállítása zfs set quota=1g ${pool}/tmp zfs set quota=11g ${pool}/var zfs set quota=2g ${pool}/var/cache zfs set quota=1g ${pool}/var/cache/apt zfs set quota=512m ${pool}/var/lib/apt zfs set quota=512m ${pool}/var/lib/dpkg zfs set quota=5g ${pool}/var/log zfs set quota=1g ${pool}/var/mail zfs set quota=1g ${pool}/var/spool zfs set quota=1g ${pool}/var/tmp zfs set quota=10g ${pool}/home zfs set refreservation=2g ${pool}/root/${id} zfs set reservation=10g ${pool}/root zfs set refquota=5g ${pool}/root/${id} zfs set refreservation=1g ${pool}/root zfs set reservation=3g ${pool}/var zfs set reservation=1g ${pool}/var/lib zfs set reservation=1g ${pool}/var/log posix acl bekapcsolása zfs set acltype=posixacl ${pool} logrotate ben a fájlok tömörítésének kikapcsolása for file in /etc/logrotate d/ ; do if grep eq "(^|\[^#y])compress" "$file" ; then sed i r "s/(^|\[^#y])(compress)/\1#\2/" "$file" fi done root jelszó beállítása passwd root ssh telepítése apt y install ssh befejezés lépj ki a chroot környezetből! exit engedélyezd, hogy root ként ssh kulccsal be tudj majd lépni! az elején az ssh kulcsot betettem, ezt könnyen fel tudom most használni mkdir /target/root/ ssh cat /home/ubuntu server/ ssh/authorized keys > /target/root/ ssh/authorized keys válaszd le a fájlrendszereket! umount rfl /target/boot/efi umount rfl /target/dev umount rfl /target/sys umount rfl /target/proc zpool export ${pool} indítsd újra a szervert! systemctl reboot