Instalacja LinuxCNC-tuxcnc_edition
Teraz czas zapiąć pasy i startujemy.
Potrzebny będzie komputer, najlepiej Intel Atom, ale na innym też powinno się udać.
Zakładamy, że na dysku twardym jest założona jedna pusta partycja o rozmiarze kilku gigabajtów, reszta dysku jest pusta.
To tak żeby opis uprościć, bo oczywiście można Linuksa zainstalować nawet na piętnastej partycji, a rozmiar jest nieważny, byle się wszystko pomieściło.
Podejrzewam, że system spokojnie zmieści się w gigabajcie, ale zobaczymy jak wyjdzie.
Sposób utworzenia partycji jest dowolny, może być program pod DOS, Windows, Linux czy jeszcze inny system.
Partycjonowanie dysku nie jest przedmiotem tego opisu, powiem tylko że w Linuksie z którego będziemy instalować jest do tego polecenie fdisk .
Ściągamy obraz ISO dystrybucji Ubuntu-mini-remix.
Można przez przeglądarkę, można też tak :
Kod: Zaznacz cały
wget http://www.ubuntu-mini-remix.org/download/10.04.1/ubuntu-mini-remix-10.04.1-i386.iso
Jedno i drugie można zrobić na wiele sposobów, zarówno pod Windows jak i pod Linux.
Opisu jak to zrobić nie będzie.
Uruchamiamy nasz testowy komputer z nośnika zawierającego ściągnięty system.
Jest to system bez środowiska graficznego, przywita nas linia poleceń i nic więcej.
Aby pozbyć się ewentualnych problemów z brakiem uprawnień i nie pisać sto razy sudo, zabijamy paranoję jednym poleceniem :
Kod: Zaznacz cały
sudo -i
Możemy zrobić dokładnie wszystko, włącznie ze skasowaniem plików systemowych, to nie jest Windows, raczej nie będzie ostrzegał, a już napewno nie zabroni.
Dlatego wszystkie polecenia trzeba wpisywać starannie, żadne literówki nie są tolerowane, wielkość liter ma znaczenie.
Jedziemy !
Kod: Zaznacz cały
df
U mnie wyglądają następująco :
/dev/sdb1 3924996 161936 3763060 5% /cdrom
/dev/loop0 135424 135424 0 100% /rofs
Pierwsza to urządzenie z którego uruchomiliśmy system, tutaj /dev/sdb1 zamontowane w katalogu /cdrom , drugie to urządzenie typu loop, czyli zasadniczo fragment pamięci RAM, zamontowane w /rofs
To przykładowe /dev/sdb1-/cdrom i /dev/loop0-/rofs warto zapamiętać.
Nasz dysk twardy powinien się nazywać /dev/sda a jego pierwsza partycja /dev/sda1 .
Te urządzenia isnieją fizycznie, ale polecenie df ich nie wyświetla, bo system z nich nie korzysta.
Sprawdzić to możemy
Kod: Zaznacz cały
ls /dev/sda*
/dev/sda /dev/sda1
Teraz trzeba dysk sformatować.
Wszelkie dane na partycji /dev/sda1 zostaną utracone !
Kod: Zaznacz cały
mkfs.ext4 /dev/sda1
Czas tą pustą partycję zapełnić.
Najpierw trzeba ją zamontować, ale nie ma gdzie.
Utwórzmy więc nowy katalog :
Kod: Zaznacz cały
mkdir /mnt/new
Kod: Zaznacz cały
mount /dev/sda1 /mnt/new
Prawidłowe skopiowanie wszystkich tam zawartych plików jest możliwe tylko poniższym poleceniem :
Kod: Zaznacz cały
cp -dpR /rofs/* /mnt/new
Sprawdźmy :
Kod: Zaznacz cały
ls /mnt/new
Teraz mamy na dysku twardym prawie kompletny system, ale to prawie robi kolosalną różnicę.
Otóż tego systemu nie da się uruchomić.
Po pierwsze brakuje jądra systemu, po angielsku kernel, po drugie nie jest zainstalowany program rozruchowy, po trzecie brak zdefiniowanych użytkowników.
Pierwsze jest dość proste do naprawienia.
Jeżeli jesteśmy w działającym systemie, to znaczy że skąś się kernel załadował, gdzieś musi być, a to gdzieś musi być gdzieś na nośniku z którego uruchamialiśmy.
Nośnik jest zamontowany w /cdrom i faktycznie kernel jest /cdrom/casper/vmlinuz.
Już go mamy, tylko jeszcze powinien się nazywać pełnym imieniem i nazwiskiem, inaczej program rozruchowy go nie pozna.
Robimy tak :
Kod: Zaznacz cały
cp /cdrom/casper/vmlinuz /mnt/new/boot/vmlinuz-2.6.32-24-generic
Porównajmy wyniki poleceń :
Kod: Zaznacz cały
ls /dev
ls /mnt/new/dev
Bierze się to stąd, że tak naprawdę w /dev jest zamontowany specjalny system plików tworzony przy starcie systemu.
Podobnie ma się sprawa z /proc i /sys.
Żeby dokonać koniecznych zmian w nowym systemie plików, trzeba tam przejść, jest do tego specjalne polecenie chroot.
Tylko jak już tam się znajdziemy, to nic nie zrobimy bez tych specjalnych systemów plików /dev /proc i /sys .
Musimy je zabrać ze sobą.
Wystarczy je zamontować tam gdzie będą potrzebne, jest taka opcja programu mount :
Kod: Zaznacz cały
mount /dev /mnt/new/dev -o bind
mount /sys /mnt/new/sys -o bind
mount /proc /mnt/new/proc -o bind
Kod: Zaznacz cały
chroot /mnt/new
Kod: Zaznacz cały
passwd root
Nie ma się co wygłupiać, można wpisać admin.
Wprowadzane znaki nie będą wyświetlane.
Hasło można zawsze zmienić dokładnie w taki sam sposób.
Teraz pora na program rozruchowy :
Kod: Zaznacz cały
grub-install /dev/sda
update-grub
Jeśli wyświetlił :Found linux image: /boot/vmlinuz-2.6.32-24-generic" to wszystko zakończyło się pomyślnie.
Koniec wycieczki :
Kod: Zaznacz cały
exit
Kod: Zaznacz cały
reboot
U mnie nowy system wstał bez oporów i powitał mnie napisami :
Ubuntu 10.04.1 LTS fabrizio-laptop tty1
fabrizio-laptop login :
To pamiątka po autorze mini-remixu.
Wpisujemy root <enter> a potem hasło <enter>.
Najpierw zmieńmy tą nazwę komputera :
Kod: Zaznacz cały
echo "devel" > /etc/hostname
W obecnej chwili mamy działające Ubuntu w trybie tekstowym, zainstalowane na twardym dysku.
To jest niewątpliwie sukces, bo autor mini-remiksu nie przewidział instalowania go gdziekolwiek, a i starym linuksowym wyjadaczom potrafi w tym miejscu kopara opaść.
Dodam, że ja już wszystkie Linuksy tak instaluję, nawet jak są graficzne instalatory, po pierwsze mam nad wszystkim pełną kontrolę, po drugie jeszcze mi żaden system stawiany w ten sposób nie odmówił posłuszeństwa.
Z instalatorami zawsze jakieś kłopoty ...
No to teraz sieć.
Podłączymy sieć kablem, prościej i ryzyko problemów mniejsze.
Jeśli karta sieciowa w komputerze nie jest egzotyczna, to sprawę załatwiają polecenia :
Kod: Zaznacz cały
echo "nameserver 192.168.0.1" >> /etc/resolv.conf
ifconfig eth0 192.168.0.77 up
route add default gw 192.168.0.1 eth0
192.168.0.1 to adres mojego routera internetowego, 192.168.0.77 to adres nadany instalowanemu komputerowi, może być dowolny, byle się nie powtarzał w sieci i był z tego samego zakresu co router.
Sprawdzamy :
Kod: Zaznacz cały
ping -c4 google.pl
Z linii poleceń da się w Linuksie zrobić prawie wszystko, ale trudno mówić o komforcie.
Doinstalujemy program Midnight Commander, w skrócie mc.
Problem jest taki, że to nasze okrojone Ubuntu ma okrojoną także listę repozytoriów.
Trzeba to naprawić, bo się dowiemy, że pakietu mc nie ma.
Kod: Zaznacz cały
echo "deb http://archive.ubuntu.com/ubuntu lucid universe" >> /etc/apt/sources.list
Kod: Zaznacz cały
apt-get update
apt-get install mc
mc
Będzie trochę więcej.
Teraz czas na poznanie programu mc, jeśli to pierwszy kontakt z nim.
Jest dość podobny do kultowego programu dla DOS Norton Commander.
Ponieważ to jest Linux, to i możliwości są inne.
Obsługa mc nie jest przedmiotem tego tutoriala.
Jak już mamy mc, to jest w nim dość fajny edytor tekstu, wywoływany klawiszem F4, dlatego coraz częściej zamiast poleceń będę podawał po prostu co w jakim pliku powinno być zapisane.
I tak przykładowo plik /etc/apt/sources.list ma ostatecznie mieć taką zawartość :
Kod: Zaznacz cały
deb http://archive.ubuntu.com/ubuntu lucid main restricted
deb-src http://archive.ubuntu.com/ubuntu lucid main restricted
deb http://security.ubuntu.com/ubuntu lucid-security main restricted
deb-src http://security.ubuntu.com/ubuntu lucid-security main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb http://archive.ubuntu.com/ubuntu lucid-updates main restricted
deb-src http://archive.ubuntu.com/ubuntu lucid-updates main restricted
## Uncomment the following two lines to add software from the 'universe'
## repository.
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://archive.ubuntu.com/ubuntu lucid universe
deb-src http://archive.ubuntu.com/ubuntu lucid universe
deb http://archive.ubuntu.com/ubuntu lucid-updates universe
deb-src http://archive.ubuntu.com/ubuntu lucid-updates universe
deb http://security.ubuntu.com/ubuntu lucid-security universe
deb-src http://security.ubuntu.com/ubuntu lucid-security universe
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://archive.ubuntu.com/ubuntu lucid multiverse
deb-src http://archive.ubuntu.com/ubuntu lucid multiverse
deb http://archive.ubuntu.com/ubuntu lucid-updates multiverse
deb-src http://archive.ubuntu.com/ubuntu lucid-updates multiverse
deb http://security.ubuntu.com/ubuntu lucid-security multiverse
deb-src http://security.ubuntu.com/ubuntu lucid-security multiverse
## LinuxCNC
deb http://buildbot.linuxcnc.org/ lucid master-rt
deb-src http://buildbot.linuxcnc.org/ lucid master-rt
deb http://psha.org.ru/debian lucid contrib
deb http://linuxcnc.org/ lucid base
Żeby sprawę apta zamknąć definitywnie, trzeba jeszcze dodać klucze gpg :
Kod: Zaznacz cały
gpg --keyserver pgpkeys.mit.edu --recv-key 8F374FEF
gpg -a --export 8F374FEF | apt-key add -
wget -O- http://psha.org.ru/debian/pubkey.gpg | sudo apt-key add -
Wbrew pozorom nie jest to zainstalowanie nowszej dystrybucji, a jedynie wymiana wszystkich pakietów na najnowsze wersje.
Kod: Zaznacz cały
apt-get update
apt-get dist-upgrade
W czasie instalowania najnowszych pakietów pojawia się okno z pytaniem gdzie zainstalować program rozruchowy grub.
Dla nieobytych z tekstowym interfejsem może to stanowić problem.
Najeżdżamy strzałkami na właściwą odpowiedź, potwierdzamy spacją, klawiszem <tab> przeskakujemy na OK i wciskamy <enter>.
Po odświeżeniu systemu czas na grafikę.
Ponieważ apt próbuje zawsze spełnić wszystkie zależności, czasem wystarczy instalacja jednego pakietu żeby mieć wszystko, bo reszta zainstaluje się z automatu.
W tym przypadku będzie to :
Kod: Zaznacz cały
apt-get install xinit
Domyślnie xinit uruchamia xterm, ale żeby jego okno było aktywne, trzeba na nie najechać myszą.
Wyjść można jak z każdego terminala poleceniem exit.
Na razie wielkiego pożytku z serwera graficznego nie ma, ale u mnie już działa.
Ponieważ jedynym działąjącym w trybie graficznym programem ma być LinuxCNC, to nie ma na co czekać.
Ale najpierw kernel czasu rzeczywistego.
Kod: Zaznacz cały
apt-get install linux-image-2.6.32-122-rtai
Kod: Zaznacz cały
update-grub
Kod: Zaznacz cały
reboot
Kod: Zaznacz cały
uname -r
Ponieważ nie przewiduje się uruchamiania systemu z innym kernelem, po prawidłowym zainstalowaniu kernela rtai możemy usunąć kernel generic, czyli standardowy Ubuntu.
Standardowy kernel zajmuje bardzo dużo miejsca na dysku i na dodatek po odświeżaniu systemu przybywają jego nowsze wersje, a starsze pozostają.
Najpierw sprawdźmy jakie kernele są zainstalowane :
Kod: Zaznacz cały
ls /boot/vmlinuz*
Kod: Zaznacz cały
apt-get purge linux-image-2.6.32-24-generic
apt-get purge linux-image-2.6.32-45-generic
apt-get purge linux-image-generic
update-grub
Przy okazji restartu zgubiliśmy sieć.
Na razie po prostu powtórzmy :
Kod: Zaznacz cały
ifconfig eth0 192.168.0.77 up
route add default gw 192.168.0.1 eth0
Czas na LinuxCNC.
Kod: Zaznacz cały
apt-get -o Apt::Install-Recommends=true install linuxcnc
Kod: Zaznacz cały
xinit linuxcnc
LinuxCNC gada po polsku, tylko trzeba go poprosić :
Kod: Zaznacz cały
echo "LANG=pl_PL.UTF8" >> /etc/environment
echo "LANGUAGE=pl_PL:pl:en_GB:en" >> /etc/environment
Kod: Zaznacz cały
echo 'root_window.tk.call("wm","geometry",".","1920x1080")' > ~/.axisrc
A 1920x1080 bo ja akurat taki monitor mam podłączony.
LinuxCNC ma się włączać automatycznie po włączeniu komputera.
Najpierw pozbądźmy się logowania.
Kod: Zaznacz cały
apt-get install mingetty
Znajdujemy plik /etc/init/tty1.conf i linię
Kod: Zaznacz cały
exec /sbin/getty -8 38400 tty1
Kod: Zaznacz cały
exec /sbin/mingetty --autologin root tty1
Na razie logujemy się jako root, bo praktycznie tylko czynności administracyjne wykonujemy.
Oczywiście to jest sterownik maszyny i zapewne ktoś będzie chciał do jego obsługi zatrudnić szympansa.
Nic nie stoi na przeszkodzie, aby później utworzyć konto użytkownika bez żadnych uprawnień i automatycznie się na nie logować, wtedy małpa nigdzie nie będzie grzebać i niczego nie popsuje.
Zauważmy, że automatyczne logowanie dotyczy tylko pierwszej konsoli, tej na której uruchomi się LinuxCNC.
Na pozostałych konsolach nadal normalnie się logujemy.
Jeśli ktoś jeszcze nie wie, to konsole przełącza się <ctrl><alt><F1>, <ctrl><alt><F2> itd.
Zwykle okno graficzne jest pod <ctrl><alt><F7>, pierwsza wolna konsola może być <ctrl><alt><F1> albo jak tutaj pod <ctrl><alt><F2>
To dosyć ważne, bo jak już LinuxCNC się automatycznie otworzy, to nie będzie można go zamknąć bez zamknięcia systemu.
Chwilowo do czynności administracyjnych pozostanie nam konsola pod <ctrl><alt><F2>.
Żeby LinuxCNC otworzył się automatycznie i jego zamknięcie powodowało wyłączenie komputera, musimy trochę namieszać w pliku ~/.bashrc .
Docelowo LinuxCNC ma się otwierać ustawiony dla konkretnej maszyny.
Ponieważ pracować powinno się tylko na plikach w swoim domowym katalogu, to skopiujmy tam przykładowe konfiguracje dla symulatora
Kod: Zaznacz cały
mkdir ~/linuxcnc
mkdir ~/linuxcnc/configs
cp -dpR /usr/share/doc/linuxcnc/examples/sample-configs/sim ~/linuxcnc/configs
Kod: Zaznacz cały
if [ `tty` = "/dev/tty1" ]; then
xinit /usr/bin/linuxcnc ~/linuxcnc/configs/sim/axis/axis_mm.ini
sync
poweroff
fi
Znaczki wyglądają podobnie, ale tylko jedne działąją.
Na razie to tyle, dopieszczaniem zajmę się później.
Na koniec jeszcze dodam, że nie pisałem tego z pamięci, tylko w trakcie rzeczywistej instalacji i jeśli literówki gdzieś nie palnąłem, to jest to absolutnie do powtórzenia przez każdego.
.