Skip to content

Latest commit

 

History

History
36 lines (29 loc) · 5.13 KB

README.md

File metadata and controls

36 lines (29 loc) · 5.13 KB

Skrypt wspierający pracę z systemem MINIX 2.0.3 w środowisku emulatora QEMU uruchamianego pod systemem Linux.

Objaśnienia wstępne

System MINIX 2.0.3 dostępny w postaci obrazu (.img) stanowi pełny, funkcjonujący system operacyjny, który można zainstalować na swoim komputerze. Jego obsługa jest jednak dość trudna, a funkcje ograniczone. Dodatkowo podczas modyfikacji jądra systemu istnieje możliwość sprowadzenia go do postaci niedziałającej, co zmuszałoby do ciągłych reinstalacji, utraty postępu i rozpoczynania od początku.

Dlatego też system MINIX uruchamiany jest poprzez emulator QEMU, który po podaniu nazwy wirtualnego dysku / obrazu emuluje działanie komputera. W przypadku unieruchomienia systemu MINIX - można rozpocząć od działającej kopii.

Cel skryptu

Skrypt powstał w celu jeszcze większej automatyzacji i uproszczenia pracy z systemem MINIX. Skrypt umożliwia między innymi:

  • Automatyczne pobranie czystego obrazu MINIX 2.0.3 używanego w trakcie zajęć
  • Zamontowanie aktywnego obrazu w katalogu roboczym (można przeglądać i edytować pliki wewnątrz obrazu za pośrednictwem Linux'a)
  • Uruchomienie emulatora QEMU i automatyczne stworzenie kopii zapasowej obrazu
  • Przywrócenie kopii zapasowej obrazu
  • Uruchomienie edytora gedit jako root

Instrukcja pracy ze skryptem (w środowisku systemu Ubuntu Linux)

  1. Skrypt należy pobrać i zapisać w dowolnym katalogu (na przykład nowym katalogu na pulpicie) pod wybraną nazwą. Przyjęte tu minix.sh
  2. Uruchomić terminal i przejść do katalogu w którym znajduje się skrypt
  3. Upewnić się, że skrypt ma flagę umożliwiającą wykonanie, jeśli nie - nadać ją poleceniem chmod +x minix.sh
  4. Skrypt musi być uruchamiany z prawami root'a (potrzebne polecenia mount / umount) - należy go uruchomić na przykład poprzez sudo ./minix.sh
    • Na tym etapie skrypt sprawdzi istnienie czystego obrazu minixa (minix203.img.ori) w swoim katalogu. Jeśli taki plik nie istnieje, zostanie automatycznie pobrany i zapisany pod tą nazwą. Skrypt utworzy katalog roboczy minix_usr, w którym widoczne będą pliki z obrazu. Skrypt sprawdzi istnienie obrazu roboczego (tego, nad którym aktualnie pracujemy), jeśli takowy nie istniał - stanie się nim czysty obraz.
    • Aby nie doprowadzić do błędów - obraz musi zostać odmontowany kiedy uruchamiany jest emulator albo tworzona kopia zapasowa. Dzieje się to automatycznie, jednak w tym czasie żadne pliki znajdujące się w folderze minix_usr nie mogą być otwarte. W przypadku zaistnienia takiej sytuacji - skrypt pokaże błąd.
  5. Kiedy wyświetli się menu - pliki minixa dostępne są w katalogu minix_usr i jesteśmy gotowi do pracy. Możemy teraz rozpocząć edycję systemu. Należy zauważyć, że pliki zamontowane w katalogu minix_usr mają jako właściciela root'a - tylko root może je wyedytować. Dlatego też powstała funkcja uruchomienia edytora tekstu gedit jako root. Edytor uruchomiony jako root ma możliwość edycji plików w katalogu minix_usr
  6. Po zakończeniu wprowadzania pierwszej serii zmian - można przystąpić do uruchomienia systemu. Należy zamknąć wszystkie okna edytora, terminale otwarte wewnątrz minix_usr. Wybierając pozycję „Uruchom minixa” - obraz zostanie odmontowany. Następnie zostanie stworzona jego kopia zapasowa (nazwa zawierająca datę utworzenia) i obraz zostanie uruchomiony w środowisku qemu. Po zamknięciu emulatora obraz zostanie ponownie zamontowany w katalogu minix_usr - można powrócić do jego edycji.
  7. W przypadku gdy obecnie edytowany obraz stanie się martwy (na przykład skompilowane jądro nie uruchamia się) możliwe jest przywrócenie poprzedniej wersji. Po wybraniu odpowiedniej wersji - skrypt skopiuje ją jako roboczą. Możliwe jest też rozpoczęcie od czystej wersji systemu. W folderze backups/auto/ przechowywane jest do 5-ciu automatycznych kopii, jeżeli nadamy naszej kopii własną nazwę to zostanie ona zachowana i nie zostanie usunięta.
  8. Po zakończonej pracy istnieje możliwość:
    • Wyeksportowania zmian do archiwum. Skrypt porówna oryginalny i obecny obraz pod kątem zmian - wszystkie zmienione pliki zostaną spakowane do archiwum .zip, którego nazwa zostanie wyświetlona. Archiwum zostanie utworzone w tym katalogu, co skrypt. Przy tworzeniu archiwum pomijane są pliki wykonywalne i obiekty. Do uruchomienia tej funkcji - system macierzysty (Linux) potrzebuje dostępnego polecenia zip.
    • Przeniesienia obecnego obrazu na nośnik zewnętrzny (na przykład pendrive). Skrypt zakłada, że system automatycznie montuje pendrive'y w katalogu /media/?/?. W przypadku, gdy system tego nie robi - konieczne jest zamontowanie ręczne.

FAQ

Q: Błąd: Nie odnaleziono polecenia qemu-system-i386 (...)
A: Na komputerze nie jest zainstalowany emulator qemu. Pod Ubuntu / Debianem należy wykonać: sudo apt-get update (aktualizacja listy pakietów), następnie sudo apt-get install qemu

Q: Błąd: Nie udało się odmontować katalogu (...)
A: Katalog roboczy jest obecnie zajęty - któryś z plików znajdujących się w nim jest otwarty lub sam katalog jest otwarty w którymś terminalu