Raspberry Pi ja Linux komentorivi

Jos olet asentanut Raspberry Pi laitteeseen Rasbian -käyttöjärjestelmän, se on lähes samanlainen kuin mikä tahansa muukin Linux. Siinä voi olla graafinen käyttöliittymä tai se voi olla vain pelkkä mustapohjainen ruutu jossa on tekstiä.

Molemmissa tapauksissa olisi hyvä osata Linux komentorivityöskentelyn perusteet. Komentoriviä käytetään myös Linux järjestelmien etähallinnassa, SSH yhteyden yli.

Raspbian käyttöönotto

Jos Raspberry Pi laitteessa on näyttö ja näppäimistö niin pääset jo käyttämään komentoriviä suoraan. Suosittelen myös että laitteeseen olisi verkkoyhteys kytkettynä.

Jos käytät Raspbian Desktop versiota, käynnistyy laite graafiseen tilaan. Lite versiossa ei ole graafista käyttöliittymää joten se on paljon kevyempi. Graafisella Linuxilla saat tekstiliittymän auki avaamalla sovelluksen Terminal. Voit suurentaa ikkunan mahdollisimman korkeaksi jotta näyttöön mahtuu enemmän tekstiä.

Jos haluat saada etähallinnan niin laitteesta tulisi tehdä muutama valmistelu. Tekstiruutuun anna komento: sudo raspi-config

Selaa valikosta kohta Interfacing Options ja sieltä SSH. Valitse Yes, sen jälkeen Ok ja lopuksi vielä Finish. Näin laitteelle aktivoituu SSH etäyhteyspalvelu ja siihen saadaan yhteys verkosta. Tarkista vielä laitteen IP osoite komennolla: ip addr

Osoitteen löydät riviltä jossa on teksti inet, tyyliin:

   inet 100.115.92.204/28 brd 100.115.92.207 scope global eth0

Voit jatkaa Linux komentojen kanssa harjoittelua tältä Raspbianin ikkunalta tai ottaa etäyhteyden. Ensimmäiseksi suosittelen oletussalasanan vaihtamista!

Windows koneelta etäyhteys

Jos käytössäsi on Windows, on sinulla mahdollisuus a) Asenna “Linux subsystem” Windows 10 ohjelmakirjastosta tai b) Ota SSH etäyhteys Linuxiin “PuTTY” ohjelmistolla.

PuTTY -ohjelmistoa ei tarvitse asentaa ja voidaan vain suorittaa sellaisenaan. Mutta haastavinta sinulla on löytää etähallittavan Linux järjestelmän verkko-osoite (IP osoite tai DNS nimi), käyttäjätunnus ja salasana. Raspbian järjestelmässä voit joutua aktivoimaan SSH palvelun erikseen ja selvittämään laitteen IP osoitteen. 

Mac ja Linux koneilta etäyhteys

Näillä koneilla on SSH ohjelmisto jo valmiina. Avaa vain Terminal eli Pääte. Siellä saat jo komentorivikehoitteen eteesi. Etäyhteyden voit ottaa Raspbianiin komennolla: ssh pi@11.22.33.44 (käytä oikeaa tunnusta ja osoitetta).

Komentokehoite

Linuxin komentokehite kertoo yleensä tärkeimmät tiedot: tunnus@koneennimi:hakemisto $. Tunnus on se millä kirjauduit sisään, koneen nimi on järjestelmän nimi (sen voi vaihtaa), sitten kaksoispiste ja tämän jälkeen hakemisto missä olet (viimeisin osa siitä). Ja lopuksi vielä joko $ merkki joka kertoo että olet tavallinen käyttäjä. Pääkäyttäjällä root se olisi # merkki. Siksi oheisissa esimerkeissä alussa on aina joko $ tai # merkki, sitä ei syötetä mutta kertoo että annetaanko komento normaalin vaiko pääkäyttäjän oikeudella.
Komentokehoitetta voi muuttaa haluamakseen.

Käyttäjätunnukset ja salasanat

Linux järjestelmiin on helppo murtautua jos käyttäjätunnuksen ja salasanan osaa arvata. Joten ensin tulee suojata Rasbianin oletuskäyttäjätunnus: pi

Komentokehoitteessa salasana vaihdetaan komennolla: 

$ passwd

Anna vanha salasana ja tämän jälkeen uusi salasana kaksi kertaa, kirjoitusvirheiden välttämiseksi. Salasana tulisi olla riittävän pitkä (vähintään 8-10 merkkiä) ja siinä olisi oltava isoja ja pieniä kirjaimia, numeroita ja mahdollisesti vielä jokin erikoismerkki. Esimerkiksi jotain tyyliin: kaLa77/Luut

Yleensä Linux järjestelmissä on normaalin käyttäjätunnuksen lisäksi pääkäyttäjä: root

Sen salasana tulisi olla erittäin vahvasti suojattu tai jopa sisäänkirjautuminen kokonaan estetty. Myöhemmin esitellään komentoja joilla voi generoida hyviä salasanoja (pwgen, apg).

Pääkäyttäjäksi voi vaihtaa komentorivillä kahdella vaihtoehtoisella tavalla. Komento: 

$ su -

Vaihtaa sinut pääkäyttäjäksi (Switch User) ja kysyy pääkäyttäjän root salasanan. Toinen menetelmä saada pääkäyttäjän oikeudella ajettua komennon on käyttää käskyä: 

$ sudo <komento-ja-parametrit>

Siinä käyttäjällä tulee olla oikeus ajaa komento pääkäyttäjän oikeudella. Tämä olisi suositeltavampi tapa kuin su -komennon käyttö.

Hakemistorakenne

Linuxin tiedostojärjestelmä ja hakemistorakenne poikkeaa Windows ja Mac tietokoneista. Juurihakemisto on / jonka alla on useita alihakemistoja. Ohessa tärkeimpiä paikkoja:

/home
…/pi
/root
/etc
/usr
…/bin
/bin
/var
 …/log
/tmp 
/run 
/opt
Käyttäjien kotihakemistot
Käyttäjän pi kotihakemisto /home:n alla
Pääkäyttäjän root kotihakemisto, ei ole /home:n alla
Järjestelmän asetukset
Järjestelmän ohjelmistot ja muut “kiinteät” tiedostot
Käskyt ja komennot
Lisää komentoja
Muuttuvat tiedostot, esim tietokannat ja
Lokitapahtumat
Väliaikaistiedostoja
Ajonaikaisia tiedostoja
Kolmannen osapuolen ohjelmia, esimerkiksi Minecraft

Lisää tietoa Linuxin hakemistorakenteesta löytää dokumentaatiosta

Komentoja hakemistorakenteen hallintaan

pwd
cd 
cd /tmp
  cd ..
ls 
ls /home
mkdir kansio 
mkdir /tmp/hak
touch tyhjä
cp tyhjä /tmp/
mv tyhjä tiedosto
mv tiedosto /tmp
rmdir kansio
rm /tmp/tiedosto
less /etc/passwd
Print working directory, näytä hakemisto
Change directory, vaihda hakemistoa (kotiin)
Mene suoraan hakemistoon /tmp
Mene edelliseen hakemistoon
List files, listaa tiedostoja
Listaa kyseisestä hakemistosta
Luo alihakemisto “kansio”
Luo suoraan /tmp:n alle
Tee tiedosto nimeltään tyhjä nykyiseen paikkaan
Kopioi tiedosto kansioon /tmp/
Uudelleennimeä tyhjä nimelle tiedosto
Siirrä tiedosto tyhjä hakemistoon /tmp
Poista kansio, mutta vain jos se on tyhjä
Poista tiedosto
Lue tekstitiedostoa, poistu q kirjaimella

Ohjeet ja komentojen parametrit

Linuxissa on erinomainen tietolähde kaikille komennoille ja niiden parametreille. Voit lukea manuaalisivuja komennolla:

$ man less

Tämä näyttää kyseisen komennon less ohjeet. Voit liikkua ohjeessa ylös ja alaspäin ja poistua q -kirjaimella. Lyhyempi yhteenveto komennon parametreistä onnistuu myös käyttämällä komentoa ja antamalla sille parametriksi –help

$ less --help

Mikäli et tiedä mikä ohjesivu kertoisi jostain tietystä aiheesta, voit kysyä sitä:

$ apropos password

Tämä kertoo kaikki manuaalisivut jossa sivutaan kysyttyä aihetta. Mukana on myös ohjelmoijille tarkoitettua informaatiota joka voi olla hyvä ohittaa.

Jos tiedät käskyn mutta et tiedä mitä se tekee, käytä komentoa:

$ whatis <komento>

Se antaa lyhyen kuvauksen antamastasi komennosta.

Tiedostojen muokkaus

Yksi yleisimmin tarvittava työkalu Linuxissa on tekstieditori. Mikäli käytössä on vain tekstipohjainen Linux, voi tiedostojen muokkaus olla alkuun hankalaa. Mutta graafisella puolella on yleensä useita helppokäyttöisiä vaihtoehtoja, esimerkiksi gedit.

Kaikista Linux järjestelmistä löytyy tekstieditori nimeltään vi (Visual Improved). Se on aloittelijoille hankala johtuen eri tiloista. Mutta sen perusteet on silti hyvä oppia. Tiedoston muokkaus käynnistetään tyyliin:

$ vi teksti.cfg

Tärkeintä sieltä on oppia pääsemään ulos, ilman mitään muutoksia tiedostoon. Se onnistuu kun painat pari kertaa Esc nappia ja tämän jälkeen kaksoispistettä : ja kirjoitat q! merkit. Paina sitten vielä Enter. Selitys: Ensin parilla Esc napilla mennään komentotilaan. Sieltä : merkillä rivitilaan ja kirjoitetaan quit ja pakotus (huutomerkki). Ja lopuksi tämä syötetään Enter napilla.

Mutta helpompi tekstieditori on nano. Se käynnistyy komennolla:

$ nano tiedosto.txt

Ohjelman alareunassa näkyy aina tärkeimmät näppäinoikotiet. Jos merkin edessä on ^ merkki niin se tarkoittaa Ctrl -nappia ja yhdessä merkin perässä oleva kirjain. Esim ^G saadaan kun painetaan Ctrl-G nappeja ja silloin tulee ohjesivu. M-U tarkoittaa Alt nappia yhdessä U kirjaimen kanssa. Silloin saadaan peruttua edellinen toimenpide. Nano editorista pääsee pois painamalla Ctrl-X ja silloin kysytään varmistus että haluatko tallentaa. Paina Y (yes) ja tarkista tiedoston nimi. Jos se kelpaa niin paina vielä Enter.

Tavallisella käyttäjällä ei välttämättä ole oikeutta muokata (avata ja/tai tallentaa) tiedostoa, silloin joudut ajamaan vi tai nano ohjelmaa pääkäyttäjän oikeudella. Se onnistuu antamalla editorin nimen eteen sudo -komennon. Silloin sinulta voidaan kysyä oma salasanasi. 

Järjestelmän ylläpito

Tietoturvapäivitykset

Linux on turvallinen järjestelmä vain jos käyttäjien salasanat on riittävän vahvoja sekä järjestelmän ohjelmistot on päivitettyjä. Ohjelmistojen päivitys tarvitsee aina verkkoyhteyden. Raspbian käyttöjärjestelmä on Debian pohjainen ja siellä ohjelmistojen hallintaan on komento: apt

Päivitystiedot haetaan komennolla:

$ sudo apt update

Tämän jälkeen järjestelmä tietää mitä ohjelmistoversioita on saatavilla. Ja varsinainen päivitys suoritetaan komennolla

$ sudo apt upgrade

Tämä vertailee asennettua ohjelmistoa saatavilla olevaan ja lataa tarvittavat päivitykset ja asentaa ne. 

Uudelleenkäynnistys

Osa päivityksistä voi vaatia laitteen uudelleenkäynnistyksen. Se onnistuu komennoilla: $ sudo reboot

Järjestelmä voidaan myös sammuttaa ajamalla komennon: $ sudo poweroff

Ohjelmiston asennus

Mikäli haluat asentaa lisää ohjelmia, voit käyttää siihen samaa apt -komentoa. Ensin voit etsiä ohjelmapaketin nimeä “nmap” komennolla:

$ sudo apt search nmap

Mikäli ohjelma löytyy, asenna se komennolla

$ sudo apt install nmap

Tämän jälkeen ohjelma asentuu. Jos haluat tietää mitä tiedostoja ohjelmapaketista tuli, voit selvittää sitä komennolla:

$ dpkg -L nmap

Koska lista voi olla pitkä ja jos et pysty vierittämään ruutua, opetellaan seuraavaksi prosessien putkitus.

Putket ja prosessit

Linuxissa komentoja voi antaa useita peräkkäin. Esimerkiksi päivitystä varten jouduimme ajamaan kaksi komentoa erikseen. Mutta ne voidaan ajaa myös yhdellä komentorivillä. Erotinmerkkinä käskyille on puolipiste ;

$ sudo apt update ; sudo apt upgrade

Putki käskyltä toiselle

Mikäli komento antaa pitkän listauksen ruudulle etkä pysty sitä vierittämään edestakaisin päätteessä (kokeile Shift-PageUp ja -PageDown), käytetään putkimerkkiä (tolppa, pystyviiva, AltGr ja ><| napeilla) tyyliin:

$ dpkg -L nmap | less

Tässä dpkg komento lähettää “tulosteen” ohjelmalle less joka ottaa sen vastaan ja antaa käyttäjälle mahdollisuuden vierittää tulostetta edestakaisin. Tästä pääsee pois q -napilla.

Muita “putkitus” kohteita voi olla esim grep, tr, cat, tr tai lähes mikä tahansa. Esimerkkejä:

$ dpkg -L nmap | grep bin

$ echo “Linux komentorivityöskentely on hauskaa” | sed s/hauska/hupi/

$ date | tr -d a-zA-Z

Uudelleenohjaus

Joskus ohjelman tuloste halutaan talteen, esimerkiksi tekstitiedostoon. Silloin käytetään > merkkiä. Esimerkiksi:

$ ls /usr > /home/pi/usr-alihakemistot.txt

Tässä listataan /usr hakemiston sisältö ja listaus tallennetaan hakemistoon /home/pi tiedostoon usr-alihakemistot.txt.

Komennot voidaan myös pyytää lukemaan tiedoston sisältöä. Silloin käytetään < merkkiä, esimerkiksi:

$ cat < /home/pi/usr-alihakemistot.txt

Tässä cat (conCATenate) komento lukee syötettä annetusta tiedostosta ja lähettää sen käyttäjän ruudulle. Vertaa tulostetta komentoon:

$ tac < /home/pi/usr-alihakemistot.txt

Prosessit

Linuxissa (ja monissa muissa käyttöjärjestelmissä) on prosesseja. Niitä pyörii käyttäjältä näkymättömissä tai käyttäjän terminaalissa. Prosessi on yksi ohjelmakokonaisuus jolla on oma muisti, ohjelmakoodi, kirjastot sekä avoimia tiedostoja. Prosesseja voi listata komennolla: ps

Oletuksena se listaa vain aktiivisen päätteen prosessit joten siihen on hyvä antaa parametrejä, esim:

$ ps -ef | less

Tämä listaa kaikki prosessit kyseiseltä koneelta. Listauksessa näkee UID eli käyttäjätunnuksen, PID eli prosessin ID numeron, TTY eli päätteen missä sitä ajetaan sekä tietysti CMD eli komennon ja sen parametrit.

Jos käyttäjällä on prosesseja ajossa, hän voi myös antaa niille signaaleja jolla ohjelma esimerkiksi lopettaa ajon. Tähän on komento: kill ja siihen tarvitaan aina prosessin numero. Tässä esimerkki kun prosessia 1234 pyydetään tekemään “Hang Up”:

$ kill -HUP 1234

Terminaalista käynnistetyt ohjelmat harvoin jää “taustalle” ajoon mutta tarvittaessa ne saa käskettyä niin antamalla loppuun “et” merkin &. Tässä jätetään ohjelma sleep nukkumaan 1000 sekunniksi taustalle, listataan prosessit joissa on teksti sleep ja annetaan sille HUP signaali:

$ sleep 1000 &

$ ps -ef |grep sleep

$ kill -HUP <pid>

Lisätietoa

Linux komentorivityöskentelyn oppiminen vie pajon aikaa. Hyvää suomenkielistä informaatiota löytää Linux.fi sivulta https://www.linux.fi/wiki/Komentorivin_perusteet

Henri Paasovaara 2019


Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.