FreeBSD 10.0 telepítése RPI-re
Ne keverjük a rendszereket, ezért ha a laptopomon és a VPS-en is 10.0-s verzió van, legyen az RPI-n is. Innen egy bz2-vel tömörített állomány letölthető, amelyet a szokásos módon dd
-vel az RPI kártyájára írhatunk.
Az RPI boot-ja után root-ként üres jelszóval léphetünk be, pw-vel új felhasználót adhatunk a rendszerhez (egy kijelző és egy USB-s billentyűzet nem árt). Érdemes a wheel
csoporthoz is hozzáadni az új felhasználót, hogy su
-val root-tá válhasson. Persze a root jelszavát is érdemes beállítani (nyilván a passwd programmal).
Ezután SSH-val a létrehozott felhasználóval beléphetünk (mert ugye alapértelmezetten a root nem lép be ssh-val, ezért kellett először létrehozni egy felhasználót), illetve root-tá válva beállításokat végezhetünk. Innen kezdve az RPI-re kötött billentyűzetre és a kijelzőre nincs szükség.
Érdemes a /etc/rc.conf-ban a background_fsck
-t tiltani, ui. (szabálytalan?) leállás után, ha a fájlrendszer nem tiszta, nem ellenőriz rögtön ("background"), ez nálam kernel pánikot okozott (ilyenkor memóriakártya kivesz, "rendes" gépbe bedug, majd ott fsck
, és újra menni fog kernel pánik nélkül). Persze ezzel egyidőben a fsck_y_enable
-t yes-re állítani.
Csomagkészítő környezet
A csomagkészítő környezetet a VPS-emen hoztam létre, izzadjon, dolgozzon, ha már fizettem érte. Nyilván saját gépen is létrehozható, nem szükséges VPS-nek lenni.
Tehát a host gépre szintén letöltjük a fenti img.bz2 fájlt, kitömörítjük, mdconfig-gal egy eszközt hozunk létre (mdconfig -f freebsd-arm.img
), amit egy könyvtárba felcsatolunk, majd ezt az alaprendszert egy könyvtárba átmásoljuk (ahova majd chroot-tal beléphetünk), legyen ez ${chroot-dir}
Telepítjük a qemu-user-static emulátort, majd a /usr/local/bin/qemu-static-arm
fájlt bemásoljuk a ${chroot-dir}/usr/bin
könyvtárába, hogy a chroot is lássa majd. A dev
-rendszert is felcsatoljuk: mount -t devfs devfs ${chroot-dir}/dev
.
Még a host-rendszerből töltsük le és csomagoljuk ki a port-fát: portsnap -p ${chroot-dir}/usr/ports fetch extract
(így még a "rendes" rendszer dolgozik, nem az emulált, ami nyilván lassabb lesz).
Érdemes megadni a ${chroot-dir}/etc/make.conf-ban, hogy melyik könyvtárban végezze a fordítást (WRKDIRPREFIX
), illetve az elkészült csomagok hova kerüljenek (PACKAGES
- alapértelmezetten /usr/ports/packages
- nekünk kell létrehozni a könyvtárat!).
Tapasztalatom szerint érdemes még a ${chroot-dir}/etc/resolv.conf
-ban megadni egy nameserver
-t, hogy legyen net a chroot-on belül is.
Ezzel elvileg kész a környezet, chroot ${chroot-dir} qemu-arm-static sh
paranccsal belépünk a környezetbe (nyilván az sh
helyett lehet csh
is). Első lépésként a pkg csomagot kell telepíteni (a gyári pkg
régi, mivel a snapshot se új, és azóta pár dolog változott), a szokásos cd /usr/ports/ports-mgmt/pkg && make install clean
paranccsal. Ha a make
target-ei közé a package
-ot is berakjuk, csomag is készülni fog. Ha a ports-mgmt/portmaster portot telepítjük, a portmaster -g port-category/port
paranccsal készít csomagot a telepítés mellett (portupgrade-t nem ismerem, de nyilván ő is rábírható).
Innen kezdődően már csak idő, kedv, meg valami ilyesmik kérdése, hogy elkészüljenek a megfelelő csomagok.
Csomagok használata
Egy "elérhető" helyre másoljuk a csomagokat (All
könyvtárba), majd a pkg repo csomagok_könyvtára
paranccsal létrehozzuk a csomagtároló katalógusát.
Az RPI-n a /usr/local/etc/pkg/repos/FreeBSD.conf
fájlt létrehozzuk (ha a könyvtár nem létezik, mkdir -p /usr/local/etc/pkg/repos
), melyben a hivatalos FreeBSD csomagtárolót "kikapcsoljuk": FreeBSD: {enabled: no}
tartalommal feltöltjük.
A szokásos módon létrehozunk a /usr/local/etc/pkg/repos
fájlt, amelyet a repo adataival töltünk fel.
A lényeg
Az általam legyártott csomagok, illetve a róluk levő információk a http://uzsolt.hu/freebsd/ oldalon elérhetőek. Röviden:
/usr/local/etc/pkg/repos/rpi-uzsolt.conf
fájlba:
rpi-uzsolt: {
url: "http://uzsolt.hu/freebsd/rpi-packages",
mirror_type: NONE,
signature_type: none,
enabled: yes
}
Ha nem friss rendszert használunk (tehát pl. a fenti img.bz2-t), akkor először le kell tölteni a megfelelő pkg
-csomagot (jelenlegi állás szerint fetch http://uzsolt.hu/freebsd/rpi-packages/All/pkg-1.3.8_2.txz
), majd telepíteni (pkg add pkg-1.3.8_2.txz
).
Ezután pkg update
letölti a csomaginformációkat, majd a szokásos pkg install foo
telepíti (függőségekkel együtt) a foo
csomagot.
Az aktuálisan elérhető csomagok listája és fordítási opciói itt elérhetőek.
Megjegyzések
- Persze lehetséges, hogy az rpi-re magunk készítjük el az img-fájlt, így frissebb rendszert kapunk, és a
pkg
kézi frissítése helyett, a repó beállítása után rögtönpkg update && pkg install foo
. - Persze az is lehetséges, hogy magát a fordító-környezetet mi magunk kreáljuk, ehhez a FreeBSD-forrásra szükségünk lesz (általában a
/usr/src
-ben található), meg persze plusz időre, míg ez is elkészül. - Lehetséges a fordítás gyorsítása is, ahol a host fordítóját használjuk (ld. Cross Building Using the Host Cross Compiler szakasz), viszont ez amd64 esetén linkelési gondokat okoz, ahogy meg is tapasztaltam. Elvileg ez a probléma 32bites FreeBSD esetén nem lép fel, tehát ott használható.
- uzsolt blogja
- A hozzászóláshoz be kell jelentkezni
- 1742 megtekintés
Hozzászólások
"az RPI legyen egy szkenner szerver"
Erről majd írsz bővebben? Leginkább az érdekelne, hogy mit használsz, de a technikai megvalósítása is érdekel.
- A hozzászóláshoz be kell jelentkezni
Majd. Az még nincs kész, de amint meglesz, azt is igyekszem megírni.
- A hozzászóláshoz be kell jelentkezni
Első blikkre SANEd-re gondolnék. (Ja ha annak is meglesz a leírása, belinkeled ide is?)
- A hozzászóláshoz be kell jelentkezni
Én másodikra is. De valahogy nem akarja az igazságot (ld. lentebbi hozzászólásom).
- A hozzászóláshoz be kell jelentkezni
Parancsoljatok: http://hup.hu/node/135724
- A hozzászóláshoz be kell jelentkezni
Most reggel, munkába menet előtt játszottam egy kicsit.
A scanimage
az RPI-n futtatva generál képet, ezzel nincs gond. Viszont hiába írom az RPI/usr/local/etc/sane.d/saned.conf
-ba, hogy 192.168.2.100 (laptop IP-címe), és a LAPTOP/usr/local/etc/sane.d/net
-be, hogy 192.168.2.102 (RPI IP-címe), a kérés valahogy nem jut el.
A szkenner egy HP Deskjet F4200, aminek csak a szkenner részét használjuk (a nyomtató részét nem). Próbálom követni az ArchWiki-t követni. A hplip-et is felraktam, próbáltam futtatni mindenhol, de valamit biztos kifelejtek. Majd délután még próbálom.
Szerk.: egy ötlet: a hplip csomagba nem fordítottam SNMP támogatást ("Network/JetDirect support"), lehet, ez a gond. Majd délután kiderül :)
- A hozzászóláshoz be kell jelentkezni
Valószínűleg nem ez volt a gond, mert még most se megy (saned újraindítva).
- A hozzászóláshoz be kell jelentkezni
A megoldás: a sane-backends csomagban is engedélyezni kell az SNMP opciót.
- A hozzászóláshoz be kell jelentkezni
Mi generalta a riportot?
--
Ki oda vágyik, hol száll a galamb, elszalasztja a kincset itt alant:
()=()
('Y') Blog | @hron84
C . C Üzemeltető macik
()_()
- A hozzászóláshoz be kell jelentkezni
A csomagok listáját? Egy saját szkript :)
Az a rész, ami (szerintem) téged érdekel:
for package in `ls ~/freebsd/rpi-packages/All/*.txz | sort -f`; do
echo "<tr><td>"
pkg query -F ${package} "<a href=http://uzsolt.hu/freebsd/rpi-packages/All/%n-%v.txz>%n-%v</a></td><td>"
if [ `pkg query -F ${package} "%#O"` -gt 0 ]; then
echo "<ul style='list-style-type:none'>"
pkg query -F ${package} "<li class='option %Ov'>%Ok - %Ov</li>"
echo "</ul>"
fi
echo "</td></tr>"
done
Magyarázatot lásd man pkg-query.
- A hozzászóláshoz be kell jelentkezni
Koszi.
--
Ki oda vágyik, hol száll a galamb, elszalasztja a kincset itt alant:
()=()
('Y') Blog | @hron84
C . C Üzemeltető macik
()_()
- A hozzászóláshoz be kell jelentkezni
Itt az én próbálkozásaim (kliens programok stb.)
http://hup.hu/node/131759
- A hozzászóláshoz be kell jelentkezni