Wspominałem już o super tajnym projekcie. Czas nadszedł aby ogłosić iż po kilku miesiącach, lub stosując oficjalne miary czasu kilkudziesięciu tygodniach Nasz fork uznał iż gotów jest do odłączenia od procesu macierzystego i tem samem zainicjowania własnego procesu o PID=1.
Ponieważ jakby nie było eksperymentalny projekt wymagał wydania publicznego release, bez żadnych wersji beta, czy nawet Release Candidate, przygotował się cwaniak i ostateczna kompilacja jądra nowego systemu trwała, trwała i trwała... pewnie on też na Żętoo, ale co zrobić, jaki ojciec ... :D
Tak czy siak i prostymi słowy dziś około godziny 4:30 CEST po ~41 tygodniach od zainicjowania i około 7h walki z przeznaczeniem na ziemi pojawił się Staś.
Z kronikarskiego obowiązku jeszcze może...
New geek Staś() {
Staś.BirthDate => '25-06-2007';
Staś.BirthTime => '4:25';
Staś.BirthUnixTimestamp => '1182738300';
Staś.BirthWeight => '2,67 kg';
Staś.BirthLength => 'tata nie mówił, że nie ma sklerozy ;-)';
Staś.AvPoints => '9/10';
}
Nie urodził się o dziwo z dystrybucją linuksa w łapce, nie wygląda też na szczęście jak Mozilla, ale jednego możecie być pewni...
Staś Wam jeszcze pokaże!!! :)
A teraz Panie i Panowie! ZDROWIE STASIA!!!
P.S. Nie wyspany acz szczęśliwy jak nie wiadomo co Tato oddaje wszelkie możliwe honory wszystkim Mamom tego świata. Każdy facet wie, że sprawa nie jest trywialna, ale nowy Tato już wie jak bardzo nie jest! Uszanowanie Wszystkim Mamom!
Winda to jednak pożera miejsce na dysku. Mój windows na Qemu postawiłem na obrazie dysku o rozmiarze 4GB, na razie nie zainstalowałem niczego poza aktualizacjami windowsów (nie wszystkimi jeszcze), a system zgłosił, że mu się miejsce kończy. Kłopot polega na tym, że obraz dysku w formacie qcow2 nie pozwala na zmianę rozmiaru dysku/partycji. Trzeba więc było wymyślić workaround.
Zacznijmy od skopiowania istniejącego obrazu dysku tak na wszelki wypadek i upewnienia się, że mamy do czynienia z obrazem w formacie qcow2, jeśli tak (a tak ;-) ) to przekonwertujmy go do formatru raw:
$ cp winda.img WindowsXP_HE_SP2_updated.img
$ qemu-img info winda.img
image: winda.img
file format: qcow2
virtual size: 4.0G (4294967296 bytes)
disk size: 3.6G
cluster_size: 4096
$ qemu-img convert -f qcow2 winda.img -O raw winda.raw
$ qemu-img info winda.raw
image: winda.raw
file format: raw
virtual size: 4.0G (4294967296 bytes)
disk size: 3.5G
Warto teraz zabootować Windows z nowego obrazu dysku, ot tak, żeby sprawdzić czy wszystko gra. Jeśli tak powiększmy obraz do rozmiaru 10GB dopisując po prostu zera na końcu pliku za pomocą komendy dd. W parametrze bs podajemy ilość dodawanych jednorazowo bajtów, w parametrze seek docelowy rozmiar dysku (10GB = 10*1024*1024*1024 = 10737418240) podzielony przez 512 czyli 20971520.
dd if=/dev/zero of=winda.raw bs=512 count=0 seek=20971520
Uzyskaliśmy w ten sposób 10GB dysk z partycją 4GB (z zainstalowanymi windowsami) co łatwo sprawdzić:
$ qemu-img info winda.raw
image: winda.raw
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 3.5G
$ su -c "fdisk -l winda.raw"
Password:
You must set cylinders.
You can do this from the extra functions menu.
Disk winda.raw: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
winda.raw1 * 1 521 4184901 7 HPFS/NTFS
Dla chętnych sprawdzania co krok czy wszystko śmiga pozostaje odpalenie windowsa z nowego powiększonego obrazu dysku, cała reszta wierzy, że wszystko śmiga i czas powiększyć partycję. Oczywiście za pomocą qemu i gparted LiveCD.
$ qemu -m 256 -cdrom gparted-livecd-0.3.4-7.iso -hda winda.raw -boot d -localtime
Po kilku kliknięciach uzyskujemy to o co chodziło czyli:
$ su -c "fdisk -l winda.raw"
Password:
You must set cylinders.
You can do this from the extra functions menu.
Disk winda.raw: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
winda.raw1 * 1 1305 10482381 7 HPFS/NTFS
Partition 1 has different physical/logical endings:
phys=(1023, 254, 63) logical=(1304, 254, 63)
Na koniec konwertujemy obraz spowrotem do formatu qcow2 aby oszczędzić miejsce na dysku (plik obrazu w formacie qcow2 rośnie wraz z zapełnianiem się wirtualnego dysku.) i teraz już kategorycznie bootujemy system aby sprawdzić czy wszystko hula jak należy, windows uruchomi teraz sprawdzanie dysku zdziwiony, że miejsca jest jak gdyby więcej ;-).
$ qemu-img convert -f raw winda.raw -O qcow2 WindowsXP.qcow2
$ ls -lh [wW]*
-rw-r--r-- 1 wariat wariat 3,6G cze 21 12:28 winda.img
-rw-r--r-- 1 wariat wariat 10G cze 21 15:19 winda.raw
-rw-r--r-- 1 wariat wariat 1,3G cze 12 23:38 WindowsXP_HE_SP1_Registered.img
-rw-r--r-- 1 wariat wariat 3,6G cze 21 12:34 WindowsXP_HE_SP2_updated.img
-rw-r--r-- 1 wariat wariat 2,4G cze 14 12:43 WindowsXP_HE_updated.img
-rw-r--r-- 1 wariat wariat 3,6G cze 21 15:46 WindowsXP.qcow2
$ qemu -m 256 -hda WindowsXP.qcow2 -boot c -localtime
Na koniec znów kilka obrazków ;-)
W związku ze zbliżającym się dużym wydarzeniem przyspieszyliśmy ostro z remontem mieszkania, czego skutkiem jest to, że mieszkamy już u siebie i ... jesteśmy offline. No prawie bo po kilku godzinach nierównej walki działa połączenie po GPRS via Bluetooth. Oczywiście jak to u mnie nie działa tak jak bym chciał i jak mogłoby działać, ale o tym innym razem.
Tak czy siak trzeba się do sieci podłączyć i tu zaczynają się schody, dylematy i co tylko.
Do wyboru jest właściwie telekomuna i ... telekomuna, łącze od Netii via kabel od telekomuny niby też jest rozwiązaniem ale jakoś boję się, że gdyby coś to jedni będą zwalać na drugich, a ja będę offline. W pierwszym odruchu myślałem tylko o DSL bo stałe IP wygodna sprawa, tylko ... 250kbps za 96zł/miesiąc, 500kbps za 108zł/miesiąc. Drogo i na dodatek powoli. Długo przy tej opcji obstawałem, ale ostatecznie uległem sile argumentów i zdecydowałem się na neostradę, 1Mbps w neo za 56zł na miesiąc jest do wytrzymania. I już byłem zadowolony z dokonanego wyboru kiedy pojawił się naprawdę trudny do przeskoczenia problem. Modem... jaki modem wybrać, bo mają pięć Innymi słowy... I need help folks!. Dostępne są następujące możliwości:
Kolejny problem (już jak będzie sieć) z którym przyjdzie mi się zmierzyć do DynDNS, i tu będę szukał podpowiedzi co do tego gdzie u kogo załatwić. Chodzi mi o przekierowanie mojej własnej domeny, nie aliasa do domeny usługodawcy, tak żeby działało https?|s?ftp|pop3|smtp|imap|ssh|xmpp ... a najlepiej, żeby wszystko działało ;-). I pewnie następne dylematy w przyszłości. Ale na ten teraz jest pytanie. Czy wybór modemu ma jakieś znaczenie i jeśli tak to który.
Winda na wirtualnym komputerze nadal się aktualizuje, przed chwilą wyskoczyło jakieś sprawdzanie legalności czy coś, pogrzebało pomieliło ... i na koniec wyświetliło mi stronkę z korzyściami płynącymi z używania legalnego oprogramowania, czyli de facto ofertę jakiegoś softu, kursów i itp.
Kliknąłem Wyświetl wszystkie Bezpłatne oferty
, jedna z nich to:
TopSecret Next Generation Nowy, pełny, 90 dniowy, profesjonalny program szyfrujący f-my G DATA software...Za darmo, i w dodatku pełna 90 dniowa wersja ... ehhh te zalety używani alegalnego oprogramowania :D
Cztery dni (jasne, że nie całe :D) trwała wojenka wariat vs Windows on qemu. Efekty wciąż takie jak na początku, czyli wszystko niby działa, ale nie do końca i to wystarczy, Windows się instaluje, ale nie zakłada konta użytkownika, przez co nie można się zalogować. Próba zalogowania się w trybie awaryjnym na konto Administrator z pustym hasłem daje rezultat w postaci "krytyczny wyjątek, explorer.exe czy wysłać informację o awarii?" - oczywiście nie omieszkałem wysłać, a co :D.
Ale jest przełom! I ostatecznie działa!
Po pierwsze wychodzi na to, że kqemu jest nie do końca opcjonalny, bo bez niego nie daje rady. Dlaczego? Trudno powiedzieć obserwacje ostatnich dni wskazują, że nie wszystkie pliki są kopiowane z płyty instalacyjnej. Użycie modułu kqemu problem zdaje się rozwiązywać, być może bez tego wsparcia virtualny PC ma za mało pary aby podołac instalce windows :D.
Poza tym uświadomiłem sobie, że instaluję Microsoft Windows, a nie jakieś bele co, podjąłem więc specjalne środki ostrożności przypominające mi czasy małego Atari, magnetofonu Kasprzak z adapterem do Atari SIO i sytuację wczytywania gry Gauntlet (cała kaseta C-60, po jednej stronie gra, po drugiej poziomy) - bokiem kompletnie nie pamiętam o czym była ta gra, ale to, że aby zagrać trzeba było poczekać pół godziny chodząc po pokoju na palcach wystarczyło, aby mój porypany mózg zakodował nazwę :D.
Tak więc:
# echo 1024 > /proc/sys/dev/rtc/max-user-freq
# modprobe -v kqemu
insmod /lib/modules/2.6.20-gentoo-r8/misc/kqemu.ko major=0
$ qemu-img create -f qcow2 winda.img 4G
Formating 'winda.img', fmt=qcow2, size=4194304 kB
$ qemu -cdrom /dev/hdc -hda winda.img -boot d -localtime -no-reboot
$ cp winda.img winda-stage1.img
$ qemu -cdrom /dev/hdc -hda winda.img -boot c -localtime -no-reboot
$ cp winda.img winda-stage2.img
Pozostało ostatnie uruchomienie (część która nie działała), gdzie założymy konto użyszkodnika i takie cuda.
$ qemu -cdrom /dev/hdc -hda winda.img -boot c -localtime -no-reboot
Sprawdzamy czy sieć działa (powinna) pingując adres 10.0.2.2 ( można też włączyć eksplozjator internetu, dają go w komplecie ;-) ), jeśli odpowiada, wszystko powinno być ok i można kliknąć w kluczyki od Aktywacji windows.
Po zakończeniu aktualizacji Windows, a przed zainstalowaniem czegokolwiek warto zrobić kolejną kopię obrazu dysku, co znacznie skróci czas w przypadku konieczności wykonania format c:/
.
Co dalej? Myślę, że po aktualizacji systemu warto zabrać się za odpalenie sieci w wposób bardziej normalny, tak aby zasoby wirtualnego PCta było widać po Sambie w systemie właściwym i tyle.
Na koniec tymczasowy skrypt startowy, jeśli okaże się ostatecznie, że Windows na qemu spełnia pokładane w nim nadzieje, zrobi się to porządnie, a do tego czasu niech jest trochę dziwnie.
start-win.sh
#!/bin/bash
lsmod | grep kqemu || su -c "modprobe -v kqemu"
if [ -z $(grep 1024 /proc/sys/dev/rtc/max-user-freq) ]
then
su -c "echo 1024 > /proc/sys/dev/rtc/max-user-freq"
fi
qemu -m 256 -hda winda.img -boot c -localtime -no-reboot
i jeszcze kilka obrazków.
P.S. W komentarzu do poprzedniego wpisu Michał Górny zwraca uwagę na to, że istnieje już od jakiegoś czasu eselect-compiler zastępujący gcc-config w zadaniu zmiany aktualnie używanej wersji gcc. Istnieje i można użyć, ale jest jak na razie wciąż zamaskowany, czyli nie przewidziany do użytku dla ZU. Ale oczywiście można, choć eselect uprości zadanie w sposób raczej nieznaczny, a w przyszłości należy liczyć, że qemu będzie się kompilowało na nowym gcc, lub przynajmniej ebuild sam zajmie się kombinowaniem.
P.S.2 TrackBack jako PingBack? Da się?
Od dłuższego czasu chciałem się przyjrzeć qemu i postawić gdzieś windowsa który może się przydać jak się skrypty w firmie wysypią lub zaczną wymagać poprawek. Co mnie powstrzymywało to konieczność kompilowania qemu za pomocą starego gcc-3.3.6. Plan był taki, że spróbuję, jak będę naprawdę potrzebował windy, lub kiedy w końcu cudactwo zacznie się kompilować nowym gcc.
Stało się jeszcze inaczej (i dobrze, bo na razie winda nie chce współpracować), upgradeowałem Sun java do wersji 1.6, który również kompilować się chce tylko starym gcc (co za świat :D). Java problem załatwia sama (przełącza się na stare gcc i z powrotem na nowe po kompilacji), z qemu trzeba ręcznie.
No bo to tak:
coyote ~ # emerge -avD qemu
* qemu requires gcc-3 in order to build and work correctly
* please compile it switching to gcc-3.
* We are aware that qemu can guess a gcc-3 but this feature
* could be harmful.
Czemu się dziwimy (ebuild od java jakoś umie sam), ale się nie poddajemy i przełączamy gcc.
coyote ~ # gcc-config -l
[1] i686-pc-linux-gnu-3.3.6
[2] i686-pc-linux-gnu-4.1.2 *
coyote ~ # gcc-config i686-pc-linux-gnu-3.3.6
* Switching native-compiler to i686-pc-linux-gnu-3.3.6 ...
>>> Regenerating /etc/ld.so.cache... [ ok ]
* If you intend to use the gcc from the new profile in an already
* running shell, please remember to do:
* # source /etc/profile
coyote ~ # source /etc/profile
i mergujemy raz jeszcze, po czym przywracamy domyślne (nowe) gcc
coyote ~ # -avD qemu
coyote ~ # gcc-config -l
[1] i686-pc-linux-gnu-3.3.6 *
[2] i686-pc-linux-gnu-4.1.2
coyote ~ # gcc-config i686-pc-linux-gnu-4.1.2
* Switching native-compiler to i686-pc-linux-gnu-4.1.2 ...
>>> Regenerating /etc/ld.so.cache... [ ok ]
* If you intend to use the gcc from the new profile in an already
* running shell, please remember to do:
* # source /etc/profile
coyote ~ # source /etc/profile
coyote ~ # gcc-config -l
[1] i686-pc-linux-gnu-3.3.6
[2] i686-pc-linux-gnu-4.1.2 *
Trzeba to przetestować!
najłatwiej jakimś LiveCD, i najlepiej żeby to LiveCD było małe, tak małe jak Damn Small Linux.
$ qemu -cdrom dsl-3.3.iso -boot d -smp 2 -m 512
I co teraz, siedzę w firmie, jak to przetestować? Zciągnąłem z netu Damn Small Linux
$ qemu -cdrom dsl-3.3.iso -boot d -smp 2 -m 512
i już po chwili banan zaczyna się pojawiać na gębie bo zaczęło wykrywać sprzęt i wreszcie na desktopie pojawił się ... drugi desktop, progsy śmigają, net działa ... nie powinno być źle. Trzeba poczytać manual i zmontować hardziela dla windy.



No tak, tylko nie wziąłem poprawki, że windows to windows jest i nawet jeśli google podaje tylko instrukcje jak, które to zresztą instrukcje nie wykraczają zresztą poza "włącz i zadziała" to nie znaczy, że będzie ok.
W skrócie, instalka działa, instaluje się wszystko (koszmarnie wolno), ale z jakiegoś powodu nie jest zakładane (instalator nie pyta nawet)konto użytkownika, przez co po ostatnim restarcie Virtualnego grzyba winda niby jest, ale jej nie ma, bo nie działa.
Tak czy siak, jak widać na przykładzie Damn Small Linux sam emulator sprawdza się, świetnie, pobrałem z netu instalkę Ubuntu 7.05 Frywolny Fulmar i pewnie eksperymentalnie i jego postawię na udawanym kompie. Tyle, że jeśli to cudo ma mi się do czegokolwiek przydać to właśnie do jarnięcia windy... cuż, nikt nie mówił, że będzie łatwo, czyli ciąg dalszy nastąpi :D