2024. április 18., csütörtök

Gyorskeresés

Útvonal

Cikkek » Számtech rovat

Mindenes home server okosan

  • (f)
  • (p)
Írta: |

A jutalom a megszerzett tudás mellett egy olyan rendszer, ami egyszerre router, NAS és akár médiabox is.

[ ÚJ TESZT ]

Mi az írás célja?

Iránymutatást adni, hogy lehet olyan rendszert építeni, ami kiváltja a routert, a NAS-t és talán a médiaboxot is.

Mi nem célja az írásnak?

Elmerülni az alapokban, és belemenni a részletekbe.

Kinek szól az írás?

Azoknak, akik már haladóbb szinten ismerik a linuxot. Vagyis nem néznek furán, ha azt mondom, hogy rsync, vagy mount. :)

Bevezetés

Többször olvastam itt a PH!-n, hogy a "mindent egybe és fogyasszon minél kevesebbet" mozgalom tagjai szeretnének egy olyan PC-t, ami egyszerre router, NAS és médialejátszó. Nekem ez annyira nem tetszett, mert nem véletlenül vannak erre célhardverek és szoftverek, külön-külön, amik a problémát sokkal egyszerűbben oldják meg.

Azonban támadt egy ötletem, ami valószínűleg már másnak is eszébe jutott korábban. Mi lenne, ha nekem is és a "mozgalom" tagjainak is igaza lenne? Ugyanis lehet úgy egybevonni a fent említett szolgáltatásokat, hogy ne egy katyvasz legyen az egészből. Gondolom, már mindenki kitalálta, hogy hogyan. Virtualizálva. :)
Mire van szükségünk? Egy virtualizációs környezetre. (Van x86 alá.) Egy router OS-re, ami nem, árt ha linuxos. (Van x86 alá.) Egy NAS OS-re, ami szintén nem árt, ha linuxos. (Van x86 alá.)

Szükséges hardver

Lényegében bármi megteszi, ami x86 alapú. De tényleg. Nekem egy AMD Brazos-szerű CPU alatt fut a rendszer, nem érzem hátrányát. (Nyilván, ha sebességmániás vagy, akkor számít a CPU is.)
Ami viszont nem árt, főleg, ha még tervezel más virtuális gépet is, az a RAM. Nekem 2 GB RAM-om van, egyelőre ez elég, de lehet, majd bővítem.
Fontos, hogy a rendszerednek legalább 2 db rj45-ös kimenete legyen, mivel, ha routert is akarsz belőle csinálni, ez nem árt, sőt! :)

A felhasznált szoftverek

Szabad szoftverekből dolgozunk. :) Melyek a következők:
- ubuntu server
- openwrt
- OMV

Korlátok

Lehet, hogy most páran csalódottak lesznek, de nem írok le minden részletet és a médialejátszóhoz tartozó részről sem írok hosszabban. Cserébe megtudod, hogy én milyen buktatókkal szembesültem, és azokat hogyan oldottam meg. Úgy gondolom, ezek fontosabbak, mivel copy-pastelni mindenki tud, a neten elérhető cikkekből (amit beleírok a szövegbe), de a felmerülő problémákra már nem biztos, hogy mindenki tudja a megoldást.

Ubuntu server telepítése

Telepíts fel egy ubi server-t a gépedre (LVM-mel telepítsd)

Tedd fel a xent, ebben segítségedre lehet az alábbi cikk

Ha magyarul teszed fel az ubi servert, akkor minden indításkor ki kell választanod a xenes kernelt. Ennek a megoldása vagy az, hogy angolul telepíted, vagy pedig a /etc/default/grub.d/xen.cfg fájlban az angol "GRUB_DEFAULT=" utáni szöveget átírod a magyarra, és újra generálod a grubot.
Ajánlom feltenni a xen-toolst is, mert ezzel könnyen tudsz majd virtuális gépet generálni. [link]

A cikkben fontos szerepe lesz a PCI passthrough-nak. Ezzel a módszerrel lehet ugyanis átadni a különböző eszközeinket a virtuális gépnek. Az ID "08:00.0" az én hálókártyám, nyilván másik gépnél más lesz ez az érték. Ezt az lspci paranccsal tudod megnézni.

Kitaláltam, hogy lehet ubuntu server alatt automatikusan (az indításkor) megoldani a PCI passthrough-t.

sudo vim /etc/modules.conf
xen-pciback

sudo vim /etc/default/grub
GRUB_CMDLINE_XEN="iommu=1"

sudo echo "xen-pciback passthrough=1 hide=(08:00.0)" >> /etc/initramfs-tools/modules

update-initramfs -k all -c

OpenWrt

Ha a xen felment, akkor leszeded a legújabb openwrt-ből a xen kerneles változatot. Mivel az image-ben két partíció van, én úgy csináltam, hogy kiírtam pendrive-ra, majd rsynckel felmásoltam mind a két partíciót ugyanarra az lvm kötetre. (rsync -aAXv [honnan] [hova] )

Az egyik hálókártyát közvetlenül ennek a gépnek adtam ehhez kell a xen-pciback modul, amit a fő gépre kell telepíteni

Az openwrt virtuális gépre érdemes felrakni a pciutilst és a hálókártyához tartozó drivereket

A cfg fájl
bootloader = 'pygrub'

root = '/dev/xvda2 rw'

memory = '256'
vcpus = '1'
#cpus = '2'
localtime = 0
serial = 'pty'

disk = [
'phy:/dev/vg-teszt/open-wrt,xvda2,w',
'phy:/dev/vg-teszt/open-wrt-swap,xvda1,w',
]

vif = [ 'mac=00:16:3E:F1:E4:5F,bridge=br0' ]

on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'

extra = "console=hvc0 xencons=tty"

# Ez csak akkor kell, ha PCI passthrough-t használsz
#pci = [ '00:08.0' ]

name = 'openwrt'
hostname = 'openwrt'

OpenMediaVault

Először a xen-tools-zal generáltam egy alap debian virtuális gépet, majd az OMV-t az alábbi cikk segítségével telepítettem (easy változat):

Ami itt fontos, hogy OMV alatt külön lemez kell a rendszernek és külön lemez kell az adatoknak. A host gépen létrehoztam még egy LVM kötetet az adatoknak, majd a cfg fájlba beletettem xvdb1 néven. Sajnos az OMV nem engedte felcsatolni, ezért egy trükköt kellett alkalmazni. A virtuális gépen egy virtuális blokk eszközt kellett létre hozni és így már fel lehetett csatolni a kötetet.
# mknod /dev/xvdb b 220 0

Média Lejátszó

Ezt ugyan nem próbáltam, de feltételezem, hogy egy multimédiára kihegyezett linux, aminek a kernele támogatja a paravirtualizációt, virtuális gépként futtatható xen alatt.
A videókártyát átadva a xennek pedig teljes értékű lejátszót kaphatunk, úgy, hogy közben a többi szolgáltatás sem szenved hátrányt. VGA Passthrough

Záró gondolatok

Látszik, hogy a feladat megoldható. Azt is tudom, hogy több út létezik. Ez csak egy a sok közül. Vannak NAS-ok, amik az összes funkciót tudják, igaz nem olcsón. Aki nem akar szenvedni a konfigurálással, lehet, egy kész rendszerrel jobban jár.

Én ebből a projektemből sokat tanultam. Talán ez lehet a cél/motiváció annak, aki egy ilyen összetett rendszer építésébe belefog. A jutalom pedig a tudás mellett egy olyan rendszer, ami nemhogy az összes céleszközt kiváltja, de még tovább bővíthető egyéb más feladatra szánt gépekkel is.

Kellemes építést és jó tanulást!

Azóta történt

Hirdetés

Copyright © 2000-2024 PROHARDVER Informatikai Kft.