
ο Bash στο Ubuntu στα Windows επιτρέπει στα εγγενή δυαδικά Linux ELF64 να εκτελούνται σε Windows μέσω του Υποσυστήματος Windows για Linux (WSL). Αν και πολλοί άνθρωποι σοκαρίστηκαν από την ανακοίνωση του Bash on Ubuntu, αξίζει να σημειωθεί ότι ανοίγει νέες πόρτες για τη συμβατότητα μεταξύ διαφορετικών λειτουργικών συστημάτων. Η Microsoft κάνει ένα ακόμη βήμα μπροστά και αποκαλύπτει πώς λειτουργεί το WSL, ώστε να μπορούμε να κατανοήσουμε καλύτερα πώς επικοινωνούν τα δύο συστήματα μεταξύ τους.
Το WSL δημιουργήθηκε από την ομάδα του Microsoft Windows Kernel και περιέχει στοιχεία λειτουργίας χρήστη και λειτουργίας πυρήνα. Πιο συγκεκριμένα, το σύστημα αποτελείται από:
- μια υπηρεσία διαχείρισης συνεδρίας λειτουργίας χρήστη που χειρίζεται τον κύκλο ζωής παρουσίας Linux
- Προγράμματα οδήγησης παρόχου Pico (lxss.sys, lxcore.sys) των οποίων ο ρόλος είναι να μιμηθεί έναν πυρήνα Linux μεταφράζοντας το Linux syscalls
- Οι διεργασίες Pico φιλοξενούν το μη τροποποιημένο Linux mode χρήστη (π.χ. / bin / bash).
Η σύνδεση μεταξύ των τριών συστατικών περιγράφεται ως εξής:
Είναι ο χώρος μεταξύ των δυαδικών λειτουργιών Linux της λειτουργίας χρήστη και των στοιχείων του πυρήνα των Windows όπου συμβαίνει η μαγεία. Με την τοποθέτηση μη τροποποιημένων δυαδικών αρχείων Linux σε διαδικασίες Pico επιτρέπουμε τις κλήσεις συστήματος Linux να κατευθύνονται στον πυρήνα των Windows. Τα προγράμματα οδήγησης lxss.sys και lxcore.sys μεταφράζουν τις κλήσεις συστήματος Linux σε API NT και μιμούνται τον πυρήνα Linux.
Η κύρια πρόκληση στη διαδικασία είναι να λειτουργήσουν τα δύο συστήματα:
Το WSL εκτελεί μη τροποποιημένα δυαδικά αρχεία ELF64 Linux εικονικοποιώντας μια διεπαφή πυρήνα Linux πάνω από τον πυρήνα των Windows NT. Μία από τις διεπαφές πυρήνα που εκθέτει είναι κλήσεις συστήματος (syscalls). Το syscall είναι μια υπηρεσία που παρέχεται από τον πυρήνα που μπορεί να κληθεί από τη λειτουργία χρήστη. Τόσο ο πυρήνας Linux όσο και ο πυρήνας των Windows NT εκθέτουν αρκετές εκατοντάδες syscalls στη λειτουργία χρήστη, αλλά έχουν διαφορετική σημασιολογία και γενικά δεν είναι άμεσα συμβατές. Για παράδειγμα, ο πυρήνας Linux περιλαμβάνει πράγματα όπως το πιρούνι, το άνοιγμα και το kill, ενώ ο πυρήνας των Windows NT έχει τα συγκρίσιμα NtCreateProcess, NtOpenFile και NtTerminateProcess.
Το Υποσύστημα Windows για Linux περιλαμβάνει προγράμματα οδήγησης λειτουργίας πυρήνα (lxss.sys και lxcore.sys) που είναι υπεύθυνα για τον χειρισμό αιτημάτων κλήσεων συστήματος Linux σε συντονισμό με τον πυρήνα των Windows NT. Τα προγράμματα οδήγησης δεν περιέχουν κώδικα από τον πυρήνα του Linux, αλλά αντ 'αυτού είναι μια καθαρή εφαρμογή των διεπαφών πυρήνα συμβατών με Linux. Σε εγγενές Linux, όταν ένα syscall γίνεται από εκτελέσιμο τρόπο λειτουργίας, το χειρίζεται ο πυρήνας Linux. Στο WSL, όταν ένα syscall γίνεται από το ίδιο εκτελέσιμο, ο πυρήνας των Windows NT προωθεί το αίτημα στο lxcore.sys. Όπου είναι δυνατόν, το lxcore.sys μεταφράζει το Linux syscall στην αντίστοιχη κλήση των Windows NT, η οποία με τη σειρά της κάνει τη βαριά ανύψωση.
Λαμβάνοντας υπόψη το ενδιαφέρον της Microsoft για πλατφόρμες ανοιχτού κώδικα, πολλοί αναρωτήθηκαν εάν Ο τεχνολογικός γίγαντας θα πρέπει να αποκτήσει μεγάλες εταιρείες με επίκεντρο το Linux, όπως η Canonical, η εταιρεία πίσω από το λειτουργικό σύστημα Ubuntu. Παρόλο που η Microsoft και η Canonical συνεργάστηκαν σε λογισμικό ανοιχτού κώδικα, κανένα δεν εξέδωσε σχόλια σχετικά με αυτήν την πιθανότητα.
Εάν ενδιαφέρεστε για το πώς εξελίσσεται η αλληλεπίδραση Linux - Windows, μεταβείτε στο Ιστολόγιο της Microsoft. Η ομάδα υποσχέθηκε ότι θα ακολουθήσουν περισσότερες δημοσιεύσεις ιστολογίου σε αυτό το θέμα.
ΣΧΕΤΙΚΕΣ ΙΣΤΟΡΙΕΣ ΠΟΥ ΠΡΕΠΕΙ ΝΑ ΕΛΕΓΞΕΤΕ:
- Οι χρήστες Linux αναφέρουν προβλήματα "Τα ακουστικά σταμάτησαν να λειτουργούν στα Windows 8.1"
- Η Microsoft και η Canonical φέρνουν το Bash στα Windows 10 στο Build 2016
- Το Μόναχο ξεκινά τη διανομή δωρεάν CD Ubuntu σε χρήστες των Windows XP