piątek, 16 sierpnia 2019

Pożyteczne (techniczne) linki

Poniżej umieszczam trochę pożytecznych linków, z których czasami korzystam.

DistroWatch.com - dokładny przegląd dystrybucji Linuksa i BSD:
https://distrowatch.com/

Cheat.sh - ściągawka do komend Unix/Linux i języków programowania:

Explain Linux Commands - wpisujemy pełną komendę np. ps -aux i dostajemy pełne wyjaśnienie, co robi komenda oraz jej parametry:

What is my IP - mój publiczny i prywatny adres IP:
https://www.cleancss.com/what-is-my-ip/

Default Router Settings - domyślne nazwy i hasła użytkowników oraz adresy IP routerów, modemów, kamer IP i innych urządzeń sieciowych:
https://www.cleancss.com/router-default/

BezKompilatora.pl - ciekawy blog o Linuksie:
https://www.bezkompilatora.pl/

Crontab Guru - edytor (kreator) tabeli crontab dla harmonogramu zadań cron:
https://crontab.guru/

repl.it - kompilatory online dla różnych języków programowania:
https://repl.it/

Circuit Simulator - symulator układów elektronicznych w przeglądarce:
http://lushprojects.com/circuitjs/

Crypto-IT : Protokoły TCP/IP - opis TCP/IP:
http://www.crypto-it.net/pl/teoria/protokoly-tcp-ip.html

Codecademy - kursy online z języków programowania:
https://www.codecademy.com/

Rosetta Code - różne zadania programistyczne w bardzo wielu językach programowania:
http://www.rosettacode.org/wiki/Category:Programming_Tasks
np. najprostszy program Hello World napisany w ponad 400 różnych językach programowania:
http://www.rosettacode.org/wiki/Hello_world/Text

SS64 - opis komend wiersza poleceń dla systemów Linux, macOS i Windows oraz opis poleceń i funkcji dla SQL, VBS i PowerShell:
https://ss64.com/

VirusTotal - można sobie online przeskanować plik za pomocą różnych silników antywirusowych:
https://www.virustotal.com

WolframAlpha - strona ta formułuje odpowiedź na pytanie zadane w języku naturalnym, wykonuje obliczenia, przedstawia dane statystyczne, rozwiązuje równania itp.:
https://www.wolframalpha.com/

ark.intel.com - specyfikacje produktów Intela:
https://ark.intel.com

FORBOT - elektronika, Arduino, Raspberry Pi, kursy:
https://forbot.pl/blog/

BlogIT by Artur Dębski - pożyteczne notatki z różnych dziedzin IT:
http://blogit.one.pl/news_cats.php

Kalkulator IP - na podstawie adresu IP i maski oblicza adres sieci, adres rozgłoszeniowy oraz ilość hostów w sieci:
https://42.pl/ipcalc/

--- Na koniec moje dwa ulubione na dzień dzisiejszy systemy operacyjne ---

FreeBSD:
https://www.freebsd.org/
https://www.freshports.org/
https://pl.wikipedia.org/wiki/FreeBSD

Linux Mint:
https://www.linuxmint.com/
https://pl.wikipedia.org/wiki/Linux_Mint

czwartek, 18 lipca 2019

FreeBSD 12.0 - instalacja systemu

FreeBSD jest darmowym systemem operacyjnym z rodziny Unix (nie jest to kolejna dystrybucja Linuksa!) dostępnym z pełnym kodem źródłowym. System jest zgodny z normą POSIX i jest dostępny na wiele architektur sprzętowych (nawet na takie urządzenia jak Raspberry Pi). FreeBSD korzysta z opartego na źródłach systemu pakietowania znanego jako porty oraz prekompilowanych pakietów binarnych z domyślnymi opcjami dla wszystkich aktualnie obsługiwanych wersji i architektur sprzętowych FreeBSD.

Wersję instalacyjną systemu na różne architektury sprzętowe można ściągnąć z oficjalnej strony https://www.freebsd.org/

No to zaczynamy instalację:



Na początku wybieramy układ klawiatury:



Podajemy nazwę hosta w sieci:



Wybieramy opcjonalne komponenty. Warto zaznaczyć ports, żeby móc później instalować programy z pakietów zawierających kody źródłowe, tzw. portów:



Następnie tworzymy partycję na dysku przeznaczoną na system FreeBSD. Mamy do wyboru dwa systemy plików - UFS (Unix File System) oraz ZFS, który jest szybszy, ale trudniejszy w konfiguracji. Ja wybrałem UFS (w rzeczywistości jest to nowszy UFS2):



Następnie mamy wybór, czy utworzyć partycję zajmującą cały dysk twardy (Entire Disk), czy tylko część dysku (Partition - gdy chcemy później zainstalować inny dodatkowy system np. Linux):



Kolejnym krokiem, jest wybranie schematu partycjonowania np. MBR lub GPT:



Wyskoczy podsumowanie o utworzonych partycjach i systemach plików. Wybieramy Finish:



Rozpocznie się proces instalacji plików całej dystrybucji FreeBSD:




Po zainstalowaniu wszystkich plików, należy ustalić hasło root-a:



Przystępujemy do konfiguracji karty sieciowej:







Wybieramy strefę czasową:







Wybieramy usługi (demony), które będą działać w naszym systemie:



Wybieramy dodatkowe opcje związane z bezpieczeństwem systemu:



Zakładamy dodatkowych użytkowników. Nie jest to konieczne, ale wskazane ze względów bezpieczeństwa systemu (lepiej pracować na koncie zwykłego użytkownika). W konsoli, w standardowych menedżerach okien i w niektórych środowiskach graficznych możemy logować się użytkownikiem root, ale np. połączenie środowiska graficznego KDE Plasma z menedżerem logowania SDDM nie pozwala na logowanie się do systemu użytkownikiem root:




Koniec instalacji. Warto jeszcze doinstalować podręcznik FreeBSD w naszym języku:




Możemy opuścić instalator i uruchomić ponownie komputer:





Przy pierwszym uruchomieniu systemu FreeBSD warto zaktualizować listę pakietów:

# pkg update


oraz zaktualizować wszystkie zainstalowane pakiety:

# pkg upgrade


Oprogramowanie instalujemy za pomocą polecenia pkg install, np. Midnight Commander instalujemy tak:

# pkg install mc


Programy możemy też instalować za pomocą portów, ale to zagadnienie i ogólny opis systemu (w tym plików konfiguracyjnych) to już temat na odrębny artykuł.

Warto też doinstalować X Window System (X.org - serwer X-ów) oraz środowisko graficzne np. Xfce, GNOME, KDE Plasma, Lumina itd. Jednak jest to też temat na osobny artykuł.

Przydatne linki:
- oficjalna strona FreeBSD - https://www.freebsd.org/
- oficjalne forum FreeBSD - https://forums.freebsd.org/
- wszystko o pakietach i portach - https://www.freshports.org/

wtorek, 12 lutego 2019

Docker

Docker jest narzędziem, które pozwala umieścić program oraz jego zależności w lekkim, przenośnym wirtualnym kontenerze, który można uruchomić na prawie każdym hoście z systemem Linux.

Docker zastępuje tradycyjną wirtualizację przez stosowanie czegoś co nazywa się konteneryzacją. Każdy kontener posiada wydzielony obszar pamięci, odrębny interfejs sieciowy z własnym adresem IP oraz wydzielony obszar na dysku, na którym znajduje się zainstalowany obraz systemu operacyjnego i wszystkich zależności (bibliotek) potrzebnych do działania aplikacji (uruchamiane są tylko procesy niezbędne do działania aplikacji).

Porównanie kontenerów i standardowej wirtualizacji:



Źródło: https://www.docker.com/resources/what-container

Najważniejsze pojęcia:

Demon - główny silnik Dockera (proces dockerd) - odpala nasze kontenery z aplikacjami.

Klient - aplikacja CLI o nazwie docker, komunikuje się z demonem.

Obraz - jest szablonem dla kontenera. Obrazy znajdują się w rejestrze np. https://hub.docker.com/ albo w lokalnym cache. Są tylko do odczytu.

Rejestr - miejsce do przechowywania obrazów. Oficjalny rejestr dockera to: https://hub.docker.com/

Kontener - to uruchomiona instancja danego obrazu, jest warstwą zapisywalną.

Docker jest wielowarstwowy: Kernel > Obraz > Kontener

Instalacja Dockera

Docker do pracy wymaga linuksowego kernela, więc można go uruchomić na większości dystrybucji systemu Linux. Działa też pod Windows 10 Pro i Enterprise 64-bit, wykorzystując wirtualizację Hyper-V. Można też odpalić maszynę wirtualną z Dockerem pod macOS.

Przykład instalacji dla Ubuntu 18.04 64-bit:

sudo apt install docker.io

Aby można było uruchamiać kontenery, trzeba dodać użytkownika do grupy docker:

sudo usermod -aG docker $USER

Sprawdzenie, czy Docker działa

Trzeba ściągnąć obraz hello-world z oficjalnego repozytorium:

docker run hello-world

Jak wyskoczy tekst Hello from Docker!, tzn. że kontener z obrazem hello-world uruchomił się prawidłowo.

Przykłady działania

Uruchomienie kontenera z najnowszym interpreterem języka Python:

docker run -it python

-i : uruchamia instancję kontenera w trybie interaktywnym
-t : przypisuje instancję kontenera do bieżącej konsoli (tty)

Uruchomienie kontenera z Pythonem 2.7:

docker run -it python:2.7

Kontener z Alpine Linux (lekki system Linux):

docker run -it alpine
docker run -it alpine /bin/sh
docker run alpine ls -l

Kontener z grami bsd-games (np. adventure, backgammon, battlestar, boggle, cribbage, go-fish, hunt, mille, quiz, trek, worm):

docker run -it --rm cricket/hangman hangman

--rm : usuwa kontener po zakończeniu

Aplikacja webowa:

docker run --name stsi -d -p 85:80/tcp dockersamples/static-site

--name : zdefiniowana przez użytkownika przyjazna nazwa kontenera
-d : detached mode, proces działa w tle, konsola dostępna
-p 85:80/tcp : przekierowanie portu 80/tcp kontenera na 85/tcp hosta (można odpalić w przeglądarce stronę testową http://ip_hosta:85 )
-P : przekierowanie portów kontenera na losowe wysokie porty hosta

docker port stsi
- można sprawdzić, które porty są mapowane z kontenera stsi na host

Przydatne komendy polecenia docker

docker images - lista obrazów w lokalnym cache komputera
docker info - szczegółowe informacje o Dockerze (ilość obrazów, kontenerów itp.)
docker kill - ubija działający kontener
docker port - lista mapowanych portów TCP i UDP z kontenera na host
docker ps - lista działających kontenerów
docker pull - ściąga obraz do lokalnego cache
docker push - wysyła obraz do repozytorium
docker rm - usuwa kontenery z dysku
docker rmi - usuwa obrazy z dysku
docker run - uruchamia kontener (komendę w kontenerze); jeżeli nie ma obrazu, to go ściąga (docker pull)
docker search - szuka obrazów w repozytorium
docker top - pokazuje uruchomione procesy w kontenerze
docker version - informacja o wersji Dockera
docker build - budowanie własnego obrazu kontenera

Budowanie własnego obrazu kontenera z pliku Dockerfile

W tym przykładzie zbudujemy własny kontener z obrazem Pythona 3.4 i uruchomionym programem primes_print.py, który wypisuje na ekranie liczby pierwsze.

Kod źródłowy programu w Pythonie:
https://github.com/adamblaszczyk/code-snippets/blob/master/python/primes_print.py

Tworzymy plik Dockerfile służący do budowania obrazu:

FROM python:3.4
ADD primes_print.py /
CMD python primes_print.py

Jest to przepis na budowanie obrazu:
FROM - oznacza bazowy obraz,
ADD - dodaje pliki do obrazu,
CMD - polecenie odpalane przy starcie kontenera (instancji zbudowanego obrazu).

Budujemy obraz (wykorzystując Dockerfile) na bazie obrazu python:3.4 z oficjalnego repozytorium Docker Hub:

docker build --tag=primes .

--tag : nazwa_obrazu(:wersja)

Uruchamiamy naszą instancję (kontener) nowo zbudowanego obrazu:

docker run -it --rm primes

Na tym zakończę wstęp do Dockera. Postaram się jeszcze coś o nim napisać.