Υποστήριξη 32μπιτων ΗΥ - Πώς το ξέρουμε, χωρίς να κάνουμε εγκατάσταση;

Ξεκίνησε από mandarinos, 18 Νοε 2021, 10:41:50 ΠΜ

« προηγούμενο - επόμενο »

mandarinos

Καλημέρες!

Βασικό ερώτημα:

Πώς γνωρίζουμε αν ένας πυρήνας (για να τον βάλουμε σε server με LTSP / scripts) υποστηρίζει και μηχανήματα 32 bits; Εννοώ, εκτός από τον πρακτικό τρόπο - δηλ. να εγκαταστήσουμε, να δοκιμάσουμε, κι άμα πιάσει.

Γιά να γίνω συγκεκριμένος, λογικά (κι αν δεν σφάλλω) ψάχνουμε στον source code για κάποιο σχόλιο, που λέει περίπου ότι: "από εδώ και μετά απευθυνόμαστε σε ΗΥ 32-bits". Μήπως γνωρίζει κανείς ποιό source module του πυρήνα το λέει αυτό, επειδή βαρυέμαι να τα ψάχνω όλα;  :)

Το θέμα είναι τα προβολατζήδικα μηχανήματα που έχω στο σχολείο μου, στις αίθουσες. Χθες έκανα απογραφή υλικού, και είδα ότι έχουμε 8 64μπιτα (κανένα πρόβλημα) κι άλλα 8 32μπιτα 15ετίας. (Τα οποία, γιά να δουλέψουν αξιοπρεπώς, θα τα φουλάρω με RAM.)  Λέω να τους τα κάνω όλα LTSP για το διδακτικό προσωπικό με user name / συνθηματικό του κάθε διδάσκοντος, γιά ν' αποφύγω το τρέξιμο γιά επιδιορθώσεις παλαιών δίσκων, ενεργοποιήσεις (!) (παρά το ότι μας ήρθαν με τα Παραθύρια εγκατεστημένα!), updates επί 12 φορές, κλπ σαχλαμάρες.
Κι επειδή κυρίως οι συναδέλφισσες θέλουν περιβάλλον που να θυμίζει Ms-Windows, πάμε αναγκαστικά σε KDE ή Cinnamon. Άρα, η τελική επιλογή (μου) -προς το παρόν- είναι Mint 19.3, το τελευταίο που έχει έκδοση και γιά 32μπιτα. (Τα 20άρια τη σταματήσανε.)

Έλεγα, όμως, κι ότι ίσως να τους έβαζα το mageia το 8 (ή, ενδεχομένως, να το βάλω στο ένα εργαστήριο), όπου φυσικά η εγκατάσταση LTSP / Επόπτη / διαχείρισης ΣΕΠΕΗΥ θα γίνει βηματικά. (Δεν νομίζω ότι πιάνουν τα scripts εκεί.)
Είδα ότι το mageia έχει πολύ πράμα από πολυμέσα, είναι κι έτοιμος σερβεράκος http / Apache / ftp γιά το τοπικό δίκτυο του εργαστηρίου (ίσως φανούν χρήσιμα στο μέλλον; ), είδα ότι ακόμη και το πρόσφατο 8 υποστηρίζει 32μπιτα με επιλογή αρκετών διαθεσίμων GUI's (αλλά όχι σε KDE / Gnome περιβάλλον), γι' αυτό τα ψάχνω όλ' αυτά. (Δηλ. το να διαπιστώσω κατ' ευθείαν την υποστήριξη ενός kernel σε 32bits. Κυρίως με παραξένεψε που το KDE και το Gnome του mageia δεν κάθονται στα 32 bits. Γιατί, όμως; Δεν ακολουθεί τον πυρήνα το GUI; )

Υγ: Τα εναλλακτικά GUI's του mageia αναγράφονται στο wiki του: https://wiki.mageia.org/en/Desktop_environments

alkisg

Δεν είναι θέμα πυρήνα, είναι θέμα του CD που κατεβάζεις. Πρέπει και ο πυρήνας και όλα τα προγράμματα να έχουν μεταγλωττιστεί για 32bit.
Δηλαδή κατεβάζοντας το CD θα πρέπει να λέει ι ubuntu...i386.iso (=32bit) και όχι ubuntu...amd64.iso (=64bit).
Μετά την εγκατάσταση μπορείς να δεις την αρχιτεκτονική τρέχοντας την εντολή: dpkg --print-architecture
Το να μπουτάρεις έναν 32bit πυρήνα και μετά να πας να τρέξεις 64bit προγράμματα δεν πρόκειται να παίξει.
Π.χ. το Viber και το Skype που είναι 64bit δεν εγκαθίστανται σε Ubuntu 18.04/32bit.

Άρα σε Ubuntu μπορείς μέχρι το 18.04,
ενώ σε Debian ακόμα και το τελευταίο (11, Bullseye) υποστηρίζει 32bit. Φυσικά όσο πιο καινούργιο, τόσο πιο βαρύ...

mandarinos

Οκ, ευχαριστώ!

Επειδή έριξα και μιά (αρκετά προσεκτική) ματιά στα scripts της ΤΣ (https://gitlab.com/sch-scripts/sch-scripts/-/raw/main/share/sch-scripts/run-in-terminal), απ' όσα κατάλαβα, κάνουν την εξής δουλειά: εγκαθιστούν στον server προγράμματα σε αρχεία της μορφής .deb γιά 64 bits, και ταυτόχρονα κάνουν το ίδιο με άλλα .deb γιά clients των 32 bits. Σωστά; (Εννοώ τα πρόσθετα προγράμματα, που δεν εγκαθιστά η διανομή εξ αρχής.)

Άρα, αν θέλω να κάνω βηματική εγκατάσταση προσθέτων προγραμμάτων σε κάποιο άλλο Linux (non-Ubuntu-based - κι όχι απαραίτητα) γιά clients και 64 bits και 32 bits, πρέπει να εγκαταστήσω τα σχετικά αρχεία είτε για 32 bits πέρα-πέρα, είτε και στις δύο μορφές. (Και με την ελπίδα -στο δεύτερο ενδεχόμενο- ότι δεν θα έχουμε "σύγκρουση" πχ βιβλιοθηκών. Εννοώ πάντα γιά εγκατάσταση 64μπιτη στον server.) Σωστά;

(Τώρα, το να βάλω Skype ή Viber στα μηχανήματα προβολών, δεν βλέπω να χρειαστεί ποτέ. Γιά κανένα Skype, αν και όταν, μάλλον πρέπει να ψάξω γιά παλιότερες εκδόσεις, 32μπιτες.)

Υγ: Η όλη δουλειά, όπως καταλάβατε, γίνεται γιά τα χρήματα: δεν υπάρχουν αυτή τη στιγμή ούτε γιά να πάρουμε 8 64μπιτα refurbished! Λεφτά ΔΕΝ υπάρχουν!  :D :D
Οι γονείς δεν δίνουν, το κυλικείο δεν έχει, πιστώσεις από τον δήμο δεν φαίνονται στον ορίζοντα... Αλλά μ' ένα 200άρι ευρά (μάλλον εφικτό ποσό  :) ) φουλάρω με 4 GBytes και τα 8 τα 32μπιτα, και δοκιμάζω την τύχη μου. Άμα πιάσει, έπιασε! (Αρκεί να πιάσει η δοκιμή μ' ένα 25άρι ευρά -γιά 2 chips x 2 GBytes DDR2- σ' έναν ΗΥ. Τότε θα βρεθούν και τα υπόλοιπα 175 γιούροζ - πιστεύω.)

mandarinos

Και γιά να γίνω κατανοητός, τί λέω.

Στο μυαλό μου έχω την εξής ιδέα (μπορεί σωστή, μπορεί λάθος) : εγκαθιστούμε στον server 64μπιτη διανομή, αλλά κοιτάζουμε η συγκεκριμένη έκδοση να βγαίνει και σε 32 bits. Διότι, όταν κάνουμε "εξαγωγή" του αντιγράφου του Linux με το LTSP, ο server με κάποιον αυτόματο τρόπο θα "μυριστεί" τί client έχουμε (64bit ή 32bit), και θα του στείλει το ανάλογο πακέτο... εφ' όσον κάπου μέσα του θα έχει ενσωματωμένες και τις ρουτίνες για 32 bits.
Αντιθέτως, εάν έχουμε εκδόσεις διανομών, που πλέον δεν υποστηρίζουν 32 bits, δεν τις βάζουμε στον server. (Γιά υποστήριξη 32μπιτων clients, φυσικά - μιά που δεν πρόκειται να την παρέχουν.)

Αυτή την αντίληψη σχημάτισα, δεν ξέρω αν είναι (απόλυτα) σωστή.

(Δεν είναι μονάχα οι παλιοί ΗΥ στα σχολεία. Ας πούμε, ένα μεγάλο σουπερμάρκετ σίγουρα έχει 64μπιτο μηχάνημα στο λογιστήριο, αλλά οι ταμειακές μηχανές και τα POS είναι κι αυτά 64μπιτα; Μάλλον απίθανο. Άρα, κάπως πρέπει να γίνεται η δουλειά με τη μεικτή υποστήριξη 64/32 bits.
Αντιλαμβάνομαι, φυσικά, ότι άλλο το server-client μοντέλο, κι άλλο το peer-to-peer. Αλλά, πάλι, έχουν ταμειακές / POS σκληρούς δίσκους, έστω και ενσωματωμένους, όπως τα κινητά τηλέφωνα; Υποθέτω ότι δουλεύουν κάπως σαν απλά diskless τερματικά.)

alkisg

Όχι τα sch-scripts δεν βάζουν μεικτά προγράμματα και 32bit και 64bit. Το σενάριο που αναφέρεις δεν υποστηρίζεται από κανένα λειτουργικό σύστημα (χωρίς πολύυυυυ μπελά).

Αυτό που υποστηρίζεται από το LTSP είναι:

  • Εγκατάσταση 64bit OS στον server. Δημιουργία 64bit εικονικού δίσκου με όνομα /srv/ltsp/images/x86_64.img χρησιμοποιώντας ως template τον δίσκο του server.
  • Εγκατάσταση 32bit OS σε εικονική μηχανή VirtualBox εντός του server. Δημιουργία 32bit εικονικού δίσκου με όνομα /srv/ltsp/images/x86_32.img από αυτό το VM (εντολή: ltsp image x86_32).
  • Τότε, το LTSP είναι αρκετά έξυπνο ώστε να λέει σε κάθε client ποιο από τα δύο images να μπουτάρει.
Δηλαδή έχουμε δύο ξεχωριστά λειτουργικά με ξεχωριστά προγράμματα, αλλά με κοινούς λογαριασμούς χρηστών και /home. Δεν έχουμε "ένα λειτουργικό με πολλαπλές αρχιτεκτονικές 32/64 bit".

Και φυσικά σε αυτήν την περίπτωση είναι πολύ πιο απλό να βάλει κανείς 32bit λειτουργικό στον server για όλους, αντί να παλεύει με 2 λειτουργικά.

mandarinos

Οκ, χίλια ευχαριστώ! Θα το κοιτάξω, και οι όποιες ανακαλύψεις μου εδώ σε ανακοίνωση.

mandarinos

Καλημέρες!

Δύο ακόμη ερωτήματα:

(α) Αν κατάλαβα σωστά, η διαφοροποίηση 32 bits / 64 bits γίνεται κατά την compilation του πυρήνα, καλώντας την παράμετρο -m32, όπως λέει εδώ: https://www.geeksforgeeks.org/compile-32-bit-program-64-bit-gcc-c-c/ ;
Δηλαδή, μπορούμε να κομπαϊλάρουμε κι ολόκληρον πυρήνα έτσι; (Θα μου πείς, γιατί να μην το κάνουμε! Δεν υπάρχει προφανής λόγος γιά απαγόρευση.)

(β) Παρά το ότι έχω κάνει αμέτρητες εγκαταστάσεις Linux, ποτέ δεν πρόσεξα αν υφίσταται κάποιο installation.log . (Χθές, που έψαξα το /var/log, δεν βρήκα κάποιο.) Υπάρχει (ίσως με κάποιο άλλο όνομα) ; Κι αν όχι, μπορούμε να το δημιουργήσουμε αυτόματα κατά την εγκατάσταση, καλώντας την με κάποια παράμετρο μέσα από τερματικό εντολών; (Εννοείται, τότε μάλλον δεν θα είναι παραθυρική, αλλά δεν με πειράζει. Μπορώ να τη φέρω εις πέρας.)

Το σκεπτικό μου είναι να κάνω μιά εγκατάσταση Ubuntu 18 με διπλή υποστήριξη 64/32 bits, ακριβώς όπως τα λέει το εγχειρίδιο της ΤΣ, και μετά να δω μέσα από το log εντολή-εντολή τί έκανε. (Διότι σε εγκατάσταση άλλης distribution θα πάω βηματικά, κάνοντας επακριβώς τα ίδια βήματα.)
Αν δεν υπάρχει log, απλά θα δω την τελική δομή του filesystem στον server, και θα κοιτάξω να τη μιμηθώ στην εγκατάσταση της distribution που θέλω.

alkisg

(α) Όχι, η διαφοροποίηση 32/64 bit γίνεται ως εξής:
Αρχικά, η Canonical εγκαθιστά ένα 32bit λειτουργικό (συγκεκριμένα είναι VM).
Στη συνέχεια, κάνουν compile όλα τα προγράμματα της διανομής μέσα σε αυτό το λειτουργικό. Ένα από αυτά είναι και ο πυρήνας.
Έτσι τα παραγόμενα .deb είναι 32bit.
Με αυτά τα .deb φτιάχνουν ένα .iso και ένα repository για 32bit υπολογιστές.

Μετά, η Canonical εγκαθιστά ένα 64bit λειτουργικό.
Στη συνέχεια, κάνουν compile όλα τα προγράμματα της διανομής μέσα σε αυτό το λειτουργικό. Ένα από αυτά είναι και ο πυρήνας.
Έτσι τα παραγόμενα .deb είναι 64bit.
Με αυτά τα .deb φτιάχνουν ένα .iso και ένα repository για 64bit υπολογιστές.

Δηλαδή είναι δύο εντελώς ξεχωριστές διαδικασίες. Δεν εμπλέκεται κάπου το 32bit με το 64bit. Είναι διαφορετικές αρχιτεκτονικές.
Δεν ξέρω γιατί σου έχει δημιουργηθεί η εντύπωση ότι είναι θέμα πυρήνα. Δηλαδή ο firefox, το libreoffice, η libc, το MATE κλπ πώς θα τρέξουν και σε 32bit και σε 64bit, αν δεν τα κάνεις δυο φορές compile και δεν τα διανείμεις σε δύο ξεχωριστά .deb και δύο ξεχωριστά αποθετήρια;
Αυτά τα προγράμματα δεν είναι interpreted, είναι compiled, δηλαδή μεταγλωττίζονται σε συγκεκριμένο instruction set είτε 32bit είτε 64bit, όχι και τα δύο μαζί.

> Το σκεπτικό μου είναι να κάνω μιά εγκατάσταση Ubuntu 18 με διπλή υποστήριξη 64/32 bits, ακριβώς όπως τα λέει το εγχειρίδιο της ΤΣ

Μα δεν υπάρχει τέτοιο πράγμα στο εγχειρίδιο της ΤΣ. Αυτό έλεγα στο προηγούμενο μήνυμα, ότι είναι δύο απολύτως ξεχωριστές εγκαταστάσεις, μία στον σκληρό και μία σε εικονική μηχανή. Κάτι παρεξήγησες αλλά δεν κατάλαβα ακριβώς τι...

mandarinos

Οκ, το κατάλαβα αυτό, ότι χρειάζεται VirtualBox. Δεν εννοούσα ότι η υποστήριξη για τα 32 bits θα γίνει μέσα στον βασικό κορμό του Linux των 64 bits. Αυτό εννοώ, όταν μιλάω για διπλή υποστήριξη.

Τα υπόλοιπα, στον πειραματισμό στην πράξη! Και τ' αποτελέσμα εδώ. (Το "walkthrough" της διαδικασίας, που έγραψε κάποιος φίλος.)

Υγ: Ευχαριστώ γιά τις διευκρινήσεις. Το έχω πεί, με system programming δεν έχω ασχοληθεί ποτέ, γιά να ξέρω αυτές τις λεπτομέρειες - και θέλω, κάθε βήμα που κάνω, να πατάει στα σίγουρα!

Υγ 2: Ξέρω ότι η C βγήκε γιά να εξουδετερώσει τον πονοκέφαλο, που δημιουργούσε η αλλαγή της γλώσσας μηχανής, όχι μόνο σε διαφορετικούς κατασκευαστές, αλλά και σε κάθε επόμενο μοντέλο του ίδιου κατασκευαστή! (Τη δεκαετία του 1960.) Οπότε, ήθελαν όλοι μιά γλώσσα προγραμματισμού σταθερή, να μη χάνουν τη δουλειά τους με κάθε αλλαγή... κι ας είχε τη σκοτούρα να βγάζει "μεταφραστικό" πρόγραμμα (compiler) ο κάθε κατασκευαστής με κάθε αλλαγή μοντέλου ΗΥ, αν έτσι γούσταρε. Όχι ο προγραμματιστής, που δεν είχε καμμία ευθύνη γι' αυτά τα ακροβατικά.
Γι' αυτό μου κάνει εντύπωση, που θέλει τόση διαδικασία η διαφοροποίηση, αφού οι εντολές (της C) είναι εντολές. Οι ίδιες! Είτε έχουμε 8 bits προσέσσορα, είτε 128.
Προφανώς, τότε, η διαφοροποίηση στα 32 / 64 bits γίνεται σε κάποια δήλωση στα headers. Ή με κλήση κάποιας βιβλιοθήκης, διαφορετικής κάθε φορά. (Πού θα μου πάει; θα μάθω και system programming!  :)  )