auto login Raspbian

Fórumok

Sziasztok.

egy RPI-t szeretnék automatikusan, monitor és klaviatúra nélkül is elinduló, előre beállított scriptet futtató kiber-rabszolgává alakítani.

A jelenlegi akadály az, hogy elfelejtettem, hogyan kell a felesleges dolgokat eltávolítani, pláne debian alapon.

Ezeket szeretném megszüntetni:

1. login. (azt szeretném, hogy a rendszer automatikusan induljon parancssorban, rootként. Amoolyan windows3.1-gyé alakításról van szó, ha csak ezt nézem)

2. Lehetőleg ne írjon a kártyára szinte semmit, hogy ha áramkimaradás van, semmi se legyen a fájlrendszeren félbehagyottan. (No ezt végképp nem tudom hogyan tegyem, mert a rosszbian nem tudom, mikor mit ír és hova.)

Hozzászólások

Nincs RPI-m, de van gondolatom. :)

1. /etc/rc.d/rc.local Legalább is Fedorán. Amit ide írsz, az root-ként futkorászik, nyilván su -c-vel bárki más nevében is tudsz scriptet futtatni.

2. Tedd külön filerendszerre a /tmp-t, /var-t, ha van helyed, akár RAM disk-en tmpfs-re, a maradék / pedig legyen read only mount-olva. Így aligha futsz abba bele, hogy sérül a filerendszered.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

2. minden gépemen ezt teszem, mondjuk a /var kivételével, hogy a tmp-ek ramdrive-on vannak. /dev/shm (1.2GB)
Most azonban csak fél giga ramom van itten' belül... A külön fájlrendszer azonban mégis jó ötlet, így az alap nem sérül.

---
--- A gond akkor van, ha látszólag minden működik. ---
---

Így van. Ha flash device-on rakod külön a /var-t, miközben a /-t ro mount-olod, máris nyertél.

Amúgy a kevés RAM miatt használhatsz tmpfs-t, ugyanis a tmpfs használ swap-et. Tehát csinálnék a flash device-ra swap-et, majd tmpfs-re tenném a /var-t, s ha kevés a RAM, ír swap-re.

Mindemellett a swap-re beállítanám a tömörítést, az új kernelek - talán 3.10 után - támogatják már. A zswap.enabled=1 kernelparaméter a megoldás.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

" (azt szeretném, hogy a rendszer automatikusan induljon parancssorban, rootként. Amoolyan windows3.1-gyé alakításról van szó, ha csak ezt nézem)"

Tápot adsz neki, elindul.
Felhúzza a hálókártyát, és máris ssh-zhatsz. Nem rootként, mert az álmoskönyvek szerint nem egészséges, de utána sudo -i, és már randa is vagy.

ip cím nélkül nem megy..
arp-scan ugyan jelzi, hogy érkeznek csomagok, de aztán sikertelen vagyok.

Ezt részletezem.
arp-scan --interface=eth0 192.168.1.0/29
Erre megjelenik azonnal ez:
192.168.0.10 [macaddress] Rasberry PI Foundation
Ezután kiadom ezt:

ssh pi @ 192.168.0.10 (utolsó 3 tag egybeírva...)

...de semmi eredmény:
Port 22: Network is unreachable..
---
--- A gond akkor van, ha látszólag minden működik. ---
---

nem ismerem az arp-scan tool-t, de eleg furcsa, hogy a 192.168.1.0/29 szkennelesere megtalalja a 192.168.0.10-es IPvel rendelkezo rpi-t, tekintve, hogy az arp nem routolhato protokoll.
Minden esetre ha ez nem eliras akkor nem lehet, hogy rosszul van beallitva pl. fix ip a pi-nek?
Probald meg eloszor siman pingelni es ha az megy akkor ssh :)

Ctrl-v másolás történt, nagyon nehezen menne ez esetben az elírás.
Az igazat megvallva nem tudom, miért nem tudok ssh-zni az rpi-re. Egy hete van meg és ezidáig nem sikerült vele semmit elérnem, csak annyit, hogy van rajta egy debian és egy mc.

Legutoljára az ELTE szerverére ssh-ztam életemben, oda mindig sikerült. Akkoriban otthonra még nem ment fel a latex (kopasz voltam), a fordítást mindig ssh-val végeztem, majd a pdf-et pine-nal hazaküldtem magamnak.
Az rpi viszont kifog rajtam. Minél kisebb egy ketyere, annál nagyobbat lehet vele szívni? Valami banális dolgot nem teszek jól, biztos vagyok benne. :(

------------
pingelni sem tudtam az rpi-t.

Most ez a helyzet:

network # cat /mnt/rasberry/etc/network/interfaces
auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

iface eth0 inet static
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.254
network #

---
--- A gond akkor van, ha látszólag minden működik. ---
---

akkor feltételezve, hogy a hálózat amire dugtad a 192.168.1.0 hálót szolgálja ki:
vagy az eth0 bejegyzésénél az address-t írod át 192.168.1.10-re, vagy azt mondod, hogy
iface eth0 inet dhcp (a többi sort alatta kikommenteled/törlöd) és majd ad neki a dhcp szerver ip-t.

Ha ez megtörtént kell tudnod pingelni és ssh-val csatlakozni rá.

Töröltem az utolsó 4 sort. A többi az eredeti Raspbian sorai voltak. Indítottam, majd megnéztem most már nem parancssorban, hanem végső kínomban wiresharkkal, mik történnek eth0-n. "Raspberry" tartalmú érdekességeknél keresgéltem IP címeket, ping, ssh egyiknél sem ment.

---
--- A gond akkor van, ha látszólag minden működik. ---
---

Nem lehetséges, hogy ahhoz, hogy egyáltalán pingelni lehessen az RPI-t, az autologinnak meg kell valósulnia (még mindig nem jöttem rá hogyan), és ha azt akarom, hogy az ssh is menjen, akkor valami ilyesmi elindítására is szükség van?
http://cplus.about.com/od/raspberrypi/a/How-Do-I-Setup-Ssh-On-Raspberry…

-------
Azt hiszem összegyűjtöm az eddig talált érdekesebb leírásokat, melyek egyike sem sikerült.
http://raspberrypi.stackexchange.com/questions/38/prepare-for-ssh-witho…
Itt a leírás elmegy egészen a vnc-ig. Már az elején elakadtam, hiszen nekem nem volt a boot könyvtáramban boot_enable_ssh.rc és boot.rc
De ez az első eset, amikor már válaszolt az rpi a pingre, amit a network-ben beállítottam! Csakhogy utána hiába próbálkoztam ssh-val, timed out-tal leállt minden.
Ellenőriztem netdiscover-rel, a beállított IP címet azonnal kiírja, de nem RPI-ként, hanem Unknown vendorként.
A putty-ot próbálva ssh-hívásra használni szintén kudarc: timed out.
---
--- A gond akkor van, ha látszólag minden működik. ---
---

Most sajnos semmi.
Az előbbiekben tényleg "nagy" előrelépés volt, hogy legalább meg tudtam pingelni. az ssh megint jelzett 2-3 perc után a 22-es porton: Connection timed out.

Most azt nézegetem, mi van akkor, ha nem nyílik meg a port vagy valami ezen a téren nem stimmel.

---
--- A gond akkor van, ha látszólag minden működik. ---
---

Ez az, amire nem gondoltam. Most egy spanyol slackware-klónom van éppen, ezen /etc/network könyvtár sincs..
Mivel ez számomra sötét terület, hétfőn beülök egy könyvtárba néhány könyv elé. Máshogy nem fog menni.

---
--- A gond akkor van, ha látszólag minden működik. ---
---

Fedorán a NetworkManager appletjének GUI-ján ahhoz az interface-hez, amihez az RPi-t kötném, ha lenne, be lehet állítani az IPv4 settings fülön, hogy shared to othercomputers. Ez aztán megcsinál mindent, beröffenti a DHCP szervert, ami így az illető interface-re kötött gépnek IP-t oszt, meg az ip_forward-ot is beállítja.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Mivel a Raspberry Pi-t leváltottam egy Cubietruckkel, így csak emlékezetből (bár ezen is így csinálom):
- update-rc.d-vel beállítottam, hogy az sshd elinduljon a boot során, ezzel az ssh probléma letudva.
- a boot után a cron indítja a szükséges programot:
-- crontab -e után: @reboot /ahol/van/a/futtatandó.file

- A router és a Raspberry Pi „alá” toltam egy szünetmentes tápot. Nem volt azóta sok órás áramszünet, de tippem szerint több mint egy napot ki kell bírniuk.

-----

(&%;_98\<|{3W10Tut,P0/on&Jkj"Fg}|B/!~}|{z(8qv55sr1C/n--k**;gfe$$5a!BB]\.-

+1.
Ezekben van alapból SSH bootnál indul.Szerintem fentebb vázolt probléma van hogy a laptopod nem egy DHCP server.Erre gondolom olyan image lenne megoldás ahol belenne lőve neki egy fix ip.És te abba subnetbe tartozó ip-vel szépen csatlakoznál rá.
Serialkapcsolódsz hozzá és beállítod magad amit kell.
1.Minibian
2.Egy ups.

Az sd kártyán tettem kísérletet arra, hogy átírjam fix ip-re a raspbiant. Sajnos vakon, mert csak bemásoltam valahonnan, nem tudtam, mit írtam. Aztán kiderült, hogy az kevés, de nem értettem, hogyan tovább. Ezért mondtam fentebb azt, hogy betakarodok egy könyvtárba és megtanulom az alapszintű hálózatkezelést unixokon. Félek, mire mindent tudatosan végzek, már rég elavult lesz az, ami kiváltotta az igényt minderre. Régebben kellett volna már az elején komolyan vennem a hálózatokat, pl. otthon.

---
--- A gond akkor van, ha látszólag minden működik. ---
---

mivel látom, hogy nem sikerült eddig megoldani és mivel pont volt egy elfekvő pi az asztalon, csináltam egy "headless" telepítést nulláról, Windows rendszeren (Linuxról még egyszerűbb is, de nekem most ez van kéznél).

Hozzávalók:
Pi + Üres SD memóriakártya + Táp
PC
hálózati kábel (patch vagy cross, UTP, FTP netán SFTP ízlés szerint)
SSH kliens (pl. PuTTY)
a legújabb raspbian image (zip): http://www.raspberrypi.org/downloads/
Win32DiskImager: http://sourceforge.net/projects/win32diskimager/
tftpd32: http://tftpd32.jounin.net/download/tftpd32.450.zip

Elkészítés:
1. a letöltött rasbian image-t kicsomagolás után win32diskimagerrel ráírjuk a memóriakártyára.
2. a vezetékes hálózati kártya beállításainál megadjuk, hogy fixen a 192.168.1.1/24 IP címet használja.
3. a tftpd32-t kicsomagolás után elindítjuk, majd a következő beállításokat alkalmazzuk a Settings gomb megnyomása után:
GLOBAL fülön: minden elől kivesszük a pipát, kivéve a DHCP szervert
DHCP fülön így:

Leokézzuk.

4. A főablakban a server interface-nél kiválasztjuk a 192.168.1.1 IP-jű vezérlőt.
5. Összedugjuk a Pi-t és a PC-t a kábellel.
6. Behelyezett memóriakártyával tápot adunk a Pi-nek.
7. 15-20mp után látjuk a logban, hogy a dhcp szerver kiosztotta az egyetlen rendelkezésre álló címet a Pi-nek:

8. Bejelentkezünk az eszközbe SSH segítségével a 192.168.1.2 címen és az alapértelmezett 22-es porton, a 'pi' felhasználónévvel és a 'raspberry' jelszóval.
9. Belépés után szerezzünk root jogot (sudo su), majd szerkesszük az /etc/network/intefaces fájlt (pl. nano-val), hogy így nézzen ki:

auto lo
auto eth0

iface lo inet loopback
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1

10. Elmentjük a fájlt.
11. passwd-vel adunk a root-nak egy tetszőleges jelszót.
12. Kiadjuk a reboot parancsot. Amíg a Pi újraéled bezárhatjuk a tftpd-t, már nem lesz rá szükség.

Indulás után belogolhatunk a 192.168.1.2-re SSH-val. Ha a raspi-config ismét bejönne (szokott) akkor csak menjünk a Finish-re, majd logoljunk ki és be.

A partíciók átszabása már egy külön téma, ha szükséges azt is leírom szívesen.

Jó ég..

iface eth0 inet static (itt "static" helyett nekem dhcp volt...!!!)
address 192.168.1.222

A többi sor nagyjából rendben volt.
Ma este teát főzök és szertartásosan leülök és ismét elindítom.

Kösz szépen a leírást

---
--- A gond akkor van, ha látszólag minden működik. ---
---

Ami a logint illeti, tedd megjegyzésbe az összes getty -t az inittab -ba.
Szerintem ez az ssh logint nem érinti.
Az áramkimaradással kapcsolatos probléma - most nem tudom megnézni mit tettek fel a raspbianban de a Wheezyben ott van az aufs csomag. Ezzel a csomaggal, készíthetsz a RAM -ben olyan területeket amiket rá tudsz mappelni pl. a /var könyvtárra - indulás után ha erre a területre írnak, akkor az a RAM -ba íródik, így ha elvész akkor elvész :) Nagyon flexibilis és még mindig nem teljesen értem a konfigurációs logikáját, de mintha a live CD distrók is ezt használnák - ott, alapból, csak a RAM van tárolásra.
A /tmp könyvtár, ha jól emlékszem eleve a RAM -ba mutat.

* Én egy indián vagyok. Minden indián hazudik.

-------------------------
Szédületes dolog történt.
-------------------------

Laptopról képes voltam besshzni az rpi-be életemben először.

Bevallom, segítségre szorultam, egy debianos barátom routerénél. A Slackware-től természetesen befonta a haját, mivel itt nincs ugyebár /etc/network könyvtár.

Megtudtam, kb, mire való az ipcímtartomány.
Most erre vagyok már képes kognitív folyamataimban:

RPI áramot kap, benne eth0 és wlan0 él. Raspbianra ráraktam a dhcpcd-t, mert az nem volt benne, az iptraf, tcpdump, arp-scan, htop szintén ott van.
Nagygépről wicd-vel vezetékes hálózatot hozok létre a systray-en lévő mikroikonnal (csodálatos elnevezés), majd terminalban ifconfig eth0-val látom, mi is történt.
Ezután már megy az ssh.
Amint ssh sikerült az rpi-re, sudo bash, majd
ifconfig wlan0 up
iwlist scan | grep ESSID
wifi AP kikeres, majd
iwconfig wlan0 essid VALAMI key NETUDDMEG
dhcpcd wlan0

Ezután valami történik, de nem tudom mi, mert nincs prompt, csak enter után. Cél az lenne, hogy az rpi-n keresztül lehessen elérni a wifi hálózatot. Ezzel a kis gyakorlattal talán felfognám az egésznek a lényegét, utána már ismerős jóbarátként nézne rám vissza mindegyik hálózattal foglalkozó könyv.
Eddig csak azt értem el, hogy az alábbi számok jóbarátaim lettek:
192.168
255
0
1

:)

---
--- A gond akkor van, ha látszólag minden működik. ---
---

Ha jól látom, a végén daemon-t indítasz, ami a háttérben fut. Ha ír az stdout-ra vagy stderror-ra, akkor azt már a prompt után teszi, a shelled erről mit sem tud, így aztán nem fog újabb promptot adni.

Próbáld ki ezt, talán világosabbá teszi, mire is gondolok:

set +m; (sleep 1; echo Hello) &

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Az & annyit csinál, hogy háttérben indítja a folyamatot, azaz nem várja meg annak befejeződését a shell, hanem vele párhuzamosan fut tovább. A Linux multitask oprendszer, így ki tudod használni scripten belül, hogy egyszerre több dolgot futtatsz. Ezért volt, hogy a példámban ezt a subshellben futó sleep-et és echo-t elindította, de ő tovább ment, elkészült, így visszajött a prompt, aztán a magára hagyott subshellben futó sleep 1 másodperce letelt, kiírta a Hello-t, de erről az eredeti shell már nem tudott, az ő promptja mögé került a szöveg.

Új promptot adnia meg nem állt módjában, hiszen már adott promptot, egy másik process szemetelt az stdoutra. Az más kérdés, hogy ezt a másik process-t épp ő indította.

Így a végén kell egy enter, ha látni akarod a promptot, mert a soremelés miatt újra kiteszi azt a shell.

Természetesen, ha enter nélkül beírtál volna parancsot, azt is végrehajtja, mert valójában van promtod, csak mögé került a Hello meg egy soremelés.

A dhcp-nél nem lesz &, mert ott a gépi kódban futó programon belül oldják meg a forkolást, tehát azon belül megy háttérbe a program lényegi része, majd visszatér a shellhez az a része, amit indítottál.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE