Nowe posty

Autor Wątek: mały jednozadaniowy linux  (Przeczytany 4802 razy)

witekkce

  • Gość
mały jednozadaniowy linux
« dnia: 2011-02-23, 02:49:18 »
Cześć.

Mam pewną koncepcję, którą chciałbym się podzielić i przedyskutować, jednocześnie prosząc o wsparcie Was drodzy forumowicze, jako bardziej doświadczonych w pewnych zakresach obsługi linucha, w realizacji.

Chce stworzyć minidystrybucję, lub przerobić istniejącą która będzie realizować tylko kilka prostych zadań:

System ten miałby na mniej więcej z góry określonej konfiguracji sprzętowej komputerów zainstalować system Windows XP Pro.

Wyobrażam sobie to tak że na serwerze wyposażonym w dobrą sieciówke i dobrą macierz umieszczam:
- jeden obraz dysku z zainstalowanym systemem, spreparowanym do klonowania.
- dla każdego komputera plik odpowiedzi (róznice stanowiskowe dla różnego zastosowania sprzętu: domena/grupa robocza, nazwa komputera)
- serwer dhcp z obsługą bootowania poprzez PXE
- serwer tftp do pobrania naszego linuxa
- serwer nfs do pobrania plików do zainstalowania.

Na komputerach uruchamiam boot from eth.

System powinien być jak najmniejszy i obsługiwać:
- znaną konfigurację sprzętową (można uszczuplić kernel do niezbędnego minimum)
- nfs
- dhcpc
- ntfs-3g
- ntpdate + hwclock
Mniejwięcej działać powinno to tak:

1. Boot kernela (obsługa wszystkiego co niezbędne)
2. DHCP
3. Czas - aktualizacja
4. Pobranie spakowanego obrazu dysku, rozpakowanie i wgranie go na dysk (nie robiłem testów wydajności)
5. Zamontowanie nowego systemu plików z dysku
6. Zamiana pliku odpowiedzi Windowsa XP
7. Reboot

Rola osoby chcącej zainstalować system na danej maszynie sprowadziłaby się tylko do włączenia maszyny i jednorazowego odpalenia bootowania przez sieć.
Reszta robi się z automatu.

Konfiguracja sprzętowa maszyny że tak to nazwę klienckiej:
00:00.0 Host bridge: Intel Corporation 82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface (rev 03)
00:02.0 VGA compatible controller: Intel Corporation 82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 82)
00:1f.0 ISA bridge: Intel Corporation 82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801DB (ICH4) IDE Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 02)
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 02)
01:08.0 Ethernet controller: Intel Corporation 82801DB PRO/100 VE (LOM) Ethernet Controller (rev 82)

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 2
model name      : Intel(R) Pentium(R) 4 CPU 2.40GHz
stepping        : 7
cpu MHz         : 2400.180
cache size      : 512 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe up pebs bts cid xtpr
bogomips        : 4805.68
clflush size    : 64
power management:

MemTotal:       767104 kB
Serwer, konfigurację sieci i skrypt realizujący pobranie i rozpakowanie Wina jestem w stanie ogarnąć.

Niestety rekompilacja jądra mi nie idzie w tym temacie, bo albo wychodzi mi dość obszerne, albo kernel panic na starcie bo czegoś nie ma.

Prośba więc moja o sugestię o wskazanie (działającego!!) obrazu jądra z initrd który nie zajmuje łącznie 200 MB lub o pomoc w rekompilacji jądra 2.6 (może 2.4 wystarczy?)

Dodam tylko na koniec że przedsięwzięcie może wydać się niektórym bezsensowne, to dla niektórych administratorów zbawienne.
Wyobraź sobie instalację XP Pro + stery (nie masz LAN w defaultowej instalacji systemu)+pakiet office + antywir + masa bzdetów... na 100 komputerach :D
Mnie by się nie chciało zaiwaniać z CD'kami. A tak to tylko Power, F12 i następny, a nawet może i WakeOnLAN rozważymy.



Pozdrawiam.

Offline mateo86

  • Users
  • Guru
  • *****
  • Wiadomości: 647
    • Zobacz profil
mały jednozadaniowy linux
« Odpowiedź #1 dnia: 2011-02-23, 09:09:08 »
Myślę, że to jest dość trudne i czasochłonne zadanie, podsunę Ci inne rozwiązanie, wydaje mi się, że łatwiejsze do zrealizowania.

Nie wiem czy słyszałeś, ale WinXP posiada funkcję automatycznej instalacji. Ba, są nawet programy przygotowujące odpowiednio spreparowany obraz iso, który będzie zawierał wszystko co nam potrzeba (do programy wrzucamy sterowniki, aktualizacje + masa innego crapware).

Co prawda trzeba popylać z płytkami (lub USB jak ktoś sprytniejszy), ale ja tu widzę jedną bardzo dużą przewagę nad tym co Ty chcesz zrobić:
Każdy system będzie miał unikalną nazwę, co jest wymogiem bezproblemowego działania komputerów w sieci, a czego proponowane przez Ciebie klonowanie nie zapewnia. Chyba że napiszesz skrypt/program, który na końcu instalacji wrzuci odpowiednią konfigurację. Konfiguracja zapisana jest w rejestrze, a dostęp do rejestru możliwy jest tylko przy uruchomionym systemie (pomijam super-hakerskie sztuczki modyfikowania plików rejestru off-line, bo to wymaga znania ich wewnętrznej struktury).

witekkce

  • Gość
mały jednozadaniowy linux
« Odpowiedź #2 dnia: 2011-02-23, 11:08:09 »
Cześć.

Odpowiadając na twoją wypowiedź, odrazu wyjaśnię że metoda którą chce zastosować jest dokładnie tym o czym piszesz.

Win XP posiada takie narzędzie jak sysprep, które uruchamiamy po całkowitym przygotowaniu systemu. Program ten resetuje SID, przygotowuje procedurę startową do uruchmienia instalatora systemu windows po reboocie - w celu wygenerowania nowego SID i dokonfigurowania systemu

Istnieje w systemie Win też takie narzędzie jak instalacja nienadzorowana w której konfiguracja komputera (tę którą normalnie przeprowadzamy klikając) jest zapisana w specjalnym pliku.

Metodę z sysprep'em można łączyć z instalacją nienadzorowaną, umieszczając tam opcje konfiguracyjne które chcesz zmienić w "pliku odpowiedzi"

I tu właśnie jest furtka, która uchroni mnie przed grzebaniem w rejestrze.

Jedyną rzeczą którą trzebaby zrobić na Windowsowej partycji off-line to wgranie tego pliku odpowiedzi we właściwe miejsce.

Moja metoda różni się od opisanej powyżej tym że nośnikiem danych nie jest CD tylko dysk na serwerze.

Offline Robert

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2516
    • Zobacz profil
mały jednozadaniowy linux
« Odpowiedź #3 dnia: 2011-02-23, 17:36:05 »
Cytat: witekkce
Chce stworzyć minidystrybucję, lub przerobić istniejącą która będzie realizować tylko kilka prostych zadań:

System ten miałby na mniej więcej z góry określonej konfiguracji sprzętowej komputerów zainstalować system Windows XP Pro.
To mniej więcej tak, jakby Bill Gates zachęcał w reklamie do uzywania linuksa :-)
Zanim popełnisz grafomaństwo: 1 | 2 | 3
Baza RPM Jak szukać informacji

Offline mateo86

  • Users
  • Guru
  • *****
  • Wiadomości: 647
    • Zobacz profil
mały jednozadaniowy linux
« Odpowiedź #4 dnia: 2011-02-24, 09:47:13 »
Poszukaj coś na temat bezdyskowej stacji roboczej (Thin client). Znajdziesz tam dużo przydatnych informacji.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3070
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
mały jednozadaniowy linux
« Odpowiedź #5 dnia: 2011-02-24, 11:34:13 »
1. Potrzebujesz stację z kartą najlepiej 1GBit . Jeżeli ma być multipowielenie, to potrzebujesz switch GBit obsługujący multicast (teraz już chyba standard).
2. na stacji instalujesz Linuksa, polecałbym Debiana 6, łatwo się go później tnie.
3. Instalujesz DNSMASQ i konfigurujesz go jako serwer DHCP i TFTP. Dodatkowo instalujesz pakiet SYSLINUX, jest tam kod PXE, BUSYBOX (komendy zintegrowane w jednym) i UDPCAST
4. Określasz mniej-więcej konfigurację sprzętową stacji docelowych, w szczególności kontroler HDD i kartę sieciową.
5. Robisz kernela zawierającego wszystkie potrzebne sterowniki maszyn docelowych wkompilowane do środka. Możesz olać USB, dźwięk, itp a grafikę ustawić na VGA. Dodatkowo w konfiguracji sieci włączasz autokonfigurację IP przy starcie systemu (taki w sumie klient DHCP w kernelu).
6. Konfigurujesz źródłową stację Windowsową. Instalujesz wszystkie potrzebne rzeczy, defragmentujesz dyski i czyścisz resztki jakimś wiperem (im więcej sektorów z zerami tym lepiej)
7. Traktujesz stację programem "sysprep" (poszukaj w sieci, autorstwo: Microsoft). Sysprep ma opcję "seal" "reseal" czy coś takiego. Generalnie wywala użytkowników, czyści seriala, nazwę i ID stacji. Przy następnym uruchomieniu system zapyta o to, coś jak _dobrze_ zrobiona instalacja OEM. Oczywiście PO sysprepie nie uruchamiasz już komputera, ma zostać "zadziewiczony".
8. Z płyty odpalasz Linuksa i zrzucasz obraz dysku (całego) dd do pliku na maszynie Debianowej. Wipe z punktu 5 pozwoli rozsądnie spakować plik obrazu.

Tricky part

9. Kernel z p.5 kopiujesz do katalogu udostępnionego przez TFTP, dodatkowo wrzucasz tam plik pxelinux.0 z pakietu SYSLINUX.
10. DNSMASQ konfigurujesz na podstawie http://syslinux.zytor.com/wiki/index.php/PXELINUX (w sumie wystarczy w DHCP przekazać ścieżkę do pxelinux.0).
11. Robisz pxelinux.cfg tak, aby zasysał kernela z TFTP. W efekcie pusta stacja docelowa powinna odpalić się z sieci, załadowac kernela i zatrzymać się z błędem o brakującym "root file system" lub "init". Jezeli nie, to sprawdź konfigurację kernela, DNSMASQ i pxelinux.xfg.

12. robisz sobie katalog WORKSET
13. tam kopiujesz binarkę busybox do zrobionego podkatalogu jako "WORKSET/bin/sh" i za pomocą programu "ldd busybox" sprawdzasz biblioteki, których potrzebuje do pracy. Wszystkie potrzebne biblioteki dokopiowujesz do "WORKSET/lib". Potem dogrywasz tak samo do katalogu  "WORKSET/bin/" plik udp-receiver i uzupełniasz biblioteki

14. wchodzisz do WORKSET
15. wykonujesz
find . | cpio --create --format='newc' | gzip -9 > ../initrd
i kopiujesz powstały plik initrd do katalogu TFTP.

16. Modyfikujesz konfigurację z p. 11 dodając do kernela opcję 'init=/bin/sh' i dopisując linijke INITRD pokazującą plik z p. 15
17. Znowu bootujesz stację docelową z sieci - tym razem powinna zgłosić się linia komend busyboxa. Jeżeli nie, posprawdzaj konfiguracje.

18. W WORKSET robisz plik WORKSET/sbin/init o treści
#!/bin/sh
udp-receiver --nokbd | dd of=/dev/sda
19. przegenerowujesz initrd (p. 14-15)
20. kasujesz wpis 'init=/bin/sh' z pxelinux.cfg (teraz jest "poprawny" init)

21. Na stacji źródłowej w katalogu z obrazami dysku uruchamiasz
# Dla kompresowanych obrazów
udp-sender --file OBRAZ.DD --pipe gunzip
# Dla nie kompresowanych obrazów
udp-sender --file OBRAZ.DD
Program powinien się "zwiesić"
22. Następne bootujesz z sieci jedną lub więcej stacji docelowych. Każda powinna zgłosić się w programie z p. 21
23. Na koniec na stacji źródłowej klepiesz ENTER, powinno zacząć powielać się na stacje docelowe.
24. Ważne, dzięki UDPCAST nie ma znaczenia, czy generujesz 1 czy 20 stacji, czas jest ten sam.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy