Zaskakująco łatwo można dodać sterowniki do konwerterów USB-TTL opartych na chipsecie PL2303. Wystarczy pobrać archiwum osx-pl2303.kext.tgz http://www.xbsd.nl/2011/07/pl2303-serial-usb-on-osx-lion.html
PartKeepr na OSX
Zauważyłem, że w związku z coraz większą ilością części elektronicznych w moim “warsztacie” coraz słabiej orientuje się co mam na “stanie magazynowym”. Pomyślałem, że stworzę prymitywną bazę z prostym frontendem i będę tam wrzucał informacje o zakupach. Zanim przystąpiłem do działania sprawdziłem czy przypadkiem nie ma już takiego rozwiązania i okazało się, że jest http://www.partkeepr.org
Przy okazji znacznie wykraczające poza moje wymagania, postanowiłem tym razem nie wymyślać koła na nowo.
Instalacja na OSX na pewno nie należy do kategorii “agree, next, finish”.
Problem Bitlocker
Przyznam, że nigdy nie myślałem, że coś takiego może mi sie przydarzyć… ale jednak. Klucze do bitlockera miałem zapisane na karcie micro-SD włożonej do miniaturowego czytnika USB. W pewnym momencie pojawił się nowy element w pobliżu komputera w postaci drukarki, “głównej winowajczyjni” ;). Drukarka była niestety zbyt blisko czytnika i prawdopodobnie za którymś razem spowodowała jakieś większe przesunięcie się czytnika, co zakończyło się strukturą katalogów na karcie jak poniżej. Oczywiście mogłem to sprawdzić tylko na ja jakimś innym komputerze ponieważ komputer który zabezpieczała ta karta w ogóle nie miał zamiaru się z nią uruchomić.
“Aplikacja” dla OSX
Słowo aplikacja nie bez powodu jest w cudzysłowiu. Tak naprawdę to bash-owy skrypt umieszczony w odpowiedniej strukturze katalogowej wykorzystujący narzędzie Pashua. W sumie najbardziej mi odpowiada ten sposób ale pomyślałem sobie, że w ramach ćwiczeń spróbuje zrobić jak najprostsze ale w miarę funkcjonalne GUI do xfreerdp
. Stąd cała zabawa z Pashua.
Aplikacje w OSX są aplikacjami dzięki rozszerzeniu .app, tak naprawdę to katalog w którym są umieszczone pliki i zasoby niezbędne do działania programu. Moją “aplikację” postanowiłem nazwać “XFreerdp Client”. Jej zawartość wygląda następująco (“Show package content” z menu podręcznego):
Info.plist - to plik zawierający informacje o aplikacji. Zdefiniowana jest w nim nazwa pliku, który ma byc uruchomiony, ikony, wersji, architektury itp.
rdp_connect - to skrypt, który jest uruchamiany
rdp_connect_image.png - obraz który jest wyświetlany w oknie Pashua
rdp_connect.icns - ikona aplikacji Xfreerdp Client
Xfreerdp na szybko
Xfreerdp działa bardzo dobrze ale ma ten minus, że wymaga podania sporej ilości parametrów do każdego połączenia. Można “przegrepować” historię, wkleić linijkę do skryptu ale można też zrobić to tak:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
Powyższy kawałek kodu należy umieścić w .bash_profile
(o ile korzystamy właśnie z tego shell-a). Teraz, żeby połączyć się z hostem o nazwie workpc
wystarczy w terminalu wpisać rdp workpc
. Jak widać funkcja sprawdza czy jest uruchomiony serwer X oraz ustawiona zmienna DISPLAY
. Niezbyt eleganckie jest użycie polecenia sleep
ale Xquartz trochę się uruchamia…
SSH tips
Kilka usprawnień i wskazówek ułatwiających korzystanie z SSH.
Konfiguracja hostów zdalnych
Korzystanie z pliku ~/.ssh/config
ułatwia łączenie się ze zdalnymi hostami. Wystarczy wpisać ssh
, pierwszą literę hosta i wcisnąć klawisz ⇥ tab. Nie trzeba pamiętać o porcie, użytkowniku, parametrach połączenia. ForwardX11 yes
umożliwia uruchamianie aplikacji graficznych (oczywiście musimy mieć uruchomiony na kliencie serwer X-ów). Poniżej przykładowy plik:
Host centos-01
HostName 192.168.1.190
User itoutline
ForwardX11 yes
Host openwrt
Hostname 192.168.1.1
User root
Host appletv
Hostname 192.168.1.60
User root
Host workstation
Hostname 192.168.1.1
Port 8511
User itoutline
Automatyczne logowanie
Umieszczenie naszego klucza publicznego w pliku ~/.ssh/authorized_keys
na serwerze umożliwia zalogowanie się bez użycia hasła. Najpierw musimy wygenerować parę kluczy np.:
[itoutline@centos-01 ~]$ ssh-keygen -t rsa -C "itoutline@centos-01"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/itoutline/.ssh/id_rsa):
Created directory '/home/itoutline/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/itoutline/.ssh/id_rsa.
Your public key has been saved in /home/itoutline/.ssh/id_rsa.pub.
The key fingerprint is:
81:c4:99:69:cd:c5:39:d8:01:26:f7:bd:05:3a:bd:df itoutline@centos-01
The key's randomart image is:
+--[ RSA 2048]----+
| .o*+*oo. |
| .*=+.=+ . |
| .. . +.o . |
| . . + |
| S o |
| . . |
| . E|
| |
| |
+-----------------+
Niepodanie “passphrase” podczas generowania kluczy spowoduje, że zawsze będziemy mogli zalogować się na zdalnego hosta. Ma to jednak zasadniczy minus, ktoś kto zdobędzie nasz klucz prywatny zapisany w pliku /home/itoutline/.ssh/id_rsa
zaloguje się bezproblemowo wszędzie tam gdzie dodaliśmy nasz klucz publiczny do ~/.ssh/authorized_keys
. Trochę jak zapisanie hasła w pliku tekstowym…
Pozostaje skopiowanie klucza publiczngo na zdalny serwer, można to zrobić np. za pomocą ssh-copy-id
:
[itoutline@centos-01 ~]$ ssh-copy-id centos-03
The authenticity of host 'centos-03 (192.168.1.200)' can't be established.
RSA key fingerprint is 5b:85:ee:ee:d5:12:a3:f1:fe:10:5f:4d:66:f5:e5:7a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'centos-03' (RSA) to the list of known hosts.
itoutline@centos-03's password:
Now try logging into the machine, with "ssh 'centos-03'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
W przypadku kiedy ssh nasłuchuje na porcie innym niż standardowy można użyć polecenia
ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 2222 itoutline@centos-03"
Jeśli mamy więcej niż jeden klucz publiczny w katalogu ~/.ssh
warto podać jego nazwę (jak w ostatnim przykładzie) ponieważ ssh-copy-id
kopiuje wszystkie jakie znajdzie.
Jeśli na kliencie polecenie ssh-copy-id
jest niedostępne, można wykorzystać poniższego one-linera:
cat ~/.ssh/id_rsa.pub | ssh itoutline@centos-03 “mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys”
Jeśli zdecydujemy się na używanie “passphrase” z pomocą przyjdzie nam ssh-agent
, umożliwia on zapamiętanie naszego klucza prywatnego poświadczonego “passphrase” do czasu np. restartu hosta.
Przykładowy kod dodany do .bash_profile
lub .bashrc
załatwiający obsługę ssh-agent
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
Teraz kiedy po raz pierwszy zalogujemy się na centos-01, zobaczymy coś takiego:
[itoutline.sputnik: itoutline]$ ssh centos-01
Last login: Sun Mar 31 11:17:17 2013 from sputnik.local
Initialising new SSH agent...
succeeded
Enter passphrase for /home/itoutline/.ssh/id_rsa:
Identity added: /home/itoutline/.ssh/id_rsa (/home/itoutline/.ssh/id_rsa)
Wejście na centos-03 odbędzie się już bez podawania żadnych poświadczeń:
[itoutline@centos-01 ~]$ ssh centos-03
Last login: Sun Mar 31 11:20:40 2013 from centos-01.local
[itoutline@centos-03 ~]$
Modyfikacja “passphrase”
Następujące polecenie umożliwia dodanie, usunięcie lub zmianę “passphrase” w przypadku istniejących kluczy:
ssh-keygen -p -f $HOME/.ssh/id_rsa
[itoutline@centos-01 ~]$ ssh-keygen -p -f $HOME/.ssh/id_rsa
Enter old passphrase:
Key has comment '/home/itoutline/.ssh/id_rsa'
Enter new passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.
Uruchamianie aplikacji graficznych przez SSH
Na maszynach wirtualnych instaluję z reguły minimalną wersję systemu plus to co akurat chce sprawdzić. Rzadko kiedy pojawia się konieczność skorzystania z grafiki a jeśli już to wystarczy doinstalować tylko środowisko X. Dzięki czemu wirtualna maszyna jest “lżejsza”.
Nawiązanie sesji SSH ze wsparciem dla X-ów ssh -X centos-03
Po stronie serwera w konfiguracji /etc/ssh/sshd_config
musi znaleźć się linia X11Forwarding yes
Uruchomienie linuxowego kalkulatora na pulpicie OSX (XQuartz musi być zainstalowany i uruchomiony):
[itoutline.sputnik: itoutline]$ ssh -X centos-01
Last login: Sun Mar 31 15:08:49 2013 from sputnik.local
[itoutline@centos-01 ~]$ gcalctool &
Jeśli pojawia się poniższy problem:
(gcalctool:3141): Gtk-WARNING **: cannot open display:
Może oznaczać, że zmienna DISPLAY
na kliencie nie jest ustawiona, można to naprawić dodając poniższą linię do .bash_profile
lub .bashrc
export DISPLAY=:0
Unblock-us i Openwrt
Unblock-us.com to serwis, który umożliwia dostęp do usług posiadających ograniczenia regionalne podczas gdy jesteśmy akurat za granicą. Jest o tyle lepszy od rozwiązań opartych na VPN, że nie musimy niczego instalować i prędkość naszego połączenia nie jest ograniczona jak to ma zazwyczaj miejsce w przypadku dostawców rozwiązań VPN.
W przypadku OpenWrt konfiguracja jest bardzo prosta (oczywiście to nie jedyny sposób, ale właśnie z tą metodą nigdy nie miałem problemów). Tworzymy nowy plik zawierający informację o serwerach DNS i umieszczamy w nim wpisy związane z Unblock-us.com np. /etc/my_resolv.conf
:
# Interface lan
nameserver 184.106.242.193
nameserver 208.122.23.23
nameserver 208.122.23.22
# Interface wan
nameserver 184.106.242.193
nameserver 208.122.23.23
nameserver 208.122.23.22
Następnie modyfikujemy plik /etc/config/dhcp
, komentujemy linię zawierającą dane oryginalnego pliku i dodajemy nasz:
#option resolvfile '/tmp/resolv.conf.auto';
option resolvfile '/etc/my_resolv.conf';
Archlinux na Raspberry Pi
W końcu do mnie dotarł Raspberry Pi. Instalacja Archlinuxa, co do którego nie jestem jeszcze przekonany z uwagi na to, że “prawie wszystko jest inaczej” wyglądała następująco.
Przygotowanie karty SD. Znalazłem jakąś kartę 4GB, image Archlinuxa na stronie http://www.raspberrypi.org/downloads ma 2GB w związku z czym trzeba się pobawić parted
, którego na OSX nie ma. Nie wnikałem już czy da się przygotować kartę na OSX z wiadomych względów, czas naglił. Całość przygotowania karty przeprowadziłem na CentOS
Pobranie obrazu:
wget http://downloads.raspberrypi.org/images/archlinuxarm/archlinux-hf-2012-09-18/archlinux-hf-2012-09-18.zip
Wypakowanie:
unzip archlinux-hf-2012-09-18.zip
Sprawdzenie w jaki sposób karta pojawiła się w systemie. Po włożeniu karty do slotu SD należy wydać polecenie:
dmesg | tail -15
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usb-storage: device found at 3
usb-storage: waiting for device to settle before scanning
usb-storage: device scan complete
scsi 8:0:0:0: Direct-Access APPLE SD Card Reader 2.00 PQ: 0 ANSI: 0
sd 8:0:0:0: Attached scsi generic sg2 type 0
sd 8:0:0:0: [sdb] 8040448 512-byte logical blocks: (4.11 GB/3.83 GiB)
sd 8:0:0:0: [sdb] Write Protect is off
sd 8:0:0:0: [sdb] Mode Sense: 0b 00 00 08
sd 8:0:0:0: [sdb] Assuming drive cache: write through
sd 8:0:0:0: [sdb] Assuming drive cache: write through
sdb: sdb1
sd 8:0:0:0: [sdb] Assuming drive cache: write through
sd 8:0:0:0: [sdb] Attached SCSI removable disk
Ponieważ uruchamiam CentOSa w init 3
automontowanie jak widać nie działa df
:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vg_centos01-lv_root
100670904 2620032 97028396 3% /
tmpfs 508396 0 508396 0% /dev/shm
/dev/sda1 495844 56404 413840 12% /boot
none 4294967296 0 4294967296 0% /media/psf
I bardzo dobrze ;), można zapisywać obraz na kartę:
sudo dd bs=4M if=archlinux-hf-2012-09-18.img of=/dev/sdb
471+1 records in
471+1 records out
1977614336 bytes (2.0 GB) copied, 120.311 s, 16.4 MB/s
Bardzo ważne jest, żeby podać właściwą nazwę dysku ponieważ powyższym poleceniem można uszkodzić system na którym karta jest przygotowywana. Jak widać u mnie karta zamontowała się jako sdb
Zmiana rozmiaru partycji root
sudo parted /dev/sdb
GNU Parted 2.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit chs
(parted) print
Model: APPLE SD Card Reader (scsi)
Disk /dev/sdb: 500,126,9
Sector size (logical/physical): 512B/512B
BIOS cylinder,head,sector geometry: 500,255,63. Each cylinder is 8225kB.
Partition Table: msdos
Number Start End Type File system Flags
1 0,32,32 12,28,15 primary fat16 boot, lba
2 12,28,16 240,109,60 primary ext4
(parted) rm 2
(parted) mkpart primary 12,28,16 500,126,8
Polecenie unit chs
wyświetla informacje o zajętości przestrzeni na dysku w formacie “cylinders, heads, sectors”. Polecenie print
wyświetla tablice partycji. rm 2
usuwa drugą partycję, jest usuwana tylko informacja o partycji a nie dane jakie się na niej znajdują. Polecenie mkpart primary 12,28,16 500,126,8
zakłada ponownie partycję zaczynającą się w tym samym miejscu ale kończącą na przedostatnim sektorze dysku (karty SD).
Sprawdzenie poprawności struktury systemu plików:
sudo e2fsck -f /dev/sdb2
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb2: 32513/114688 files (0.0% non-contiguous), 110601/458496 blocks
Rozszerzenie wielkości partycji do zadeklarowanej w tablicy partycji:
sudo resize2fs /dev/sdb2
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/sdb2 to 980735 (4k) blocks.
The filesystem on /dev/sdb2 is now 980735 blocks long.
To wszystko, można umieszczać kartę w Raspberry Pi
Parallels Desktop tips
Kilka użytecznych poleceń usprawniających prace z Parallels Desktop
Wylistowanie wszystkich wirtualnych maszyn:
prlctl list -a
UUID STATUS IP_ADDR NAME
{8XXX3dd4-9f0b-406b-a5bc-XXXXXXXXXXXX} stopped - CentOS-01
{8XXXa248-def7-4f3e-8405-XXXXXXXXXXXX} stopped - CentOS-03
{eXXX4b67-f98b-4bc9-a9a8-XXXXXXXXXXXX} stopped - Mac OS X
{5XXXe2ef-786b-4873-a5aa-XXXXXXXXXXXX} suspended - Windows 8
{4XXX3137-7fb3-4ec9-a7fa-XXXXXXXXXXXX} suspended - Windows XP
Wylistowanie parametrów konkretnej maszyny:
prlctl list -i CentOS-01
Uruchomienie wirtualnej maszyny:
prlctl start CentOS-01
Wyłączenie wirtualnej maszyny:
prlctl stop CentOS-01
Użycie przełącznika --kill
wymusi zamknięcie maszyny, która nie odpowiada.
Restart:
prlctl reset CentOS-01
Przejście w stan uśpienia:
prlctl suspend CentOS-01
Suspending the VM...
The VM has been successfully suspended.
Wyjście ze stanu uśpienia:
prlctl resume CentOS-01
Wykonanie szablonu wirtualnej maszyny:
prlctl clone CentOS-01 --name CentOS --template
Clone the CentOS-01 VM to VM template CentOS...
Operation progress 88%
The VM has been successfully cloned.
Utworzenie nowej wirtualnej maszyny z wcześniej przygotowanego szablonu:
prlctl create CentOS-05 --ostemplate CentOS
Creating the VM on the basis of the CentOS template...
Clone the CentOS VM to VM CentOS-05...
Operation progress 88%
The VM has been successfully cloned.
Klonowanie, czyli stworzenie kopii istniejącej maszyny:
prlctl clone CentOS-10 --name CentOS-10-clon
Clone the CentOS-10 VM to VM CentOS-10-clon...
Operation progress 88%
The VM has been successfully cloned.
Jak już wspominałem, wykorzystując prlctl start VM_NAME
maszyna uruchomi się w tle bez GUI Parallels. Czasami jednak chcemy coś do niej podłączyć, można to zrobić również z konsoli. Wylistowanie dostępnych urządzeń USB:
prlsrvctl usb list
Apple FaceTime HD Camera (Built-in) '1a110000|05ac|8510|high|--|XXXXXX8M1XXXC8C0'
Apple Internal Memory Card Reader '1d183000|05ac|8404|high|--|0000000XXXXX'
Apple Internal Keyboard / Trackpad '1d182000|05ac|024c|full|KM|Empty'
Apple Bluetooth USB Host Controller '1d181300|05ac|821f|full|--|Empty'
Patriot Memory '1a120000|13fe|3100|high|--|07XX6XXXXX'
StoreJet Transcend '14a10000|174c|5106|super|--|S2SXXXXXX209'
Flash Disk '1a120000|090c|1000|high|--|FBXXXXXXXX000141'
Logitech Illuminated Keyboard '14200000|046d|c318|full|KM|Empty'
JTAGICE mkII '14200000|03eb|2103|full|PR|00B000XXXXXXX'
FT232R USB UART '14100000|0403|6001|full|PR|AXXXXX'
USB Flash Memory '1d110000|0930|6544|high|--|001422XXXXXXXXXX'
Apple - Composite '1d181100|05ac|820a|full|--|Empty'
Podłączenie czytnika kart SD do wirtualnej maszyny:
prlctl set CentOS-01 --device-connect "Apple Internal Memory Card Reader"
Odłączenie:
prlctl set CentOS-01 --device-disconnect "Apple Internal Memory Card Reader"
Podłączenie/odłączenie adaptera sieciowego:
prlctl set "CentOS-01" --device-connect "Apple USB Ethernet Adapter"
prlctl set "CentOS-01" --device-disconnect "Apple USB Ethernet Adapter"
Jeśli nasza maszyna korzysta z DHCP i interfejs sieciowy ma skonfigurowany w trybie bridge to niekoniecznie musimy wiedzieć jaki dostała adres kiedy korzystamy z “obcej” sieci. Oczywiście można uruchomić Parallels Desktop, dostać się do konsoli i podejrzeć. Można też wykonać polecenie na wirtualnej maszynie bez uruchamiania GUI.
prlctl exec "CentOS-01" ifconfig
W ten sposób możemy wykonywać dowolne polecenia. Innym ciekawym sposobem jest po prostu bezpośredni dostęp do konsoli:
prlctl enter Windows\ XP
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\>dir
dir
Volume in drive C has no label.
Volume Serial Number is 08BC-EDC8
Directory of C:\
10/05/2012 02:43 PM 0 AUTOEXEC.BAT
10/05/2012 02:43 PM 0 CONFIG.SYS
10/05/2012 01:43 PM <DIR> Documents and Settings
10/05/2012 02:45 PM <DIR> Program Files
10/05/2012 02:49 PM <DIR> WINDOWS
2 File(s) 0 bytes
3 Dir(s) 103,939,588,096 bytes free
C:\>
prlctl enter CentOS-01
-bash-4.1# uname -a
Linux centos-01.local 2.6.32-279.5.2.el6.x86_64 #1 SMP Fri Aug 24 01:07:11 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
-bash-4.1#
Wykonania zrzutu ekranu z wirtualnej maszyny:
prlctl capture CentOS-01 --file login_screen.png
Konwersja dysku wirtualnego do typu “plain” (zostanie wykorzystana cała przestrzeń na dysku fizycznym zadeklarowana na dysk wirtualny) z podziałem na 2GB części. Przyznam, że raczej to mało pożyteczne polecenie, może tylko ma sens kiedy nie chcemy się zaskoczyć nagłym brakiem miejsca na dysku fizycznym w związku z rozrostem dysków wirtualnych. Możliwe, że ma też wpływ na wydajność maszyn wirtualnych… być może na produkcyjnych maszynach warto ustawiać ten tryb
prl_disk_tool convert --plain --split --hdd /Users/norbert/Documents/Parallels/CentOS-01.pvm/CentOS-01-0.hdd
Np. tak wyglądał katalog dysku przed powyższą operacją, dysk był ustawiony na 100GB w trybie “expandable”, bez podziału na 2GB części
[norbert.macair: CentOS-01-0.hdd]$ ll
total 3.8G
-rw------- 1 norbert staff 0 Sep 21 01:21 CentOS-01-0.hdd
-rw------- 1 norbert staff 2.8G Sep 21 02:01 CentOS-01-0.hdd.0.{39a46e95-08c5-414c-bc03-6581f77b6dda}.hds
-rw------- 1 norbert staff 988M Oct 14 14:11 CentOS-01-0.hdd.0.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw------- 1 norbert staff 14K Oct 14 13:09 CentOS-01-0.hdd.drh
-rw------- 1 norbert staff 1.9K Sep 21 02:01 DiskDescriptor.xml
-rw------- 1 norbert staff 1.5K Sep 21 01:47 DiskDescriptor.xml.Backup
Po zabiegu, zajmujemy niepotrzebnie ponad 95GB
[norbert.macair: CentOS-01-0.hdd]$ ll
total 101G
-rw-r--r-- 1 norbert staff 0 Oct 14 14:29 CentOS-01-0.hdd
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:25 CentOS-01-0.hdd.copy.0.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:25 CentOS-01-0.hdd.copy.1.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:26 CentOS-01-0.hdd.copy.10.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:26 CentOS-01-0.hdd.copy.11.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:26 CentOS-01-0.hdd.copy.12.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:26 CentOS-01-0.hdd.copy.13.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:26 CentOS-01-0.hdd.copy.14.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:26 CentOS-01-0.hdd.copy.15.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:27 CentOS-01-0.hdd.copy.16.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:27 CentOS-01-0.hdd.copy.17.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:27 CentOS-01-0.hdd.copy.18.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:27 CentOS-01-0.hdd.copy.19.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:25 CentOS-01-0.hdd.copy.2.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:27 CentOS-01-0.hdd.copy.20.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:27 CentOS-01-0.hdd.copy.21.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:27 CentOS-01-0.hdd.copy.22.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:27 CentOS-01-0.hdd.copy.23.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:27 CentOS-01-0.hdd.copy.24.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:27 CentOS-01-0.hdd.copy.25.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:27 CentOS-01-0.hdd.copy.26.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:27 CentOS-01-0.hdd.copy.27.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:27 CentOS-01-0.hdd.copy.28.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:28 CentOS-01-0.hdd.copy.29.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:26 CentOS-01-0.hdd.copy.3.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:28 CentOS-01-0.hdd.copy.30.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:28 CentOS-01-0.hdd.copy.31.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:28 CentOS-01-0.hdd.copy.32.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:28 CentOS-01-0.hdd.copy.33.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:28 CentOS-01-0.hdd.copy.34.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:28 CentOS-01-0.hdd.copy.35.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:28 CentOS-01-0.hdd.copy.36.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:28 CentOS-01-0.hdd.copy.37.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:28 CentOS-01-0.hdd.copy.38.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:28 CentOS-01-0.hdd.copy.39.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:26 CentOS-01-0.hdd.copy.4.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:28 CentOS-01-0.hdd.copy.40.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:28 CentOS-01-0.hdd.copy.41.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:29 CentOS-01-0.hdd.copy.42.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:29 CentOS-01-0.hdd.copy.43.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:29 CentOS-01-0.hdd.copy.44.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:29 CentOS-01-0.hdd.copy.45.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:29 CentOS-01-0.hdd.copy.46.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:29 CentOS-01-0.hdd.copy.47.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:29 CentOS-01-0.hdd.copy.48.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:29 CentOS-01-0.hdd.copy.49.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:26 CentOS-01-0.hdd.copy.5.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:29 CentOS-01-0.hdd.copy.50.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:29 CentOS-01-0.hdd.copy.51.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 1.1G Oct 14 14:29 CentOS-01-0.hdd.copy.52.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:26 CentOS-01-0.hdd.copy.6.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:26 CentOS-01-0.hdd.copy.7.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:26 CentOS-01-0.hdd.copy.8.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-r--r-- 1 norbert staff 2.0G Oct 14 14:26 CentOS-01-0.hdd.copy.9.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds
-rw-rw-rw- 1 norbert staff 0 Oct 14 14:20 CentOS-01-0.hdd.copy.hdd
-rw-r--r-- 1 norbert staff 21K Oct 14 14:25 DiskDescriptor.xml
-rw-r--r-- 1 norbert staff 21K Oct 14 14:25 DiskDescriptor.xml.Backup
Powrót do dysku w trybie “expandable”:
prl_disk_tool convert --expanding --split --hdd /Users/norbert/Documents/Parallels/CentOS-01.pvm/CentOS-01-0.hdd
Mała uwaga, u mnie zabawa w konwersje zakończyła się komunikatem:
Not enough free space on the physical disk to complete the operation.
Dlatego warto się upewnić, że kiedy dysk nam “spuchnie” to będziemy mieć drugie tyle miejsca na jego odchudzanie albo pod ręką jakiś w miarę szybki dysk na którym będzie można tą operację wykonać
Rozszerzenie wirtualnego dysku:
prl_disk_tool resize --size 105G --split --hdd /Users/norbert/Documents/Parallels/CentOS-01.pvm/CentOS-01-0.hdd
Powyższe polecenie nie zawsze zwiększy od razu przestrzeń dostępną w wirtualnej maszynie, w zależności od systemu jaki na niej jest może być konieczne użycie narzędzi dyskowych systemu gościa. Dlatego najlepiej od razu definiować całkiem duży dysk w trybie “expandable” z podziałem dysku wirtualnego na 2GB części.
CentOS na Parallels
Wirtualizacja to jedna z technologii, jakie zdecydowanie podniosły komfort pracy wielu osobom. Pomijam oszczędności wynikające z lepszej utylizacji sprzętu, ale kiedy przypomnę sobie jak kiedyś przygotowywałem się do egzaminów MS ze stertą blaszaków stojących jeden na drugim, to do tej pory przechodzą mnie dreszcze. Olbrzymia strata czasu. Teraz mając 16GB pamięci można sobie postawić całkiem rozbudowane środowisko, testować, robić snapshoty i co tam dusza zapragnie.
Właśnie skończyłem instalować CentOS-a na Parallels. Poniżej kilka kroków, jakie zazwyczaj wykonuje po tej opercji.
Dodanie uzytkownika do sudoers
. Przechodzimy na root-a su -
i uruchamiamy edytor visudo
następnie dopisujemy swojego użytkownika, poniżej root-a np.
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
norbert ALL=(ALL) ALL
Instalacja Paralles Tools. Jeśli jest zamontowana płyta instalacyjna CentOS należy ją odmontować, a następnie z menu wybieramy “Virtual Machine” i “Install Paralles Tools…”, potem
cd /media/Parallels\ Tools/
sudo ./install
Później wybieramy tylko kilka razy “Next” i restartujemy maszynę.
Ustawienie nazwy hosta, vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=centos-02.local
Ustawienie automatycznego uruchamiania ssh i jego uruchomienie
sudo chkconfig sshd on
sudo service sshd start
Włączenie automatycznego logowania, vi /etc/gdm/custom.conf
[daemon]
AutomaticLoginEnable=true
AutomaticLogin=norbert
Wyłączenie wygaszacza ekranu, dzięki któremu maszyna nie będzie automatycznie blokowana.
sudo gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type bool --set /apps/gnome-screensaver/idle_activation_enabled false
Uruchamianie maszyny w trybie tekstowym, zazwyczaj nie potrzebuje interfejsu graficznego. Edycja vi /etc/inittab
, zmiana wartości id
na 3
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
Parallels ma bardzo pożyteczne polecenie prlctl
. Wylistowanie wszystkich zainstalowanych maszyn wirtualnych prlctl list -a
Uruchomienie maszyny to prlctl start CentOS-01
To co jest najlepsze w powyższym poleceniu to to, że wirtualna maszyna uruchamiana jest w tle i nie pojawia się okno aplikacji Parallels. Do maszyny można się dostać np. przez ssh, jak dla mnie to rewelacja.
Bardzo mile zaskakuje całkiem niskie obciążenie systemu. Przy uruchomionych czterech maszynach wirtualnych 2xCentOS w trybie graficznym z dysku USB 3.0 (pomarańczowa strzałka), 1xCentOS w trybie tekstowym (zielona), 1xOSX Mountain Lion (niebieska) zajętość procesora sięga tylko ok. 10%. Na systemach nic się nie dzieje, jest tylko zalogowany użytkownik ale i tak wydaje mi się, że to całkiem nieźle. Tym bardziej, że to MBA. Jak widać jeśli nie potrzebujemy grafiki to warto uruchamiać wirtualne OS-y w trybie tekstowym na co wskazuje zielona strzałka.