Aquaris E4.5 Ubuntu telefon, mint számítógép

Kéne egy topic, amiben meg lehet beszélni, hogyan használható az ubuntus teló számítógépként. Ezen azt értem, hogy be-ssh-zok rá, és ott mindenfélét futtatok. Vagy a teló termináljában mindenfélét futtatok. Hogy mi értelme van ennek? Semmi, azon kívül, hogy programozóként imádok mindenféle kütyükön mindenféle programot futtatni. Különösen a saját programjaimat. A telefonon pl. futnak a CCC programok. Amúgy telefonként elég jól működik a készülék, ez a terület különösebben nem érdekel.

Hozzászólások

Hogyan lehet az Ubuntu Phone telóra be-ssh-zni: Itt több módszert is leírnak. Én a következőt csináltam:

1) Installáltam a terminált az Ubuntu áruházból.

2) A telón eleve van ssh szerver, csak be kell állítani, hogy mindig fusson. A terminálban:


  sudo setprop persist.service.ssh true

3) Egy webszerverről wget-tel (eleve van a telón wget) elhoztam a nyilvános rsa kulcsomat (id_rsa.pub) és beraktam a telón a /home/phablet/.ssh/authorized_keys fájlba. A jogosultságokat szigorúra kell állítani:


  chmod 700 .ssh
  chmod 600 authorized_keys

A wifi router táblázatából vagy az ifconfigból ki lehet nézni a teló IP címét, és az


  ssh -l phablet@IP

paranccsal be lehet ssh-zni.

Ha valahová be tudunk ssh-zni, ott működik az sshfs, azaz lehet wifin keresztül le-föl másolni a fájljainkat a telóra, lehet a teló fájlrendszerét böngészni a desktopon futó mc-vel:


  sshfs phablet@IP:/  /path/to/mountpoint

Nincs szükség a béna MTP-re, USB kábelre.

--
ulysses.co.hu

A telón futnak a raspin fordított programok, egyszerűen csak át kell másolni a fájlokat. Persze nem mindegy, hogy hova, ui. a teló fájlrendszerének nagy része readonly. Ezért a raspin elhoztam az mc forrását (apt-get source mc), és lefordítottam olyan konfigurációval (configure --prefix=/home/mc), hogy a /home/mc alá installálódjon. Ezt összecsomagoltam, átvittem a telóra, ott a /home alatt kicsomagoltam, /home/mc/bin-t betettem a PATH-ba.

Ezután a desktop gépemről a telóba be-ssh-zva elindul az mc. Furcsa módon viszont a teló termináljából nem indul el, mint ahogy semmilyen bash script sem indul el. Enne kijavításával foglalkozik a következő post.

Ha valakinek kell, elhozhatja a csomagot innen.

--
ulysses.co.hu

Az ubuntu phone terminálját az apparmor (tévesen) lekorlátozza, emiatt a terminálban nem indul el az mc (permission denied), továbbá nem indul el semmilyen bash script (bad interpreter, permission denied).

If you look at the dmesg output after trying to run a binary you should see something like this:


[140792.471956] type=1400 audit(1431182253.050:175): apparmor="DENIED" operation="exec" profile="com.ubuntu.terminal_terminal_0.7.70" name="/home/phablet/apps/git/usr/bin/git" pid=28134 comm="bash" requested_mask="x" denied_mask="x" fsuid=32011 ouid=32011

A /var/lib/apparmor/profiles/click_com.ubuntu.terminal_terminal_0.7.70 fájlban az alábbi sorokat:


# autopilot runs things in out of ~/autopilot/fakeenv, so lets allow running
# things pretty much everywhere but avoid exec conflicts with the autopilot
# include file which has this rule:
# owner @{HOMEDIRS}/autopilot/fakeenv/*/.local/share/@{APP_PKGNAME}/** mrwklix,
/[^h]** pix,
/[^h][^o][^m][^e]** pix,
@{HOMEDIRS}/*/autopilot/[^f][^a][^k][^e]*/** pix,

ki kell cserélni erre:


/** pix,

Utána:


sudo service apparmor restart

--
ulysses.co.hu

Mire lehet használni az USB-t a töltésen kívül.
a) Tud-e a teló kezelni pl. egy pendrive-ot?
b) Tud-e a teló ethernet over USB-t?

Bemountol-e a teló automatikusan egy ext4-re formázott sd kártyát.
(Majd kipróbálom, ha lesz kéznél egy üres kártyám.)

--
ulysses.co.hu

Szerk.

A várt módon lehet mountolni pendrive-okat. Egyes esetekben a bedugott pendrive automatikusan mountolódik. Pl. a saját maga által formázott sd kártyát usb adapteren keresztül is automatikusan mountolja. Ilyenkor a tartalmakat is keresi rajta. Más esetekben kézzel kell mountolni. Nem világos, mi a feltétele az automatikus mountolásnak.

Lehet ext4-re formázott külső sd kártyát használni. A teló maga csak vfat-ra formáz, tehát másik gépen kell megcsinálni a formázást. Az ext4-es sd kártya nem mountolódik automatikusan. Mivel az fstab tmpfs-en van, az rc.local readonly fs-en van, ezért eddig nem találtam jobbat, mint a .bashrc-ből mountolni.

Van a telón egy Linux konténer:


phablet@ubuntu-phablet:~$ sudo lxc-ls --fancy
NAME     STATE    IPV4           IPV6  GROUPS  AUTOSTART  
--------------------------------------------------------
android  RUNNING  192.168.1.243  -     -       NO         
phablet@ubuntu-phablet:~$ 

--
ulysses.co.hu

A rendszer írhatóvá varázsolható ezzel a paranccsal:

phablet-config -s ${SERIALNUMBER} writable-image -r ${PASSWORD}

Ahol a SERIALNUMBER-t az

adb devices -l

árulja el a PASSWORD pedig az a lock code amit be kell állítanod a Developer mode engedélyezéséhez, hogy legyen adb kapcsolatod USB-on keresztül.

De van még pár vicces hack :) A kedvencem a lock screen unlockolása parancssorbók (vagy adb-n vagy ssh-n)

gdbus call --session --dest com.canonical.UnityGreeter --object-path / --method com.canonical.UnityGreeter.HideGreeter

Meg a vegen kedvet csinalsz a telefonhoz...

Egyebkent miert nem vartal meg egy komolyabb (1+1 szeru) telefon megjeleneset?

---
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

Itt egy Raspi-2-n fordított webszerver: websrv.exe.gz. Mire jó? Például, ha van a telón egy anyag, amit át akarok adni valaki másnak, csak elindítom a terminálban a webszervert:


  websrv.exe

és a wifin keresztül böngészhető a teló.


  http://ipcim:8080

--

ulysses.co.hu

Terminál probléma: Ha a terminál alulra kerül, kilövi a benne futó programokat. Például van egy ssh sessionom, amit nehezen hoztam össze, mert több gépen kellett átvergődnöm, jelszavakat begépelnem, stb. Ekkor jön egy telefonhívás, a terminál alulra kerül, mire újra előveszem, a session megszűnt. Talált-e erre valaki megoldást?
--
ulysses.co.hu

Ha mobilnet, akkor valszeg nem azért szakadt meg, mert a terminál "alulra került", hanem azért, mert telefonhíváskor a készülék eldobta a netet, majd amikor letetted akkor újra csatlakozott. Ha wifi-n vagy akkor elvileg nem kellene eldobnia, gyakorlatilag meg fene tudja.

De mindegy, a lényeg az, hogy ilyen esetben egy "megbízható" gépen nyiss egy screen-t (vagy tmux) és onnan kalandozz tovább. Így ha megszakad akkor elég ehhez a géphez újra csatlakozni és a kapcsolat(ok) továbbra is megmaradnak (persze keepalive és hasonló dolgokkat is célszerű eljátszani).

Rájöttem, hogy nem kilövi, hanem háttérbe rakja a programokat. Lehet, hogy gáz, de húsz év Linuxozás után teljesen leszoktam a job-controlról. Nincs sok értelme, mert általában a desktopom tele van xterm-ekkel, azok között akkor is könnyen eltéved az ember, ha nem futnak háttérben programok. Ha nincs X akkor is van egy csomó konzol. A programokat általában vissza lehet szerezni az fg paranccsal, de nem minden program viseli el a háttérbe rakást.

Elkezdtem nyomozni, hogyan lehet kiiktatni a job-controlt. Elsőre megoldásnak tűnt a 'set +m', de ennek az a baja, hogy az aktuális scriptre lokális, ezért a .bashrc lefutása után elveszti a hatását. Elvileg ugyanez volna a 'set +o monitor', ez megmarad a .bashrc befejeződése után is, de valahogy ebben a formában nem iktatja ki a job-controlt. Az 'stty susp undef' hatástalanítja a CTRL-Z-t, de magát a job-controlt nem. Szóval nem könnyű eset.

Maradt egy durva megoldás: Fordítottam egy bash-t --disable-job-control opcióval (bashx néven), és beírtam ezeket a a .bashrc-be:


#bashx bash job-control nelkul
BASHX=/home/phablet/bin/bashx
if [ "$0" != "$BASHX" ];then
    if test -x $BASHX ; then
        echo bashx
        exec $BASHX
    fi
fi
#hatastalanitja a CTRL-Z-t
stty susp undef

Vigyázni kell, ne legyen végtelen ciklus.
--
ulysses.co.hu

"telefonhíváskor a készülék eldobta a netet"

Ha azonos sim-en telefonálsz, mint netezel, akkor megmarad a netkapcsolat is. (Lumia 730-on pl így van)
Ha dualsim, és egyiken net, a másikon telefon... egyszerre nem fog menni, vagy legalábbis olyan készülék kell hozzá. (dual active? valami ilyesmi a neve)

Nalam (1+1) ha megosztom a netet (hotspot), akkor ha telefonalok, konkretan nincs net. A hotspot nem szakad meg, csak eppen nem jon be semmi, scp atvitel leesik, ssh bedoglik, rdesktop ki is fagy. Telefonbeszelgetes utan helyreall a rend bar az rdesktop tipikusan kifagy, az ssh magahoz szokott terni bar a telefonbeszelgetes hosszatol is fugg.

Egy simkartya. Szoval nem termeszetes.

---
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

Igen, dual active. Ezekben két rádiós egység van, ezért párhuzamosan működik mindkét sim hálózata. Hátránya, hogy így gyorsabban merül az aksi.
Van még:
A dual passive, a legalapabb. Nokia szerette nagyon. Egy időben csak az egyik sim működik benne.

Dual standby. Mindkét sim egyszerre a hálózaton van. Hívás alatt a másik sim le van kapcsolva. MTK chipes mobilok ilyenek például.

Illetve van még olyan dual sik kártyás mobil, ami egyik kártyahelyen csak 2G(GSM) kapcsolatot biztosít, még a másokon 3G/4G.

Másik furcsaság: Ha a terminálban CTRL-D-t nyomok, arra a terminál kilép. Sok program használja kilépésre a CTRL-D-t, csak éppen nem a terminálok. Pl. ha xtermben interaktívan pythont futtatok, az is kilép CTRL-D-re, de nem az xterm. Ez vajon szándékos?
--
ulysses.co.hu

Igen, szándékos. UNIXok (fixme) és Linuxok esetén a Ctrl+D szolgal az EOF jelzesere. Ha a terminalban megnyomod, azzal a terminal standard inputjanak a veget jelzed.

MS-DOS és Windows esetén ez a Ctrl+Z. A copy con filenev.txt esetén használható a fájl vége jelzésére. A shellt (command.com, vagy cmd.exe) nem zárja be.

Most emiatt kipróbáltam Sailfishen Fingertermben a CTRL+D-t. Itt is kilép. Engem eddig egyáltalán nem zavart. Észre sem vettem. Ok, itt a billentyűzet teljesen más mint a rendszeré, kényelmesebb vele terminálparancsokat írni.

☆☼♫♪♫♪☼☆
AGA@
Fork portal és az egyik logóm :)

Közben megokosodtam a témában, ezek között érdemes keresgélni:


stty susp undef    #CTRL-Z-t hatastalanitja
stty eof  undef    #CTRL-D-t hatastalanitana, de nem mukodik
set -o ignoreeof   #CTRL-D-re bash nem lep ki (de a python kilep)
echo $SHELLOPTS

A bash job control letiltása, csak újraforditással megy, ahogy írtam.
--
ulysses.co.hu

Ne csak panaszkodás legyen: Az milyen fasza, ahogy a telón futó ncmpc-vel vezérlem a headless raspin futó mpd szervert, amiről a zenét hallgatom. (Az ncmpc esetében pont nem érdekes, ha kilövődik.)
--
ulysses.co.hu

Élménybeszámolót nem írok, mert arra itt van ez a topic, de felteszek néhány screenshotot.

  • Egy paneles fájlkezelő
    Saját program, amit Clipperben (CCC) írtam. Az mc-hez hasonló funkciókkal rendelkezik, de csak egy panelt használ. Az egy panel elfér a kis képernyőn, a program megkönnyíti a conf fájlok editálását. Az mc is fut, de gondolom azt mindenki ismeri.
  • Mutt
    Mutt-tal levelezek. Úgy van konfigurálva, hogy ssmtp-vel küldi a leveleket.
  • ncmpc
    Ez itt az mpd zenelejátszó szerver (ncurses-es) klienese. Az ncmpc maga nem zenél, hanem csak mutatja az mpd szerver állapotát. Vagyis prímán használható a lejátszó távirányítására.
  • htop
    Így néz ki a htop a telón.

A teló readonly mountolását nem oldottam fel. A fenti programokat raspin fordítom, installálom a /home/local-ba, és átmásolom a telóra.

--
ulysses.co.hu

teged fel kellene karolni az ubuntunal, hogy te legyel az egyik celkozonsege az ubuntu phone-nak.
Gondolom mar most vannak a nagymamak, a hipsterek, kellene mar egy programozo/kocka vonulat is.

---
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....