duminică, 5 decembrie 2010

Cum sa testezi noi distributii fara CD,Memorystick sau VirtualBox in mod real

M-am saturat sa stric cd-uri aiurea doar ca sa vad cum arata noua versiune de linux X si Y...
Din motive care ma depasesc, al meu calculator nu porneste de pe memorystick si ca atare trebuia sa ard cate un blank de fiecare data ca sa-mi satisfac curiozitatea.
Ce m-am gandit eu? Daca tot il am pe nemaipomenitul grub2 instalat si pot face modificari in configurarea meniului, de ce nu as putea sa ii spun sa foloseasca imaginea ISO?
Practic, pot sa-l folosesc pe post de cdrom virtual inainte sa incarc un alt OS.

Dupa indelungi cautari prin documentatia grub2, am gasit solutia:
Aflam numarul partitiei unde avem iso-ul:
sudo fdisk -l
Disk /dev/sda: 160.0 GB, 160041885696 bytes
...
...
...
...
/dev/sda9 2053 8773 53986401 83 Linux
In cazul de fata, am folosit linux mint 10 dvd pe care il am in partitia /dev/sda9 in /public/
Deci avem nevoie de partitia numarul 9 de pe primul harddisk care in termenii grub inseamna (hd0,9)


Editam configuratia grub2:
sudo gedit /etc/grub.d/40_custom

si adaugam:
(Pentru Linux Mint 10)
menuentry "Boot Mint Live ISO" {loopback loop (hd0,9)/public/linuxmint-10-gnome-dvd-i386.iso linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/public/linuxmint-10-gnome-dvd-i386.iso file=(loop)/preseed/mint.seed quiet splash -- initrd (loop)/casper/initrd.lz}
Pentru Ubuntu 10.10:

menuentry "Boot Ubuntu Live ISO" {loopback loop (hd0,9)/public/ubuntu-10.10-desktop-i386.iso linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/public/ubuntu-10.10-desktop-i386.iso file=(loop)/preseed/ubuntu.seed quiet splash -- initrd (loop)/casper/initrd.lz}
updatam grub:
sudo update-grub2
Nu stiu cat de necesar este, dar daca nu booteaza din prima e bine ca ISO-ul sa aiba toate drepturile active sau sa aiba ca owner contul root.


De remarcat faptul ca la loopback loop se foloseste expresia (hd0,9) dar la iso-scan/filename, se acceseaza direct calea.
la file=(loop)/preseed... mint.seed pentru Linux Mint si ubuntu.seed pentru Ubuntu. Daca vreti sa stiti exact, deschideti in prealabil iso-ul cu archive manager, mergeti in /boot/grub/loopback.cfg si in prima sectiune menuentry, gasiti intrarea corecta a distributiei in cauza, sub forma file=/cdrom/preseed/mint.seed

Un dezavantaj mare ar fi faptul ca daca vrem sa instalam linux-ul din iso pe acelasi harddisk fizic nu conteaza in care partitie, nu vom putea, deoarece e montata read-only partitia de pe care am boot-at iso-ul, deci nu putem suprascrie tabela de partitii.
Daca folosim doua harddisk-uri diferite fizic, atunci o sa mearga.
In schimb metoda e mai rentabila din punctul de vedere al performantelor de rulare si e "pe bune". E ca si cum ai rula de pe CD Live dar nu strici blank-uri aiurea. :)


Share this on: Share On Facebook ! Add To Del.icio.us ! Share On Digg ! Share On StumbleUpon ! Blog Feed !

joi, 2 decembrie 2010

Facebook notifications pe desktop

Din seria jucarele pentru conky, inca un script util maniacilor.
De data asta, Facebook Notifications :)
In mod normal, conky stie RSS, insa pentru facebook e necesara o oarecare formatare, altfel se umple ecranul inutil.

Ce avem de facut?
Fiecare cont de facebook are asociat un ID, cu ajutorul caruia putem prelua datele.
Ca sa obtinem ID-ul, mergem in cont, la http://www.facebook.com/notifications.php si copiem link-ul catre "Via RSS" ca in imagini si inlocuim in script REPLACE_WITH_URL

Bun. Deschidem gedit si dam copy/paste asta:

#!/bin/bash
numarlinii=5
address="REPLACE_WITH_URL"
wget --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.55 Safari/533.4" -q $address -O /tmp/fbrss
cat /tmp/fbrss | awk '{
gsub(/.*<description>|<\/description>.*/,"")
print }' | grep "<title>" | cut -d"<" -f2 | cut -d">" -f2 | awk '{
gsub(/&apos;s/, "");

gsub(/commented on/, ">");
gsub(/also/, "");
gsub(/your friend request/, "friendship");
gsub(/posted something on/, "-->");
gsub(/posted on/, "-->");
print }' | awk '{
if ($0 in stored_lines)
x=1
else
print

stored_lines[$0]=1
}'| tail -n +2 | head -n $numarlinii
rm -f /tmp/fbrss*
Unde numarlinii reprezinta cate notificari vrem sa se afiseze.
Salvam ca ~/bin/facebook si ii dam drepturi de executie cu chmod +x ~/bin/facebook

Deschidem .conkyrc adaugam si salvam:
${if_existing /proc/net/route eth0}${font Ubuntu:size=8}${color4}Facebook Notifications: ${color}
$stippled_hr
${voffset -2}${font Ubuntu:size=7}${color1}${execi 60 ~/bin/facebook}${color white}
${endif}


Share this on: Share On Facebook ! Add To Del.icio.us ! Share On Digg ! Share On StumbleUpon ! Blog Feed !

Cum sa fii anuntat pe desktop cand apar serialele preferate pe EZTV

Ca multi altii, urmaresc seriale tv de pe torente si cel mai bun site la ora actuala pentru asa ceva este EZTV.
La ei apare la 7-8 ore dupa ce a fost difuzat pe posturile tv de afara si il poti downloada.
Chestia e ca ma enerveaza sa ma uit mereu pe site sa caut daca a mai aparut ceva intre timp, ca atare, mi-am facut un scriptulet in BASH pentru conky (jucaria aia tare care sta pe desktop si monitorizeaza tot felul de chestii)

Ideea era sa am un folder pe care il specific in setarile Transmission sa downloadeze automat cand il deschid, insa pana atunci sa imi sara in ochi cand apare serialul si sa am si fisierele sursa torrent downloadate deja in acel folder din home.
Adica mai pe romaneste, sa nu mai stau toata ziua calare pe site-ul lor.

Bun, avem cateva variabile pe care trebuie sa le schimbam in script in functie de preferinte:
shows - contine lista de cuvinte cheie dupa care scriptul selecteaza doar serialele pe care le vrem, separate de pauze si cu litere mici. Exemplu: daca vreau Dexter, voi scrie dexter
standard_resolution - variabila specifica daca sa renunte la torentele in versiune 720p sau nu si poate avea valorile yes sau no
location - numele folderului in care vom tine fisierele torent sursa si pe care scriptul are grija sa il creeze singur. Logic, e in home.

De asemeni scriptul creaza un fisier ascuns .tordwn cu ajutorul caruia stie ce a fost deja downloadat ca sa nu-l mai ceara inca o data.Practic, e ca un fel de history.

Ce avem de facut? Deschidem un gedit, si dam copy/paste scriptul ce urmeaza:
#!/bin/bash



#Environment Setup
shows="eureka vampire nikita stargate being caprica sanctuary merlin fringe" # the lowercase show keynames
standard_resolution="yes" # set to "yes" to filter out 720p versions and "no" to get them all

location="eztvtorrents" #this is the name of the personal folder where you get the torrent files



#Checking some things
if [ ! -f ~/.tordwn ] ; then
echo "" > ~/.tordwn
fi
if [ ! -d $HOME/$location ] ; then
mkdir $HOME/$location
fi



#Creating list of url's from rss feed
URI=http://www.ezrss.it/feed/
EXEC="/usr/bin/curl -s"
brutrss=$($EXEC $URI | grep enclosure)
match="url"
for k in $brutrss; do
[[ "$k" =~ "${match}" ]] && echo $k | cut -d'"' -f2 >> /tmp/urls_rss

done



#Filtering shows according to variable
for k in $(cat /tmp/urls_rss); do
ftr=$(echo "$k" | awk '{
gsub(/\./, " ");

print tolower($0)}')
for m in $shows; do
[[ "$ftr" =~ "${m}" ]] && echo $k | cut -d'"' -f2 >> /tmp/fltr_rss

done
done



#Checking if is already downloaded and if not, downloading torrent files
mkdir /tmp/torrents
cd /tmp/torrents
for tor in $(cat /tmp/fltr_rss); do
# check if it's already downloaded

existent="nope"

for alreadydown in $(cat ~/.tordwn); do
if [ "$alreadydown" = "$tor" ] ; then

existent="yep"
fi
done
if [ "$existent" = "nope" ] ; then

wget -q $tor
echo $tor >> ~/.tordwn
fi
done



#Removing 720p versions if $standard_resolution is set to "yes"
if [ "$standard_resolution" = "yes" ] ; then
match="720p"
for k in $( ls /tmp/torrents ); do
[[ "$k" =~ "${match}" ]] && rm -f /tmp/torrents/$k
done
fi



#Copy to personal folder and cleanup temp
if [ -d "/tmp/torrents" ] ; then
for trm in $(ls /tmp/torrents); do
cp /tmp/torrents/$trm $HOME/$location/
done
fi
rm -Rf /tmp/torrents
rm -f /tmp/fltr_rss
rm -f /tmp/urls_rss



#Displaying final list of torrents
for name in $( ls $HOME/$location ); do
echo $name
done
Salvam ca ~/bin/rssget si-i dam drepturi de executie cu un chmod +x ~/bin/rssget sau cu nautilus daca nu suportati terminalul.
Ca sa il execute conky, adaugam in .conkyrc tot cu gedit, liniile urmatoare:
${if_existing /proc/net/route eth0}${font Ubuntu:size=8}${color4}TV torrents to download: ${color}
$stippled_hr
${voffset -2}${font Ubuntu:size=7}${color1}${execi 60 ~/bin/rssget}${color white}
${endif}

Si asta a fost. Acum suntem anuntati imediat ca avem ce downloada si vedea :)

Share this on: Share On Facebook ! Add To Del.icio.us ! Share On Digg ! Share On StumbleUpon ! Blog Feed !