tiistai, 28. elokuuta 2012

Päiväni terminaalin parissa: Irssin kääntäminen Red Hatille CentOS:illa

Alla oleva raportti on tehty 28.8.2012 ja se liittyy Tero Karvisen Linux-kurssiin (Työasemat ja tietoverkot). Tehtävän tavoitteena oli tutustua terminaali(emulaattori)in ja raportoida tutustumisesta. Käytin terminaalia pitkin päivää muun muassa irkkaamisen merkeissä, mutta raportoin osan toiminnasta.

Raportin fokuksessa on paasiallisesti itseni ja Ilkka Jylhän yhteinen pakkomielle kääntää irssi koulun palvelimelle kotihakemistoihimme hyrräämään, vaikka weechatin olemme sinne jo kääntäneet. Yritys epäonnistui, joten don't try this at home.

Perus-irkkausta

Klo 15.50 kävin tarkistamassa luokkamme IRC-kanavan (#tn1pe-2012s) weechatillä käyttäen ssh:ta ja screeniä.
ssh a1202425@myy.haaga-helia.fi
screen -r

Irssin kääntöympäristö ja kohdejärjestelmä 

Käytän weechattiä, koska en ole toistaiseksi saanut irssiä käännettyä koulun palvelimella olevalle käyttäjälleni. Niinpä päätin ottaa härkää sarvista ja kääntää irssin lähdekoodista käyttäen toista järjestelmää. Valitsin käyttöjärjestelmäksi Red Hatiä läheistä sukua olevan CentOS:n, sillä koulun palvelin käyttää Red Hatiä. Näin maksimoin binäärin mahdollisuudet toimia kohdejärjestelmässä.

Aloitin asentamalla VirtualBoxin miniläppäriini koulullamme.
sudo apt-get install virtualbox && virtualbox
Käynnistin VirtualBoxissa CentOS:in LiveDVD:n. Järjestelmä kääntyi tahmaisesti. Aloin kääntää GCC:tä noin klo 15.55.
yum install gcc
Kone kuitenkin jäätyi täysin ja lähdin kotiin kääntämään GCC:tä, irssiä ja muita paketteja kotona olevan iMacin VirtualBoxilla. Kotona jatkoin projektia noin klo 19.30. En jaksanut ladata DVD:tä, joten latasin CentOS:in LiveCD:n ja käynnistin sen VirtualBoxissani. Käynnistin sen suosiolla tekstikäyttöliittymään, koska en tehnyt graafisella käyttöliittymällä tässä hommassa mitään.

Irssin kääntäminen CentOS:lla

CentOS käynnistyi nätisti. Asensin CentOS:iin GCC:n, maken ja muutamia muita olennaisia irssin kääntämisen kannalta olennaisia paketteja.
yum install gcc gcc-c++ kernel-devel make
yum install glib2 glib2-devel ncurses-devel
mkdir temp && cd temp
wget http://irssi.org/files/irssi-0.8.15.tar.gz
tar xzvf irssi-0.8.15.tar.gz
cd irssi-0.8.15
./configure --exec-prefix=$HOME --prefix=$HOME
make && make install
Käynnistin irssin kokeillakseni, toimiiko se.
irssi
Se ei toiminut, koska käyttämääni irkkipalvelimeen ei voitu yhdistää roottina. Niinpä loin uuden käyttäjän nimeltä erkkimon ja siirsin irssin binäärin sen kotihakemistoon.
useradd erkkimon -m
passwd erkkimon
mkdir /home/erkkimon/bin && chown erkkimon /home/erkkimon/bin
cp /root/bin/irssi /home/erkkimon/bin

Binäärin siirto kohdejärjestelmään ja binäärin testaus 

Sitten kirjauduin erkkimonille, käynnistin sillä irssin, yhdistin palvelimeen ja kirjauduin ryhmämme irkkikanavalle onnistuneesti. Tein kirjautumisen TTY2:ssa välttääkseni sisäänkirjautumisongelmat rootille, sillä olin liveympäristössä.
su erkkimon
irssi
/connect irc.cs.hut.fi
/join tn1pe-2012s
/exit
Homma toimi. Tämän jälkeen TTY1:ssä roottina ja lähetin irssin käännetyn binäärin SCP:llä myy.haaga-helia.fi -palvelimelle oman käyttäjäni (a1202425) sijaintiin ~/bin.
scp /root/bin/irssi a1202425@myy.haaga-helia.fi:/home8/25/a1202425/bin/irssi
Tämän jälkeen kirjauduin SSH:lla myy.haaga-helia.fi -palvelimelle kokeillakseni, toimiko juuri käännetty binääri myös kohdejärjestelmässä.
ssh a1202425@myy.haaga-helia.fi
irssi
irssi: error while loading shared libraries: requires glibc 2.5 or later dynamic linker 

Epäonnistunut yritys kääntää GLIB irssin binääriin 

Irssi ei toiminut, luultavasti johtuen liian vanhasta GLIB:istä. Niinpä päätin vielä kokeilla kääntää irssin virtuaalikoneella olevalla CentOS:lla käyttäen --enable-static -attribuuttia configure-skriptiä ajettaessa. Tämän jälkeen käänsin lähdekoodin uudelleen binääriksi ja siirsin sen myy.haaga-helia.fi -palvelimelle ylikirjoittaen vanhan binäärin kotihakemistoni bin-hakemistossa.
cd /root/temp/irssi-0.8.15
./configure --exec-prefix=$HOME --prefix=$HOME --enable-static
make && make install
scp /root/bin/irssi a1202425@myy.haaga-helia.fi:/home8/25/a1202425/bin/irssi
Tämäkään ei toiminut. Lopputuloksena oli sama errori kuin aiemminkin.
ssh a1202425@myy.haaga-helia.fi
irssi
irssi: error while loading shared libraries: requires glibc 2.5 or later dynamic linker

Katkerat loppusanat 

Jatkoin googlailua ratkaisun toivossa, kunnes totesin 20.30 että minun on pakko aloittaa erään sivuston sisällönhallintajärjestelmän (Joomla) asennus ja käyttöönotto. Sivuston pystyttäminen tapahtui SSH:n yli, mutta raportointi hidastaa työskentelyä niin rankasti, että tämä saa nyt riittää.

sunnuntai, 26. elokuuta 2012

Avoimia vaihtoehtoja suljetuille ohjelmille + muutaman testaus

Olen käyttänyt yli viisi vuotta ensisijaisesti GNU/Linuxia, joten olen tottunut käyttämään lähinnä avoimia ohjelmistoja. Pöytäkoneena minulla on kuitenkin ollut iMac muutamien vuosien ajan ja siinä olevista ohjelmistoista muutama on suljettuja.

Tein 25.8.2012 Mac OS X:ssä usein käyttämistäni ohjelmistoista ja niiden avoimista vaihtoehdoista listan syntaksilla Ohjelmisto (avoin vaihtoehto). Käytännössä kaikki avoimet ohjelmistot toimivat tai ainakin voidaan saada toimimaan myös GNU/Linuxissa.
  • Adobe Reader (Evince)
  • Artisteer (–)
  • Burn (Brasero)
  • eViihde64 (–)
  • Fetch (FileZilla)
  • Firefox (Firefox)
  • GarageBand (Audacity, Rosegarden)
  • Gimp (Gimp)
  • Google Chrome (Chromium Browser)
  • Handbrake (Handbrake)
  • iMovie (PiTiVi)
  • Keka (File Roller)
  • iTunes (Banshee)
  • Microsoft Office, NeoOffice, OpenOffice.org (Libre Office)
  • Spotify (Spotify)
  • TextWrangler (BlueFish)
  • Transmission (Transmission)
  • Guitar Pro (TuxGuitar)
  • TeXturi (Gedit)
  • VirtualDj (–)
Päätin asentaa järjestelmääni (Ubuntu 10.04) seuraavat kolme ohjelmistoa: Spotify, TuxGuitar ja NanoTorrent. Kerron alla, miten näiden ohjelmien asennus sujui, ja miten ohjelmistot toimivat asennuksen jälkeen. 

TuxGuitar ja Transmission ovat avoimia ohjelmistoja, ja ne löytyivät suoraan Ubuntun paketinhallinnasta ilman ylimääräistä kikkailua, joten asensin ne noin klo 7.10 seuraavalla komennolla:
sudo apt-get install tuxguitar transmission
Lopuksi asensin mielenkiintoisimman ohjelmiston, Spotifyn, josta ei vielä ole stabiilia versiota Linuxille. Spotify ei ole avoin ohjelmisto, mutta se voidaan asentaa mm. Ubuntulle paketinhallinnan kautta. Asensin sen noudattaen Spotifyn virallisia ohjeita. Aloitin lisäämällä Spotifyn pakettilähteen Ubuntun paketinhallintaan noin klo 07.40. Avasin ensin pakettilähteiden listan muokattavaksi.
sudo nano -w /etc/apt/sources.list
 Lisäsin tiedostoon seuraavat rivit:
#Spotify
deb http://repository.spotify.com stable non-free
Varmistin pakettilähteen.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 94558F59
Päivitin pakettilistan ja asensin Spotifyn klo 7.45.
sudo apt-get update && sudo apt-get install spotify-client
Käynnistin Spotifyn.
 spotify
Klientti käynnistyi oikein mukavasti, eikä kirjautumisessakaan ollut ongelmia. Soittolistani näkyivät oikein sikäli kuin ne voivat miniläppärin skriinillä näkyä. Myös musiikki kuului ongelmitta.

tiistai, 21. elokuuta 2012

Uusi Ubuntu miniläpyskääni

Aloitettuani äskettäin IT-tradenomin opinnot innovaattori-linjalla Haaga-Heliassa sain kotitehtäväkseni kokeilla jotain Linuxin liveympäristöä. Tämä oli otollinen tilaisuus päivittää käyttikseni siinä sivussa. Asennus sujui melko ongelmattomasti, mutta jostain syystä buuttaavan USB-tikun luominen onnistui vasta toisella yrityksellä.

Tavoite ja lähtökohdat


Tässä blogauksessani raportoin illasta 20.8.2012, jolloin asensin miniläppärilleni mahdollisimman vaivattoman mutta kevyen Ubuntu + Gnome + Gnome Do -yhdistelmän varassa toimivan Linux-ympäristön. Laite, jolle Ubuntu asennettiin, on Asus Aspire One ZG5 -miniläppäri. Alla tarkemmat speksit:
00:00.0 Host bridge: Intel Corporation Mobile 945GSE Express Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GSE Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)
00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 2 (rev 02)
00:1c.2 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 3 (rev 02)
00:1c.3 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 4 (rev 02)
00:1d.0 USB controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #1 (rev 02)
00:1d.1 USB controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #2 (rev 02)
00:1d.2 USB controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #3 (rev 02)
00:1d.3 USB controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #4 (rev 02)
00:1d.7 USB controller: Intel Corporation N10/ICH 7 Family USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7-M Family) SATA Controller [IDE mode] (rev 02)
00:1f.3 SMBus: Intel Corporation N10/ICH 7 Family SMBus Controller (rev 02)
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 02)
03:00.0 Ethernet controller: Atheros Communications Inc. AR242x / AR542x Wireless Network Adapter (PCI-Express) (rev 01)
04:00.0 System peripheral: JMicron Technology Corp. SD/MMC Host Controller
04:00.2 SD Host controller: JMicron Technology Corp. Standard SD Host Controller
04:00.3 System peripheral: JMicron Technology Corp. MS Host Controller
04:00.4 System peripheral: JMicron Technology Corp. xD Host Controller
erkkimon@ubuntu:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 064e:d101 Suyin Corp. Acer CrystalEye Webcam
Bus 001 Device 005: ID 8644:800b
Kuten muissakaan miniläppäreissä, miniläppärissäni ei ole romppuasemaa. Minulla ei myöskään ole ulkoista romppuasemaa käytössäni, joten aloitin projektin luomalla buuttaavan USB-tikun.

Buuttitikun luominen (epäonnistunut)


Heti aluksi klo 22.15 laitoin Ubuntu 12.04 alternate install CD:n *.iso-levykuvan valumaan koneelleni. Levykuvan valuessa koneelleni asensin vanhaan Ubuntuuni Unetbootinin, jonka avulla on helppoa tehdä mm. GNU/Linux-liveympäristöön buuttaavia USB-tikkuja. Asensin Unetbootinin komentamalla jo olemassa olevalla Ubuntullani:

sudo apt-get install unetbootin
Tämän jälkeen annoin sudo-käyttäjälläni salasanan Ubuntun sitä pyytäessä ja annoin luvan asentaa puuttuvat riippuvuudet painamalla [y] ja [enter].

Ennen levykuvan kirjoittamista tikulle siirsin tikulla olevat tiedostot toiselle tikulle, jolle siirsin myös tietokoneellani olevat dokumentit. Ylimääräisten ongelmien välttämiseksi formatoin tämän jälkeen tikun (Kingston Data Traveler G3, 4 GB), jolle minimaalinen liveympäristö/asennustyökalu oli määrä asentaa. Sitä ennen tiedostojärjestelmään liitetty osio /dev/sdb1 piti irrottaa.

sudo umount /dev/sdb1 && sudo mkfs.vfat /dev/sdb -I

Formatoinnin jälkeen ja levykuvan rantauduttua koneelleni noin klo 22.30 käynnistin Unetbootinin komentamalla terminaaliemulaattorissa:
sudo unetbootin
Valitsin täpän "Diskimage", pidin diskimagen tyyppinä oletuksen, joka oli "ISO" ja etsin "..."-namiskaa painamalla juuri lataamani *.iso-levykuvan tarkalta nimeltään "ubuntu-12.04-alternate-i386.iso". Kohdan "Type" arvona pidin oletuksen "USB Drive" ja kohdan "Drive" arvoksi asetin "/dev/sdb". Määritin siis kirjoituksen kohteeksi juuri formatoimani USB-tikun.

Kun klikkasin "OK" kirjoittamisen aloittamiseksi, Unetbootin pyysi minua liittämään tikun tiedostojärjestelmään. Niinpä loin tikulle väliaikaisen hakemiston, johon liitin sen:

sudo mkdir /mnt/temp && sudo mount /dev/sdb /mnt/temp
Tässä kohtaa en voinut olla ihmettelemättä, miksi Unetbootin ei itse osaa tehdä tätä yksinkertaista toimenpidettä. Tämän jälkeen klikkasin jälleen "OK" ja Unetbootin alkoi kirjoittaa levykuvaa USB-tikulle noin klo 22.35. Kirjoitus oli valmis noin klo 22.45. Tällöin Unetbootin kysyi, käynnistetäänkö kone uudelleen. Vastasin myöntävästi klikkaamalla "Reboot Now" ja kone käynnistyi uudelleen.

Ensimmäinen käynnistys buuttaavalta USB-tikulta (epäonnistunut)


Koneen käynnistyttyä uudelleen painoin [F12] valitakseni median, jolta tietokone lähtee etsimään käyttöjärjestelmää. Valitsin nuolinäppäimillä vaihtoehdon "USB FDD" ja painoin [Enter]. Ruudulle ilmestyi vilkkuva tekstikäyttöliittymille tyypillinen kursori. Se oli ruudussa pitkään ja aloin haistaa palaneen käryä.

TTY:n vaihtaminen näppäinyhdistelmällä [CTRL] + [ALT] + [FX] aiheutti vain piippauksia. Arvelin, että buuttitikussa on jotain vikaa ja käynnistin koneen uudelleen kirjoittaakseni levykuvan tikulle uudestaan.

Uusi yritys luoda buuttaava USB-tikku (onnistunut)


Ennen uutta yritystä varmistin MD5-summan perusteella, että levykuva ei ole rikkoutunut tiedonsiirrossa. Vertasin ubuntu-12.04-alternate-i386.iso -levykuvan MD5-summaa UbuntuHashesista löytyviin MD5-summiin ja totesin, että levykuva on ihan OK. Laskin koneellani olevan levykuvakopion MD5-summan komentamalla:
md5sum ubuntu-12.04-alternate-i386.iso
Ennen tikun vaihtamista toiseen päätin kokeilla Ubuntun omaa työkalua, Startup Disk Creatoria, jonka avasin kirjoittamalla terminaaliin:
sudo usb-creator-gtk
Tässä vaiheessa Nautilus oli jo mountannut USB-tikun tiedostojärjestelmään. Source disc image -kohdassa klikkasin "Other", sillä levykuvaani ei näkynyt ohjelman listassa. Valitsin tiedostoselaimella ubuntu-12.04-alternate-i386.iso -levykuvan ja klikkasin "Open". Disk to Use -kohtaan valitsin tikkuni – muita vaihtoehtoja ei ollut, sillä muita tikkuja ei ollut tällöin koneessa kiinni. Klikkasin ensin "Erase Disk", jonka jläkeen klikkasin "Make Startup Disk". Tiedostojen kirjoittaminen tikulle alkoi noin 23.05 ja loppui noin 23.25.

Samaan aikaan ruudulle lävähti teksti, jossa luki seuraavaa.
System program problem detected. Do you want to report the problem now?
Klikkasin "Report problem". Tämän jälkeen ruudulle ilmestyi teksti:

The application Startup Disk Creator has closed unexptectedly.
Tässä kohtaa oli mahdollista klikata "Leave Closed" tai "Relaunch". Painoin "Leave Closed" ja toivoin, että tikku toimii, sillä tämä virheilmoitus tuli vasta sen jälkeen, kun kaikki tarvittava oli jo (luultavasti) kirjoitettu tikulle. Komensin koneen käynnistymään uudelleen noin klo 23.30:
sudo init 6

Tietokoneen käynnistys ja asennus toimivan USB-buuttitikun avulla  


Koneen käynnistyessä painoin jälleen [F12], valitsin tikun, joka oli tällä kertaa yllättäen USB HDD. Painoin [Enter]. Käynnistyslataaja kysyi heti toivottua kieltä, johon vastasin "English". Painoin [F3] valitakseni näppäimistöasetteluksi suomalaisen kartan. Painoin [F4] ja valitsin "Install a command-line system" asentaakseni minimaalisen järjestelmän. Tämän jälkeen valitsin listasta kohdan "Install Ubuntu" painamalla [Enter].

Asennusvelhon ncurses-käyttöliittymä latautui nopeasti ja nätisti. Ensimmäiseksi valitsin järjestelmän kielen, joksi asetin englannin (English). Sijainnikseni (Location) valitsin Suomen (other -> Europe -> Finland). Localeksi valitsin en_GB.UTF-8. Tämän jälkeen velho alkoi ladata asennuskomponentteja sekä tunnistaa laitteistoa. Sitten velho kysyi, mitä verkko-rajapintaa haluan käyttää. Vastasin haluavani käyttää wlan0-rajapintaa (Atheros Communications Inc. AR242x / AR542x Wireless Network Adapter). Laite toimi muitta mutkitta ja velho kysyi minulta langattoman verkkoni SSID:n ja salasanan, jonka jälkeen läppärini autentikoitui verkkoon ongelmitta ja haki IP-osoitteen DHCP:n yli automaattisesti.

Verkkoon liityttyään velho pyysi minua määrittelemään koneelle hostnamen. Asetin hostnameksi "ubuntu". Seuraavaksi minulta kysyttiin käyttäjän koko nimeä, käyttäjätunnusta sekä salasanaa. Asetin ne, mutta arvoja en muulle maailmalle kerro. :) Salasanaa velho luonnollisesti kysyi kahdesti typojen eliminoimiseksi. Kone kysyi, haluanko krypata kotihakemistoni, ja vastasin haluavani. Sitten kone kysyi, olenko Helsingissä. Vastasin, että tottahan toki minä olen.

Kello alkoi olla 23.40 koneen kysyessä, miten haluan kovalevyni paloiteltavan. Halusin jättää levylle pelivaraa, joten valitsin vaihtoehdon "manual" voidakseni säätää osiot itse. Osiotaulusta tuli seuraavanlainen:
#1 primary 100.0 GB B f ext4 / 
#2 primary 1.0 GB - f swap swap
- pri/log 59.0 GB - - FREE SPACE 
Kirjoitin osiotaulun levylle, jonka jälkeen velho alusti osiot ja alkoi asentamaan järjestelmän perustuksia. Tämä alkoi klo 23.48 ja loppui aika tarkalleen klo 00.00. Tämän jälkeen velho vielä kysyi ystävällisesti, saako se asentaa  GRUB-käynnistyslataajan MBR:ään (master boot record). Vastasin, että tietysti (Yes). Tämän jälkeen annoin velholle luvan asettaa läppärin kellon UTC-aikaan. Sitten velho ilmoitti, että asennus on valmis ja valitsin "Continue", jolloin kone käynnistyi uudelleen.

Asennetun järjestelmän käynnistys + lihaa luiden päälle


Koneen käynnistyessä en enää valinnut USB-tikkua vaan annoin koneen käynnistyä ihan rauhassa itsekseen. Muutaman sekunnin kuluttua ruudulleni pamahti Ubuntun logini. Kirjauduin sisään tunnuksillani.

Sitten asensin järjestelmääni elintärkeät palikat, jotka ovat Gnome, Gnome-Do, Network Manager sekä Google Chromium.
sudo apt-get install gnome gnome-do gnome-do-plugins chromium-browser network-manager network-manager-gnome


Annoin paketinhallinnalle luvan asentaa kaikki riippuvuudet, ja niitä olikin aikamoinen nippu. Elintärkeiden palikoiden asennus alkoi klo 12.15 ja loppui noin klo 12.55. Tämän jälkeen käynnistin koneen uudestaan. Kone käynnistyi nätisti ja avasi GDM:n automaattisesti. Kirjauduin sisään ja ruudulleni avautui Gnomen luuranko. Ei se kauhean nätti vielä ollut, mutta kyllä siitä vielä peli saadaan.