Kaip idiegti kernel atnaujinima arba irasyti programa

N
  • 19 Rugs '16

Laba diena, nuo pradziu. Turiu uzrakinta SD kortele su zinomu CID ir password. Nei ubuntu nei windows jos nemato. "Bazinis" linux, kaip suprantu, to padaryti negali ir prierase radau kad reikia patched kernel arba patched mmc driver. Radau patch'a skirta atrakinimui. Pvz. https://patchwork.kernel.org/patch/6441021/ kaip ji idiegti? arba programa zip formatu. Readme file parasyta jog, failas x be jokiu .run ar t.t instaliuos ir sukonfiguruos viska, bet kaip ji paleisti? Aciu.

T
Techtronic
Mindaugas N.
  • 19 Rugs '16

https://patchwork.kernel.org/patch/6441021/ kaip ji idiegti?

Complicated.

Pirma reikia tam tureti Linux source, tada patch'inti Linux. Bet ties cia atsiranda problemu, tarkim source Linux kuri gausi bus modifikacija Ubuntu, todel patch'as kuri noresi panaudoti nebutinai gali tikti, o ir jeigu per prievarta Linux nupatchinsi gali tureti liudnu pasekmiu. Bet tai nera sudetingiausia, po patch'o reikes sukompiliuoti Linux kas gali tapti tikru nightmare :-)

Jeigu tai negazdina - https://help.ubuntu.com/community/Kernel/Compile arba https://wiki.ubuntu.com/KernelTeam/GitKernelBuild

Kad butu paprasciau, gali panaudoti esama konfiguracija kuria rasi /boot/config-* arba /proc/config.gz. Nepamirsk tik tai, kad patch'inti reikes gavus source, dar pries kompiliuojant (komandos make *). Patchinasi su komanda patch, tarkim patch < 6441021.diff.

arba programa zip formatu. Readme file parasyta jog, failas x be jokiu .run ar t.t instaliuos ir sukonfiguruos viska, bet kaip ji paleisti? Aciu.

Priklauso nuo to kas ten per failas, jeigu ten zip archyvas kuriame shell skriptai (kas dazniausiai ir buna iskaitant kad .run yra tas pats shell skriptas) tai paprasciausiai:

cd /home/petras/Desktop
unzip archyvas.zip
cd archyvas
chmod +x skriptas.bin
./skriptas.bin

Patikrinti failus gali su komanda ls -al Tai tik pavyzdys kaip kas daroma, plestis labai i Linux surinkima ar kiekvienos programos diegimo buda nenoriu, tam reikia parasyti visa knyga ir marios laiko. Klausk jeigu kas nesigauna.

T
Techtronic
Mindaugas N.
  • 19 Rugs '16

O ar tikrai naujasis Linux nepalaiko tokiu funkciju? Pamegink parasyti komanda dmesg -w terminale ir kelis kartus paspaudes Enter klavisa pajungite laikmena. Terminale bus matoma kas nutinka pajungus "nepalaikoma" laikmena, nukopijuokite visa ta teksta is terminalo i http://p.defau.lt/new.html ir perkelkit gauta nuoroda cia.

N
  • 19 Rugs '16

gauti rezultatai https://p.defau.lt/?B_9hbJL1G2CmDPKYIinuZw
o prirakinau as ja naudodamas mmc programa/draiveri?. MMC readme faile parasyta it's not possible to unlock it with normal MMC
driver, you need a patched version of kernel to be able to unlock it. Pacioje programoje help'e raso reikia patched MMC driver. Na kaip jau pasiukstinejau, tas zip'as kuri radau, turi makefile'a. Naudodamasis auksciau minetomis f-jomis, bandau instaliuoti ta zip'a ir paleidus makefile'a
sudo make, gaunu make: Nothing to be done for 'all', jei sudo make install https://p.defau.lt/?_vjLZSGbsQz6WbNkjx8FGg
Makefile'as - https://p.defau.lt/?UKaIbdWEUyxL1gn4lYJEQw

T
Techtronic
Mindaugas N.
  • 20 Rugs '16

Panasu kad Linux mato nauja devaisa, bet negali bendrauti su juo, klaida:

[ 1362.186512] mmc0: error -110 whilst initialising SD card

Kuri reiskia ETIMEDOUT (connection timed out). Klaida nurodoma faile https://github.com/torvalds/linux/blob/master/drivers/mmc/core/sd.c#L1277 ir ji gali reiksti kad devaisas yra sugadintas. Tavo rasta programa https://github.com/alcooper/mmc-password-utils neveiks be patched kernelio https://github.com/alcooper/mmc-password-utils/issues/1

As susisiekiau su autoriumi patcho, paprasiau kad jis atsiustu patch'a man pastu naujausia.

N
  • 22 Rugs '16

Aciu Mindaugai uz pagalba, tesinys. Google pagalba susikompilinau kerneli su patchais. Dariau tai 3 kart, kol pavyko. Rezultatas: kortele vis dar uzrakinta, taciau jau atsiranda sys/bus/mmc bloke ir rodo device list. Dabar arba as nemoku instaliuoti https://github.com/alcooper/mmc-password-utils sitos programos arba vistiek kazkas negerai. Pagal readme file'a doing an echo to "/sys/bus/mmc/devices/mmc0/unlock_retry, gaunu ./mmc-unlock-retry: line 10: /sys/bus/mmc/devices/mmc/unlock_retry: No such file or directory

T
Techtronic
Mindaugas N.
  • 1
  • 22 Rugs '16

Autorius dingo, patch'as kuris turejo pasiekti Linux irgi pasimete mailinglistuose, nors buvo sutarta kad jis pasieks nauja Linux.

Diegimas mmc-password-utils yra ganetinai paprastas, aisku su salyga kad Linux yra patchintas:

cd /tmp
git clone https://github.com/alcooper/mmc-password-utils.git
cd mmc-password-utils
sudo mkdir -p /etc/{mmc-setpw,request-key.d}
sudo cp mmc-password.db /etc/mmc-password.db
sudo cp mmc.conf /etc/request-key.d/mmc.conf
sudo cp mmc-setpw /etc/mmc-setpw
sudo chmod +x /etc/mmc-setpw
sudo chmod 600 /etc/mmc-password.db
sudo chmod 644 /etc/request-key.d/mmc.conf

Kad veiktu mmc-setpw programa reikia instaliuoti keyutils

sudo apt-get install keyutils

Toliau reikia suzinoti koerteles CID, cat /sys/bus/mmc/devices/mmc0*/cid turetu tam padeti
Toliau atveri faila /etc/mmc-password.db (gali atverti faila su nano /etc/mmc-password.db komanda) ir suvesti ten CID ir password'a. Tarkim rastas CID yra 1effff4d4d4320202010000000b64e00 o password 'Test' tai failas /etc/mmc-password.db bus:

#CID                                    Password
#===============================        ===============
035344535536344780f046ae9300cc00    password
1effff4d4d4320202010000000b64e00    Test

Dabar pajungus storage patchint'as Linux turi automatiskai atrakinti kortele pagal CID/password. Jeigu viskas suveike taip kaip turetu, matysi fdisk -l nauja devaisa kuri gali mount/umount (R/W failus). Taip pat keleta nauju komandu sysfs:

  • setpw - Set the SD/MMC devices password. The next time the device is power cycled it will come up locked.
  • clrpw - Clear the SD/MMC devices password. This only works on unlocked password protected devices.
  • lock - Lock the SD/MMC device. The device must already have a password set.
  • unlock - Unlock the SD/MMC device. The device must already have a password set.
  • erase - Erase the entire devices contents and then clear the password. Only works on a locked device.

Komandos naudojamos tokiu budu:

echo "unlock" > /sys/bus/mmcdevices/mmc0*/lock

NOTE: Komandose naudojau '*' kuris reiskia kad gali buti bet koks skaicius ar raide.
NOTE: Pasak autoriaus, toks patchas gali buti problematiskas bootinant, tad nepamirsk stebeti dmesg komanda arba dar geriau - pasalinus password/atrakinus kortele instaliuoti Ubuntu svaru.

N
  • 22 Rugs '16

Vistiek kazkas negerai, arba kazka negerai darau. O cia, kur tu nurodei nuoroda parsisiusti su git clone, cia pirma ar antra versija? Nes radau dvi?
Bandant atrakinti gaunu stai ka:
root@povilas-ThinkPad-X220:~# echo "unlock" > /sys/bus/mmc/devices/mmc0/unlock_retry
bash: /sys/bus/mmc/devices/mmc0
/unlock_retry: No such file or directory
root@povilas-ThinkPad-X220:~# echo "unlock" > /sys/bus/mmc/devices/mmc0:0001/unlock_retry
bash: /sys/bus/mmc/devices/mmc0:0001/unlock_retry: Permission denied
root@povilas-ThinkPad-X220:~#

N
  • 22 Rugs '16

Kad ir ka bedarant, vis permision denied. As kaip suprantu, idejus kortele sistema bando atrakinti, tik del neaiskiu priezasciu neatrakina.

T
Techtronic
Mindaugas N.
  • 3
  • 22 Rugs '16

O cia, kur tu nurodei nuoroda parsisiusti su git clone, cia pirma ar antra versija? Nes radau dvi?

Nieko nezinau apie pirma/antra versijas. Ten paprasciausiai naudojamas shell skriptas, tarkim mmc-setpw:

#!/bin/sh
PW=`grep $2 /etc/mmc-password.db | awk '{ print $2 }'`
/bin/keyctl instantiate $1 $PW @s

Skriptas gaves argumentus (CID yra raktas pagal kuri suranda passwd) pasiima is failo /etc/mmc-password.db slaptazodi ir paleidzia keyctl instantiate $1 $PW @s komanda. $1 yra pirmas argumentas kuriame yra key. $PW tai kintamasis i kuri isaugotas slaptazodis, na o likes @s (arba -3) yra nurodomas kad session keyring.

Sekantis skriptas yra mmc-unlock-retry

if [ -e /bin/keyctl ]; then
    keyctl purge mmc
    for retry in /sys/bus/mmc/devices/mmc*/unlock_retry; do
    echo 1 >$retry
    done
fi

Paleidzia komanda keyctl purge mmc ir tada surades visus katalogus kuriuose yra failas unlock_retry siuncia i ji komanda 1

Vistiek kazkas negerai, arba kazka negerai darau.

Kodel naudojamas unlock_retry ? Pamegink siusti komanda i /lock faila, arba siusk i ji komanda 1, tarkim echo 1 > /sys/bus/mmc/devices/mmc0:0001/unlock_retry

N
  • 22 Rugs '16

naudojau unlock_retry is readme failo, o the block device will fail. Once the filesystem containing the password information is available, doing an echo to "/sys/bus/mmc/devices/mmc0*/unlock_retry" will cause the driver to retry the unlock operation and if successful to bring the device up fully, including all it's partitions. The best way to handle this issue is to run the included mmc-password-retry rc file during boot after sysfs and the required filesystem are available.

Antra versija istraukiau is https://github.com/alcooper/mmc-password-utils/releases, V1.2, ir cia kaip supratau yra kazkokiu tai pakeitimu, nes paleidus sudo make install gaunu pirmas dvi eilutes tokias:
grep: /etc/rpm/macros.dist: No such file or directory
grep: keyutils.spec: No such file or directory
Bandysiu toliau :)

N
  • 1
  • 22 Rugs '16

Kad ir kur siusciau ar lock ar unlock retry vistiek gaunu permision denied. Ir zvaigzdute prie mmc0, tai cia programa supranta, kad tai bet koks skaicius gali buti, ar cia tiesiog turi rasyti savo mmc0:0001 pvz?

T
Techtronic
Mindaugas N.
  • 1
  • 22 Rugs '16

Paprastai permision denied. rasomas tada kai tam nera teisiu, pamegink pirma parasyti sudo su komanda, taip gausi root teises. Parases komanda id suzinosi kokias teises turi, jeigu viskas gerai matysi kazka panasaus: uid=0(root) gid=0(root), jeigu taip ir yra bet vistiek gauni permision denied klaida tai problema kazkur kitur...

N
  • 1
  • 22 Rugs '16

Parases ID gaunu, ta pati, ka esi parases. Jau baigiasi mintys, kas cia ne taip, o kas yra
grep: /etc/rpm/macros.dist: No such file or directory
grep: keyutils.spec: No such file or directory

macros dist ir keyutils? Google labai daug skirtingu variantu meta.

T
Techtronic
Mindaugas N.
  • 22 Rugs '16

Greiciausiai patchas netinka, o gal jis niekad ir neveike... Man tai keista kad Linux to dar nepalaiko, idomu kokia priezastis nepalaikyti tokiu funkciju.

P.S Patchas ten yra ne vienas failas, tai yra viena is priezasciu kodel meginau susisiekti su autoriumi.

T
Techtronic
Mindaugas N.
  • 22 Rugs '16

@nerajokioskirtumo said:
Parases ID gaunu, ta pati, ka esi parases. Jau baigiasi mintys, kas cia ne taip, o kas yra
grep: /etc/rpm/macros.dist: No such file or directory
grep: keyutils.spec: No such file or directory

macros dist ir keyutils? Google labai daug skirtingu variantu meta.

Cia klaida tame kad sistema negali sukurti rpm paketo (kas yra normalu nes naudoji ne rpm GNU/Linux distra), gali ignoruoti arba dar geriau naudok ta MakeFile kuri nurodziau as naudodamas git komanda.

N
  • 2
  • 22 Rugs '16

Tai as pora kart ir dariau kerneli su vienu ar kitu patchu, poto tik supratau, kad reikia visu patchu, tai paskutini karta surasiau visus patchus ir tada pradejo rodyti kortele. Katik pabandziau su kita kortele, tas pats. Siaip bandziau klausti zmogaus, kuris man tai parode, kaip uzrakinti/pakeisti cid,bet jis aisku parase kaip ir anksciau, reikia mokytis ir t.t, bet kazka uzsimine apie password. As pastebejau, kad cid baigiasi 00, negali tai buti susije? Ta prasme kazkur lyg googleje skaiciau, jog kopijuojant ar rasant is 16 ar 32 bit tiksliai nepamenu, reikia prideti du 0 arba galbut atimti? O tavo linkai yra tiesiog su paciu kodu/tekstu? Kaip tai instaliuoti? Nes as siunciausi patch kiekviena. Pabandyciau sukompiliuoti dar viena kerneli, galbut kazka pamirsau. Maciau paskutiniame variante 8/8, komentare zmogus turejo tokia pat problema, bet kaip suprantu, tas paskutinis patch'as turejo "isgelbeti".