Εγκατάσταση προσαρμοσμένου και εξατομικευμένου λειτουργικού συστήματος
- Για την πλήρη βαθμολόγηση του σετ ασκήσεων γραμμής εντολών θα πρέπει να γίνει εγκατάσταση του κατάλληλου λειτουργικού συστήματος και των σχετικών εργαλείων γραμμής εντολών, ανάλογα με το μάθημα. Η εκτέλεση των ασκήσεων σε έτοιμα περιβάλλοντα με γραμμή εντολών (π.χ., στο HCI: MacOSX, Ubuntu, Windows 10 WSL) είναι μερικώς αποδεκτή με μειωμένη βαθμολόγηση. Για πλήρη βαθμολόγηση θα πρέπει να γίνει εγκατάσταση ενός νέου καθαρού συστήματος και προσαρμογή του στους στόχους και στις προτιμήσεις σας, όπως αυτά περιγράφονται στην εισαγωγή της εργασίας σας.
- Ο πιο ασφαλής τρόπος εγκατάστασης είναι η χρήση ενός εξωτερικού αποθηκευτικού μέσου (USB3, 16GB), έτσι ώστε να μην επηρεάσετε το καθημερινό σας σύστημα με dual boot.
- Η εγκατάσταση και η εξοικείωση με ένα νέο λειτουργικό σύστημα είναι μια μακροχρόνια άσκηση με (πολλά) ενδιάμεσα βήματα και ανάλογα με την κατανόηση που έχετε για την μέγιστη ασφάλεια του βασικού καθημερινού συστήματος μπορεί να γίνει αρχικά σε μια εικονική μηχανή και σταδιακά σε εξωτερικό αποθηκευτικό μέσο παράλληλα με την εκτέλεση των άλλων ασκήσεων στο βασικό σας σύστημα. Τα εμπόδια που σίγουρα θα συναντήσετε στην αρχή δεν θα πρέπει να καθυστερήσουν την εκπόνηση των επόμενων παραδοτέων αφού μπορούν να γίνουν αρχικά σε εναλλακτικά συστήματα πριν ενημερωθούν στο τελικό σας σύστημα.
- Τα τεχνικά εμπόδια και απορίες μπορούν να επιλυθούν καλύτερα σε μια διεθνή περιοχή συζητήσεων αντί για την περιοχή βοήθειας του μαθήματος. Ανάλογα με το σύστημα που χρησιμοποιείτε υπάρχουν επιμέρους περιοχές συζητήσεων, π.χ., το Arch Linux BBS όπου σίγουρα θα βρείτε έτοιμες λύσεις σε όποιο πρόβλημα αντιμετωπίζετε.
- HCI, CSCW, UIST: Το ArchLinux είναι η 2η πιο δημοφιλής διανομή του συστήματος linux μετά το debian καθώς βρίσκεται στην βάση πολλών άλλων συστημάτων. Ο βασικός λόγος που πολλοί χρήστες και διανομείς το επιλέγουν είναι η απλή φιλοσοφία του που επιτρέπει την καλύτερη κατανόηση κάθε προσθήκης, η οποία θα πρέπει να γίνει χειροκίνητα και όχι αυτόματα. Επομένως, για την πλήρη βαθμολόγηση δεν γίνονται δεκτές εκδοχές του Arch, όπως το δημοφιλές Manjaro που βασίζονται σε αυτόματη εγκατάσταση, ούτε και εγκατάσταση σε εικονικές μηχανές, παρά μόνο εγκατάσταση σε αληθινό υλικό. Η εγκατάσταση σε εικονική μηχανή είναι δεκτή, αλλά θα βαθμολογηθεί στην βάση, αφού χάνονται σημαντικές γνώσεις και δεξιότητες διάδρασης με το υλικό. Επίσης, για την αρχική εγκατάσταση και τις ασκήσεις που απαιτούν γραμμή εντολών μπορείτε να χρησιμοποιήσετε μια εικονική εγκατάσταση ή κάποιο άλλο Unix-like system. Για την τελική εγκατάσταση μπορείτε να χρησιμοποιείσε ένα φθηνό εξωτερικό αποθηκευτικό μέσο USB 3 key 32GB και να ακολουθήσετε τον αντίστοιχο οδηγό στην επίσημη τεκμηρίωση.
- Το σύγχρονο λογισμικό είναι (δυστυχώς) πολύπλοκο και πολλά πράγματα μπορεί να πάνε στραβά, ένα ζητούμενο σε αυτήν την άσκηση είναι να αναπτύξετε την δεξιότητα (και την ψυχραιμία) να αντιμετωπίζετε τα προβλήματα με την βοήθεια της τεκμηρίωσης. Αν κάτι έχει χαλάσει στην εκκίνηση του συστήματος σας μπορείτε να το ψάξετε με chroot που θα τρέξετε από το install usb. Επίσης, τα απλά USB key είναι μεν οικονομικά μέσα αποθήκευσης, αλλά ανάλογα με το μοντέλο, την τύχη, και την πρόληψη πολλαπλών εγγραφών η ζωή τους είναι περιορισμένη.
- SW: Το Linux from Scratch επιτρέπει πολύ μεγάλη προσαρμογή του συστήματος στις ανάγκες μιας δραστηριότητας. Επίσης, γίνονται δεκτά παρόμοια συστήματα που δεν έχουν systemd και βασίζονται στον πηγαίο κώδικα (ports) όπως τα kiss linux, plan9, funtoo. Σκοπός της άσκησης είναι η εγκατάσταση και χρήση εναλλακτικών συστημάτων και κυρίως η κατανόηση της πρόσφατης προσθήκης του systemd και αυτό μπορεί να γίνει μόνο με ένα σύστημα που δεν το έχει. Η εγκατάσταση μπορεί να γίνει σε εικονική μηχανή ή σε κανονικό υλικό, και για μειωμένο βαθμό σε (free, open, etc)-BSD. To systemd αναφέρεται ενδεικτικά ως μια από τις πολλές αρχιτεκτονικές επιλογές λογισμικού στα σύγχρονα συστήματα, για την άριστη βαθμολόγηση θα πρέπει να εντοπίσετε και να περιγράψετε πρόσθετες αρχιτεκτονικές και υλικά του συστήματος που θα χρησιμοποιήσετε. Το θεωρητικό υπόβαθρο για αυτόν τον σκοπό περιγράφεται στις βίντεο διαλέξεις του μαθήματος, ενώ η τεκμηρίωση του λογισμικού συστήματος παρέχει μια πρακτική εφαρμογή, έτσι ώστε οι επιλογές σας να καταγράφονται στην τελική αναφορά.
- Λίστα με διαθέσιμες ασκήσεις γραμμής εντολών
Αν και σε πρώτη ανάγνωση η χειροκίνητη εγκατάσταση ενός λειτουργικού συστήματος δεν φαίνεται εύχρηστη, τελικά, για κάποιον συχνό χρήστη, όπως είναι ένας ειδικός της πληροφορικής, η χειροκίνητη εγκατάσταση παρέχει μια αναγνωσιμότητα των διαδικασιών και των μηχανισμών που διευκολύνουν την μακροπρόθεση συντήρηση αυτού του συστήματος, ανεξάρτητα από τα (συνήθως κερδοσκοπικά) συμφέροντα εταιρειών που πουλάνε έτοιμη την ευχρηστία.
Γραφικό περιβάλλον
- Για την πιο άνετη χρήση της γραμμής εντολών συστήνουμε την εγκατάσταση κάποιου πολύ απλού window manager (όχι desktop environment) όπως είναι το i3, ή όποιο άλλο παρόμοιο θέλετε. Με αυτόν τον τρόπο μπορείτε να έχετε καλύτερες γραμματοσειρές στο τερματικό σας, πολλά τερματικά οργανωμένα σε παράθυρα, και χειρισμό μόνο με το πληκτρολόγιο, χωρίς ποντίκι.
assignments | deliverables | references |
---|---|---|
add a status bar to your shell/editor and configure a color-theme | edit the configuration files for your status line and for your color theme | status bar solarized redshift pywall |
configure a custom desktop enviroment | customize the wallpaper, menu, bar, notifications, windows, screensaver and demonstrate them with a GIF | polybar rofi dunst awesome pipes flashfocus |
configure a custom window manager | try different wm and configure one to fit your needs | sowm dwm |
Οδηγίες για την παράδοση και τα κριτήρια της βαθμολόγησης, HCI, UIST, SW
- Η βαθμολόγηση γίνεται μόνο για τις ασκήσεις και όχι για την αρχική εγκατάσταση
- Για βαθμολόγηση πάνω από την βάση δεν αρκεί να γίνει απλό ντέμο λειτουργίας των εντολών, αλλά θα πρέπει να υπάρχει εφαρμογή σε κάποιο σύνολο από δεδομένα δικής σας επιλογής
- HCI: Οι πρώτες εβδομάδες και τα πρώτα παραδοτέα αυτής της εργασίας μέχρι την 6η εβδομάδα είναι αναφορές με τις ενέργειες που έγιναν για την εγκατάσταση και προσαρμογή του νέου λειτουργικού συστήματος, π.χ., την 1η εβδομάδα θα πρέπει να εντοπίσετε τα χαρακτηριστικά που έχει το υλικό σας (δίσκος, μνήμη, επεξεργαστής, δίκτυο, γραφικά, κτλ)
- UIST: Θεωρείται δεδομένο ότι έχετε μια λειτουργική εγκατάσταση και το ζητούμενο είναι να δοκιμάσετε διαφορετικά γραφικά περιβάλλοντα και εναλλακτικές προσαρμογές στις παραμέτρους τους καθώς και στο υποσύστημα της γραμμής εντολών για την οπτικοποίηση πληροφορίας και δεδομένων που είναι σημαντικά για εσάς.
- SW: Για την αξιολόγηση αυτής της εργασίας θα πρέπει να φαίνεται το είδος του λειτουργικού συστήματος που χρησιμοποιείτε (neofetch+dmesg) στην αρχή του ascinema. Οι ασκήσεις θα πρέπει να γίνουν με κάποια υπηρεσία που θα πρέπει να εκτελείται χωρίς systemd. Για την άριστη βαθμολόγηση θα πρέπει το νέο σας λειτουργικό σύστημα να περιγραφεί σε όρους αρχιτεκτονικής και δομικών υλικών, πέρα από το systemd.
- Για την βαθμολόγηση του λειτουργικού συστήματος θα πρέπει να γίνει ένα asciinema με boot log, system info (π.χ, journalctl -b, neofetch)
- Για την βαθμολόγηση του γραφικού περιβάλλοντος θα πρέπει να γίνει ένα gif, με ένα εργαλείο όπως το peek, που θα αποθηκευτεί σε εξωτερικό χώρο από το αποθετήριο της αναφοράς σας. Η καταγραφή της εικόνας θα πρέπει να δίνει έμφαση μόνο στα σημεία όπου έχετε κάνει μια διαφορετική ρύθμιση-χρήση και όχι στην απλή εγκατάσταση των έτοιμων εργαλείων, οπότε η διάρκεια μπορεί να είναι πολύ μικρή.
- Το κάθε μάθημα έχει διαφορετικό σετ ασκήσεων τις οποίες θα βρείτε κάτω από τον αντίστοιχο τίτλο.
- Μερικές ασκήσεις σε προχωρημένα μαθήματα (CSCW, UIST, SW) βασίζονται σε ασκήσεις από τo βασικό μάθημα (HCI).
- Τα κριτηρια βαθμολόγησης είναι διαφορετικά ανάλογα με το μάθημα, π.χ., στο HCI αξιολογούμε την διάδραση με τον χρήση για καθημερινές εφαρμογές, ενώ στο SW, αξιολογούμε την οργάνωση και τις τεχνικές για την ανάπτυξη και συντήρηση λογισμικού.
- Το κάθε σετ έχει περισσότερες από δέκα ασκήσεις οι οποίες εμφανίζονται με σειρά δυσκολίας από την πιο εύκολη στην πιο δύσκολη.
- Αν γίνουν περισσότερες από όσες ορίζει ένα μάθημα τότε θα κρατήσουμε αυτόματα για εσάς τους καλύτερους βαθμούς, επομένως σας συμφέρει να κάνετε όσες περισσότερες μπορείτε, αν και είναι πιο σημαντικό να τις κάνετε σε βάθος.
- Για να κατοχυρώσετε τις προθεσμίες αρκεί να έχουν γίνει commit τα asciinema link μέσα στην αναφορά σας στο αντίγραφο του κεντρικού αποθετηρίου. Αρχικά, δεν χρειάζεται να κάνετε αίτημα ενσωμάτωσης, έτσι ώστε να βελτιώσετε το παραδοτέο μετά από σχολιασμό στο μάθημα, και να το παραδώσετε ενημερωμένο με το αίτημα ενσωμάτωσης της τελικής αναφοράς.
- Μόνο για την προθεσμία της τελικής αναφορά θα πρέπει να στείλετε αίτημα ενσωμάτωσης στο αντίστοιχο αποθετήριο του μαθήματος.
- Μετά την προθεσμία για κομίτ κάθε παραδοτέου, η κάθε άσκηση βαθμολογείται με άριστα την βάση, εκτός και αν γίνει πολύ σημαντική προσπάθεια και συνεισφορά πέρα από τα ζητούμενα.
- Για να βαθμολογηθεί μια άσκηση θα πρέπει το command prompt να είναι ο ΑΜ σας, να έχετε λινκ στο asciinema, και option
idle-time < 0.2-0.5 sec
, έτσι ώστε η διάρκεια να είναι σχετικά μικρή, μεγάλες διάρκειες, χωρίς σημαντικό περιεχόμενο βαθμολογούνται αρνητικά. - Η βαθμολογική βάση (5) αντιστοιχεί σε μια καλογραμμένη τελική αναφορά με λινκ στο asciinema όπου κάνετε ντέμο στις βασικές δυνατότητες του αντίστοιχου εργαλείου.
- Ο βαθμός βελτιώνεται (6) για κάθε πρόσθετη λειτουργία-ρύθμιση που κάνετε, γίνεται πολύ καλός (7) αν κάνετε απλές διασυνδέσεις με άλλα εργαλεία του συστήματος (π.χ., pipelining, shell scripting), και άριστος (8-10) αν κάνετε σημαντικές διασυνδέσεις με άλλα εργαλεία με σκοπό την καθημερινή χρήση για πολύ ειδικές ανάγκες που έχετε και τις έχετε περιγράψει στην εισαγωγή.
- Σε όλες τις περιπτώσεις για βαθμό πάνω από την βάση θα εκτιμηθεί η ενσωμάτωση και χρήση των εργαλείων για τις δικές σας ανάγκες όπως αυτές καταγράφονται κατά την έναρξη του μαθήματος και όχι απλά η υιοθέτηση τους για ντέμο.
- Ειδικά για τα μαθήματα HCI, UIST, θα εκτιμηθεί η παραμετροποίηση ενός προσωπικού γραφικού περιβάλλοντος εργασίας πέρα από τα έτοιμα πακέτα (gnome, kde), όπως αυτά που μοιράζονται οι χρήστες στο σχετικό φόρουμ στο ρεντιτ.
- Ειδικά για το μάθημα UIST θα πρέπει να γίνει σημαντική προσαρμογή ενός πολύ βασικού γραφικού περιβάλλοντος όπως είναι το dwm
- Η ανάπτυξη pipelining, shell scripting μπορεί να διευκολυνθεί με τεκμηρίωση και εργαλεία όπως τα pipr, pure bash bible.
- H βιβλιοθήκη συνδυασμού μενού με γραμμή εντολών Ncurses εμφανίζεται σε κάποια εργαλεία αλλά θεωρείται υβριδικό, οπότε η χρήση του δεν ενθαρρύνεται, καθώς είναι δύσκολο με αυτό να πετύχουμε τα ζητούμενα (pipelining, scripting) για έναν άριστο βαθμό.
Διάδραση με την γραμμή εντολών
Οι εργασίες γραμμής εντολών ενθαρρύνουν μια εναλλακτική διάδραση με τον υπολογιστή, η οποία ήταν κάποτε (1970-1990) ο βασικός τρόπος διάδρασης, αλλά πλέον χρησιμοποιείται κυρίως από τους ειδικούς της κατασκευής λογισμικού. Αν και αυτός ο τρόπος διάδρασης δεν είναι ο πιο προσβάσιμος και φιλικός για τον αρχάριο και τον περιστασιακό χρήστη, είναι όμως ο πιο αποδοτικός τρόπος διάδρασης για τον ειδικό χρήστη (π.χ., προγραμματιστής εφαρμογών, web developer, network admin), αλλά και για όλους τους έμπειρους χρήστες που δουλεύουν κυρίως με κείμενο.
Για τον σκοπό αυτό θα κάνουμε τις παρακάτω δραστηριότητες:
- Κατανόηση και ανάπτυξη δεξιοτήτων στην διεπαφή γραμμής εντολών
- Καθημερινή χρήση της γραμμής εντολών ως εναλλακτική διεπαφή της γραφικής για τις δικές σας καθημερινές ανάγκες πληροφορικής
- Κατασκευή νέων σύνθετων διεπαφών γραμμής εντολών που εξυπηρετούν τις δικές σας ανάγκες και βασίζονται σε υπάρχουσες εντολές που συνδυάζονται με τις τεχνικές pipelines-scripts
- Σύνθεση και κατασκευή νέων εναλλακτικών συστημάτων διάδρασης ή οργάνωσης της ανάπτυξης λογισμικού, που βασίζονται σε ευέλικτα λειτουργικά συστήματα όπως τα archlinux, funtoo, LFS.
Επιλέγουμε να δουλέψουμε με την γραμμή εντολών και όχι με κάποιο άλλο δημοφιλές σύστημα διάδρασης (π.χ., κινητός υπολογισμός), γιατί αυτό είναι το πιο απλό, διαχρονικό, και εύκολο να αλλάξει σύστημα.
Για τα πιο προχωρημένα μαθήματα δίνουμε έμφαση σε λειτουργικά συστήματα πέρα από το λίνουξ. Γιατί αυτό που μετράει είναι να υπάρξει μια κατανόηση των σημαντικών διαφορών που έχουν τα διαθέσιμα λογισμικά λειτουργικού συστήματος και να γίνει μια επιλογή σε ευθυγράμμιση με τους στόχους-προδιαγραφές που έχετε περιγράψει στην εισαγωγή.
Η επιλογή της εγκατάστασης του αρκ λίνουξ στα εισαγωγικά μαθήματα είναι σε συνέπεια με την σχεδίαση αυτής της διανομής που αναγκάζει τον χρήστη να κάνει πολλά επιμέρους βήματα για την εγκατάσταση με χειροκίνητο τρόπο. Με αυτόν τον τρόπο, ο χρήστης αυτού του λειτουργικό θα πρέπει να μάθει στην πράξη πολλές λεπτομέρειες για το πως είναι οργανωμένος ο υπολογιστής και το λογισμικό του και κυρίως να κάνει επιλογές. Αν και αυτή η διαδικασία οδηγεί σε μια αρχικά χρονοβόρα διαδικασία εγκατάστασης, τελικά αφήνει στον χρήστη, πέρα από ένα νέο λειτουργικό σύτημα, τις γνώσεις και τις δεξιότητες για πως λειτουργεί το λογισμικό συστήματος.
Στα πιο προχωρημένα μαθήματα, χρησιμοποιούμε την αρχική βασική εγκατάσταση του αρκ λίνουξ για να κατασκευάσουμε μια προσαρμοσμένη γραφική διεπαφή, ενώ στην τεχνολογία λογισμικού μελετάμε εναλλακτικά συστήματα πέρα από το δημοφιλές λίνουξ.
Εκτός από τις παραπάνω χρήσιμες βασικές γνώσεις και δεξιότητες για τον υπολογιστή και το λειτουργικό σύστημα, υπάρχουν επιπλέον διαστάσεις στο λογισμικό, όπως το νομικό πλαίσιο για τις άδειες χρήσης. Για παράδειγμα, το γνωστό λίνουξ είναι μια συλλογή λογισμικού που έχει αρκετές διαφορές ανάλογα με την διανομή. Αν κάποιος θέλει να πουλήσει το ίδιο το λογισμικό, αυτό δεν μπορεί να το κάνει με τις διαθέσιμες άδειες λίνουξ. Η επιλογή του openbsd για την βάση του macos έγινε για αυτόν τον λόγο (+ασφάλεια). Σε αυτές τις περιπτώσεις κάποιος θα πρέπει να αναζητήσει εναλλακτικές πέρα από το λινουξ+σιστεμντι, τα οποία για τους γνώστες του unix είναι κάτι σαν τα windows. Ο σκοπός της άσκησης είναι να αποκτήσετε γνώσεις και δεξιότητες στην επιλογή και χρήση του κατάλληλου λειτουργικού για τις δικές σας διαδικασίες ανάπτυξης λογισμικού.