Αποστολέας Θέμα: Σύστημα εκκίνησης OpenRC, «αιρετικό» και διαδεδομένο.  (Αναγνώστηκε 521 φορές)

linuxer

  • Administrator
  • *****
  • Μηνύματα: 35
  • Systemd kills Linux Freedom - Move to Artix Linux
    • Προφίλ
    • LINUXER

Γενικά

Tο OpenRC είναι ένα σύστημα εκκίνησης, λειτουργικών συστημάτων τύπου Unix, το οποίο βασίζεται σε εξαρτήσεις, το οποίο διαδόθηκε σαν ένα εναλλακτικό σύστημα εκκίνησης διεργασιών, όταν οι διανομές μετέβαιναν σε αυτό, από το systemd, εξ' ού και ο ορισμός του ως «αιρετικό».

Δημιουργήθηκε από τον Roy Marples, έναν από τους developers του NetBSD, ο οποίος δραστηριοποιούταν παράλληλα στο Gentoo project.

Το OpenRC είναι το προεπιλεγμένο σύστημα εκκίνησης των Gentoo, Alpine Linux, Hyperbola GNU/Linux-libre, Parabola GNU/Linux-libre, Artix Linux, Maemo Leste, TrueOS και άλλων συστημάτων τύπου Unix, ενώ σε μερικές άλλες όπως το Devuan, το παρέχουν εναλλακτικά.

Αυτό σημαίνει ότι τα πακέτα και οι υπηρεσίες (daemons) αυτών των διανομών, το υποστηρίζουν, παρέχοντας όλα τα διαθέσιμα scripts.

Χαρακτηριστικά

Αυτά τα οποία το διακρίνουν είναι:

  • Η φορητότητα ανάμεσα σε λειτουργικά, όπως Linux, TrueOS, FreeBSD και NetBSD
  • Η παράλληλη εκκίνηση διεργασιών (προεπιλογή είναι το Off)
  • Εκκίνηση βασιζόμενη σε εξαρτήσεις
  • Διαχωρισμό διεργασιών μέσω των cgroups
  • Όριο διαθέσιμων πόρων ανά διεργασία (ulimit)
  • Διαχωρισμό του κώδικα από την παραμετροποίηση (config) (init.d / conf.d)
  • Επεκτάσιμα αρχεία δέσμης εντολών εκκίνησης (startup scripts)
  • Αρχεία δέσμης εντολών, που αναγνωρίζουν καταστάσεις (Stateful init scripts) όπως το αν έχει ξεκινήσει ήδη (is it started already?)
  • Δυνατότητα εκκινήσης πολύπλοκων διεργασιών (υπηρεσιών), μέσω συνδυασμένης δεσμης εντολών (complex init scripts), για εκκίνηση πολλαπλών τμημάτων που αφορούν την συγκεκριμμένη υπηρεσία, όπως Samba (smbd and nmbd), NFS (nfsd, portmap, κλπ.))
  • Αυτόματος υπολογισμός εξαρτήσεων και διάταξης υπηρεσιών, δηλαδή με ποια προτεραιότητα εκτελούνται (dependency calculation and service ordering)
  • Αρθρωτή αρχιτεκτονική και διαχωρισμός των προαιρετικών τμημάτων (Cron, syslog)
  • Ευέλικτη και περιγραφική διαχείριση δικτύου (συμπεριλαμβανομένου του VPN, των bridges κλπ.)
  • Αναλυτική μέθοδο αποσφαλμάτωσης (Verbose debug mode)
Eπίπεδο υπηρεσιών (runlevel)

Το OpenRC διαβάζει τις εντολές του πυρήνα που χρησιμοποιούνται κατά την εκκίνηση του λειτουργικού συστήματος, και ξεκινά το προκαθορισμένο επίπεδο υπηρεσιών (runlevel) το οποίο ορίζεται από την παράμετρο softlevel, εφόσον δοθεί ως τιμή αντί του προκαθορισμένου (default).

Διακρίνονται:

Στα εσωτερικά τα οποία είναι επεξηγηματικά από την ονομασία τους:

  • sysinit
  • shutdown
  • reboot

Και στου χρήστη:

  • boot: Ξεκινά όλα τα απαραίτητες υπηρεσίες για τα άλλα επίπεδα υπηρεσιών (runlevels)
  • default: Χρησιμοποιείται σε λειτουργίες καθημερινής βάσης (day-to-day-operations)
  • nonetwork: Χρησιμοποιείται όταν δεν απαιτείται συνδεσιμότητα σε δίκτυο
  • single: Λειτουργία μονού χρήστη (Single-user mode)
Τρόπος χρήσης

Η ενεργοποίηση παράλληλων υπηρεσιών στο OpenRC, γίνεται τροποποίοντας την γραμμή του rc_parallel στο αρχείο /etc/rc.conf ως εξής:
Κώδικας
rc_parallel="YES"
Η μετάβαση από το ένα επίπεδο υπηρεσιών στο άλλο μπορεί να γίνει με την χρήση της εντολής openrc<επίπεδο>, για παράδειγμα:
Κώδικας
 openrc nonetwork
Επίσης μπορεί να επιλεχθεί σε ποιο επίπεδο θα γίνεται το boot, ανάμεσα σε default, nonetwork ή single-user επίπεδο υπηρεσιών (runlevels) με το ακόλουθο παράδειγμα παραμετροποίησης του grub.conf:
Κώδικας
 /boot/grub/grub.conf
 title=Regular start-up
 kernel (hd0,0)/boot/vmlinuz-linux root=/dev/sda3
 title=Start without networking
 kernel (hd0,0)/boot/vmlinuz-linux root=/dev/sda3 softlevel=nonetwork
 title=Single-user mode
 kernel (hd0,0)/boot/vmlinuz-linux root=/dev/sda3 softlevel=single
Πρόσθεση/αφαίρεση υπηρεσιών σε/από runlevels:
Κώδικας
 # rc-update add net.eth0 boot
 # rc-update del dropbox default
Κατάλογος υπηρεσιών:

Για να δείτε όλες τις διαθέσιμες δέσμες εντολών εκκίνησης (init scripts) και το τρέχον επίπεδο υπηρεσιών (εφόσον έχουν προστεθεί σε κάποιο), χρησιμοποιείστε την εντολή rc-update show -v :
Κώδικας
 # rc-update show -v
Για να δείτε μόνο τις δέσμες εντολών εκκίνησης (init scripts) που έχουν προτεθεί σε ένα επίπεδο υπηρεσιών (runlevel), εκτελέστε μία από τις εντολές:
Κώδικας
 # rc-update 
 # rc-update show
Ονομασίες επιπέδων υπηρεσιών (runlevels):

Τα επίπεδα υπηρεσιών στο OpenRC, είναι φάκελοι και μπορείτε να τα δείτε με την εντολή:
Κώδικας
 # ls /etc/runlevels
Για να δημιουργήστε επιπλέον επίπεδα υπηρεσιών, μπορείτε απλά να το κάνετε, εκτελώντας την εντολή:
Κώδικας
 # install -d /etc/runlevels/$runlevel
Στοίβες επιπέδων υπηρεσιών (stacked runlevels):

Μπορείτε να διαχειριστείτε παραλλαγές τους, χρησιμοποιώντας την εντολή:
Κώδικας
 rc-update -s
Παράδειγμα χρήσης σε laptop για ομαδοποίηση υπηρεσιών δικτύωσης με βάση την τοποθεσία, μπορείτε να δείτε στο OpenRC/StackedRunlevel στα Αγγλικά.

Hotplug:

Το OpenRC παρακολουθεί και μπορεί να ενεργοποιηθεί (triggered) βάση εξωτερικών γεγονότων (events), όπως όταν υπάρχει νέο υλικό από την udev.

Δείτε στο OpenRC/Event Driven για περισσότερες λεπτομέρεις στα Αγγλικά.

Αυτόματη επαναφορά (respawning) των υπηρεσιών που κατέρρευσαν:

Το OpenRC μπορεί να επιστρέψει (δώσει) την κατάσταση των υπηρεσιών στην κατάσταση ρύθμισης του επιπέδου τους (runlevel), να παρέχει αρχεία δέσμης εντολών με καταστάσεις και αυτόματη επαναφορά.

Όταν κάποιος χρήστης, δίνει την εντολή openrc ως root (για το προκαθορισμένο επίπεδο υπηρεσιών), οι υπηρεσίες που είχαν καταρρεύσει θα ξεκινήσουν και οι υπηρεσίες που ξεκίνησαν χειρωνακτικά από τον χρήστη, θα σταματήσουν.

Για να το παρακάμψετε, χρησιμοποιήστε την εντολή openrc -n ή την εντολή u]openrc --not-stop[/u].

Εξ ορισμού, το openrc θα προσπαθήσει να ξεκινήσει τις κατεστραμμένες υπηρεσίες, και όχι να τις επανεκκινήσει.

Αυτό μπορεί να μεταβληθεί στο αρχείο /etc/rc.conf αλλάζοντας τις επιλογές:
Κώδικας
 rc_crashed_stop (default NO) & rc_crashed_start (default YES)
Υποστήριξη CGroups:

Το OpenRC υποστηρίζει εκτεταμένα την χρήση των cgroups, για λεπτομέρειες μπορείτε να δείτε στο OpenRC/CGroups στα Αγγλικά.

rc.local:

Το OpenRC, δεν εκετελεί εξ' ορισμού το /etc/rc.local αλλά αντιθέτως εκτελεί αρχεία δέσμης εντολών από τον φάκελο /etc/local.d, τα οποία έχουν την κατάληξη .start όταν ξεκινούν και την κατάληξη .stop όταν σταματουν.

Για να μιμηθήτε την παλία καλή συμπεριφορά του rc.local, δημιουργήστε το αρχείο /etc/rc.local/rc.local.start όπως στο υπόδειγμα και κάντε το εκτελέσιμο με την εντολή chmod +x:
Κώδικας
 # /etc/local.d/rc.local.start
 [ -e /etc/rc.local ] && /etc/rc.local
Βεβαιωθείτε ότι η εκτέλεση υπηρεσιών local είναι ενεργοποιημένη.

Τα αρχεία δέσμης εντολών στο /etc/local.d εκτελούνται με λεκτική ταξινόμηση και το παραπάνω παράδειγμα προϋποθέτει ότι το αρχείο /etc/rc.local έχει δικαιώματα εκτέλεσης.

Παράδειγματα

Πολλαπλές διεπαφές δικτύωσης (network interfaces):

Η υπηρεσία SSH πρέπει να ενεργοποιηθεί μόνο για το εσωτερικό δίκτυο, για την οντότητα (instance) του eth0 και ποτέ για το wlan0.

Για να παρακαμφθεί η εξάρτηση δικτύων από το /etc/init.d/sshd και επαναπροσδιορίστε την υπηρεσία, να εξαρτιέται μόνο από το net.eth0:
Κώδικας
 /etc/conf.d/sshd
 rc_need="!net net.eth0"
Πολλαπλές διεπαφές δικτύωσης (network interfaces) Multiple network interfaces in multiple runlevels:

Η υπηρεσία SSH πρέπει να ξεκινά με το eth0 και όχι με το wlan0 στο "default" επίπεδο υπηρεσιών (runlevel), αλλά στο επίπεδο υπηρεσιών "office" πρέπει να ξεκινά με το wlan0 και όχι με το eth0.
Κώδικας
 /etc/rc.conf
 #rc_depend_strict="YES"
Δημιουργήστε συβολικούς συνδέσμους (symlinks) στον daemon sshd με τα ακόλουθα ονόματα διεπαφών δικτύου:
Κώδικας
 # ln -s sshd /etc/init.d/sshd.eth0
 # ln -s sshd /etc/init.d/sshd.wlan0
Οι ρυθμίσεις πρέπει να διαβάζονται από τα αρχεία /etc/conf.d/sshd.eth0 και το /etc/conf.d/sshd.wlan0 πλέον, άρα:
Κώδικας
 # cp /etc/conf.d/sshd /etc/conf.d/sshd.eth0
 # cp /etc/conf.d/sshd /etc/conf.d/sshd.wlan0
Προσθέτετε τις εξαρτήσεις, με τις εντολές:
Κώδικας
 # echo 'rc_need="!net net.eth0"' >> /etc/conf.d/sshd.eth0
 # echo 'rc_need="!net net.wlan0"' >> /etc/conf.d/sshd.wlan0
Σε αυτό το παράδειγμα η διεπαφές net.eth0 και net.wlan0, διαβάζουν τις ρυθμίσεις τους από το αρχείο /etc/conf.d/net, ή το /etc/conf.d/net.office, βάση του ενεργού επιπέδου υπηρεσιών (runlevel).

Οπότε πρέπει να προσθέσετε όλα τα αρχεία δέσμης εντολών σε διαφορετικά επίπεδα υπηρεσιών:
Κώδικας
 # rc-update add sshd.eth0 default
 # rc-update add sshd.wlan0 office
 # rc-update add net.eth0 default office
 # rc-update add net.wlan0 default office
Για την μετάβαση ανάμεσα στο "default" runlevel και το "office" runleve, χωρίς επανεκκίνηση του συστήματος, μεταβείτε πρώτα στο "nonetwork" runlevel.

Οι υπηρεσίες των διεπαφών θα σταματήσουν με αυτόν τον τρόπο και θα επανα-διαβαστούν οι ρυθμίσεις των υπηρεσιών του αντίστοιχου runlevel.

Αυτό θα έχει καλύτερο αποτέλεσμα όταν το επίπεδο "nonetwork" είναι μία στοίβα με τα "default" και "office" επίπεδα υπηρεσιών (runlevels), και ο διαχειριστής παραθύρων και οι υπόλοιπες μη σχετιζόμενες με το δίκτυο υπηρεσίες, προτεθούν στο αποκλειστικά, στο επίπεδο υπηρεσιών του "nonetwork".

default runlevel <---> nonetwork runlevel <---> office runlevel
Κώδικας
 # rc nonetwork && rc office
 # rc nonetwork && rc default
Παράδειγμα γραφής υπηρεσίας clamav (του συγγραφέα)

Δημιουργία του αρχείου ρυθμίσεων της υπηρεσίας clamd.confd:
Κώδικας
 # Config file for /etc/init.d/clamd

 START_CLAMD=yes
 START_FRESHCLAM=yes
 CLAMD_NICELEVEL=3
 FRESHCLAM_NICELEVEL=19
 IONICE_LEVEL=2

Δημιουργία αρχείου clamd.initd και μετά καθορισμός εξαρτήσεων της υπηρεσίας:
Κώδικας
#!/sbin/openrc-run
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# Contributor linuxer <linuxer@artixlinux.org>

daemon_clamd="/usr/bin/clamd"
daemon_freshclam="/usr/bin/freshclam"
daemon_milter="/usr/bin/clamav-milter"

extra_commands="logfix"

depend() {
use net
provide antivirus
}

Σε συνέχεια πρέπει να διαβάσει από την clamconf για να λάβει την κατάσταση της υπηρεσίας:
Κώδικας
get_config() {
clamconf | sed 's/["=]//g' | \
awk "{
if(\$0==\"Config file: $1.conf\") S=1
if(S==1&&\$0==\"\") {
print \"$3\"
exit
}
if(S==1&&\$1~\"^$2\$\") {
print \$2!=\"disabled\"?\$2:\"$3\"
exit
}
}"
}

Κατόπιν περιγράφουμε το πως θα ξεκίνησει και πως θα σταματήσει, καθώς και τα μυνήματα που θα παρέχει :
Κώδικας
start() {
# populate variables and fix log file permissions
logfix

if [ "${START_CLAMD}" = "yes" ]; then
checkpath --quiet --mode 755 \
--owner "${clamd_user}":"${clamd_user}" \
--directory `dirname ${clamd_socket}`
if [ -S "${clamd_socket}" ]; then
rm -f ${clamd_socket}
fi
ebegin "Starting clamd"
start-stop-daemon --start --quiet \
--nicelevel ${CLAMD_NICELEVEL:-0} \
--ionice ${IONICE_LEVEL:-0} \
--exec ${daemon_clamd}
eend $? "Failed to start clamd"
fi

if [ "${START_FRESHCLAM}" = "yes" ]; then
checkpath --quiet --mode 755 \
--owner "${clamd_user}":"${clamd_user}" \
--directory `dirname ${clamd_socket}`
ebegin "Starting freshclam"
start-stop-daemon --start --quiet \
--nicelevel ${FRESHCLAM_NICELEVEL:-0} \
--ionice ${IONICE_LEVEL:-0} \
--exec ${daemon_freshclam} -- -d
retcode=$?
if [ ${retcode} = 1 ]; then
eend 0
einfo "Virus databases are already up to date."
else
eend ${retcode} "Failed to start freshclam"
fi
fi

if [ "${START_MILTER}" = "yes" ]; then
if [ -z "${MILTER_CONF_FILE}" ]; then
MILTER_CONF_FILE="/etc/clamav-milter.conf"
fi

ebegin "Starting clamav-milter"
start-stop-daemon --start --quiet \
--nicelevel ${MILTER_NICELEVEL:-0} \
--ionice ${IONICE_LEVEL:-0} \
--exec ${daemon_milter} -- -c ${MILTER_CONF_FILE}
eend $? "Failed to start clamav-milter"
fi
}

stop() {
if [ "${START_CLAMD}" = "yes" ]; then
ebegin "Stopping clamd"
start-stop-daemon --stop --quiet --name clamd
eend $? "Failed to stop clamd"
fi
if [ "${START_FRESHCLAM}" = "yes" ]; then
ebegin "Stopping freshclam"
start-stop-daemon --stop --quiet --name freshclam
eend $? "Failed to stop freshclam"
fi
if [ "${START_MILTER}" = "yes" ]; then
ebegin "Stopping clamav-milter"
start-stop-daemon --stop --quiet --name clamav-milter
eend $? "Failed to stop clamav-milter"
fi
}
Τέλος προδιαγράφουμε το logging της υπηρεσίας:
Κώδικας
logfix() {
clamd_socket=$(get_config clamd LocalSocket /run/clamav/clamd.sock)
clamd_user=$(get_config clamd User clamav)
freshclam_user=$(get_config freshclam DatabaseOwner clamav)

if [ "${START_CLAMD}" = "yes" ]; then
# fix clamd log permissions
# (might be clobbered by logrotate or something)
local logfile=$(get_config clamd LogFile)
if [ -n "${logfile}" ]; then
checkpath --quiet \
--owner "${clamd_user}":"${clamd_user}" \
--mode 640 \
--file ${logfile}
fi
fi

if [ "${START_FRESHCLAM}" = "yes" ]; then
# fix freshclam log permissions
# (might be clobbered by logrotate or something)
local logfile=$(get_config freshclam UpdateLogFile)
if [ -n "${logfile}" ]; then
checkpath --quiet \
--owner "${freshclam_user}":"${freshclam_user}" \
--mode 640 \
--file ${logfile}
fi
fi
}

Άδεια χρήσης OpenRC

To OpenRC είναι ελεύθερο λογισμικό και η άδεια χρήσης του είναι παρόμοια με την two-clause BSD. https://github.com/OpenRC/openrc/blob/master/LICENSE (αντίγραφο της άδειας του, υπάρχει ως συνημμένο αρχείο στο τέλος του άρθρου)

Καλό διάβασμα!

Πηγές άρθρου:

Artix Linux OpenRC Wiki
Gentoo Linux OpenRC Wiki
Wikepedia OpenRC Reference
Υπηρεσία clamav-opernrc

Άδεια χρήσης λογισμικού:

« Τελευταία τροποποίηση: Αύγουστος 27, 2020, 08:16:05 πμ από linuxer »
friendly
0
funny
0
informative
0
agree
0
disagree
0
pwnt
0
like
1
dislike
0
No reactions
No reactions
No reactions
No reactions
No reactions
No reactions
Members reacted like:
akounadis,
No reactions

mobinmob

  • Author
  • *****
  • Μηνύματα: 9
    • Προφίλ
Απ: Σύστημα εκκίνησης OpenRC, «αιρετικό» και διαδεδομένο.
« Απάντηση #1 στις: Αύγουστος 16, 2020, 07:45:27 μμ »
Κάτι που με εντυπωσιάζει στο openRC είναι η ευελιξία του και το πως εξελίσσεται μαζί την την διανομή και εμπλουτίζεται σε δυνατότητες. Μπορεί να μην παρέχει ootb process supervision όπως το runit, αλλά συνεργάζεται τόσο με τον δικό του supervise-daemon (που βρίσκεται σε πειραματική φάση), όσο και με το s6. Δουλεύει και σε BSDs και επιτρέπει την χρήση των ιδιαίτερων μηχανισμών κάθε λειτουργικού (jails, cgroups) χωρίς αυτό να σημαίνει ότι είναι δεμένο με ένα OS.
friendly
0
funny
0
informative
0
agree
0
disagree
0
pwnt
0
like
2
dislike
0
No reactions
No reactions
No reactions
No reactions
No reactions
No reactions
Members reacted like:
linuxer,akounadis,
No reactions

linuxer

  • Administrator
  • *****
  • Μηνύματα: 35
  • Systemd kills Linux Freedom - Move to Artix Linux
    • Προφίλ
    • LINUXER
Απ: Σύστημα εκκίνησης OpenRC, «αιρετικό» και διαδεδομένο.
« Απάντηση #2 στις: Αύγουστος 16, 2020, 08:01:33 μμ »
Συμφωνώ ότι έχει πολύ καλά χαρακτηριστικά, πέραν της φορητότητάς του, σε πολλά σημεία μοναδικά στον χώρο του nonsystemd, και μακάρι να φύγει ο supervise-daemon από το experimental stage.

Ευελπιστώ να γίνει σύντομα για να μπορέσει να διαδοθεί ακόμη περισσότερο, προσωπικά.

Φιλικά
friendly
0
funny
0
informative
0
agree
0
disagree
0
pwnt
0
like
1
dislike
0
No reactions
No reactions
No reactions
No reactions
No reactions
No reactions
Members reacted like:
akounadis,
No reactions

obar66
  • Author
  • *****
  • Μηνύματα: 5
    • Προφίλ
Απ: Σύστημα εκκίνησης OpenRC, «αιρετικό» και διαδεδομένο.
« Απάντηση #3 στις: Οκτώβριος 11, 2020, 08:48:05 μμ »
Να'μαι κι εγώ σαν συνήγορος του αντιθεού. 


Στην αρχή υπήρξαν τα scripts κάθε λογής και μέσα από την σκόνη της πέτρας και του ρόπαλου βγήκε από το σπήλαιο το sysvinit ... 
Μετά από χιλιετηρίδες κάποιοι "μυστήριοι" (θεωρώ βαλτοί της ΙΒΜ με τεράστιο budget) δημιουργούν έναν δούρειο ίππο για να υπονομεύσουν και να ελέγξουν τις διανομές παρουσιάζοντας κάποιο εργαλείο το οποίο έβγαζε τον μόχθο της διαχείρισης του συστήματος και αυτοματοποιούσε τα πάντα .... να λειτουργούν ξένοιαστα.  Κάποιοι, ενώ γνώριζαν τους κινδύνους αυτούς, υιοθέτησαν την εύκολη λύση.
Κι έτσι μπήκαμε στην εποχή του χαλκού και του σιδήρου.  Το ξύλινο ρόπαλο έγινε μπρούτζινο.  Μόνο που αν δεν ήταν τα αλλεπάλληλα τερατώδη cpu/mother.../ram-use δεν θα μπορούσε εύκολα να το σηκώσει κανείς.  To OpenRC έρχεται να γεφυρώσει το χάσμα μεταξύ του systemd και των αρχαίων script, δημιουργώντας ένας πιο εύχρηστο εργαλείο να τα διαχειρίζεται, χωρίς το βάρος και τον όγκο του systemd που δεν τεριάζει καθόλου σαν σχεδίαση με τον πολιτισμό του unix.  Ούτε σαν FOSS ούτε σαν ....  δεν κολλάει αυτό το πράμα ... είναι σαν να θες να γίνεις microsoft στη θέση της microsoft.


Mε αυτό το σκεπτικό δημιουργήθηκαν τα daemontools εκ των οποίων το runit, to s6, είναι παράγωγα, και πραγματικά δένουν με την εξέλιξη και τον 21ο αιώνα, ενώ το openrc μοιάζει απλά να είναι η εξέλιξη των παλαιών εργαλείων του περασμένου αιώνα.  Εγώ δεν τα βάζω στο ίδιο τσουβάλι.  Κάποιοι (cynwulf κλπ) θεωρούν ότι ο μέσος χρήστης μηχανήματος σαν pc είτε για δουλειά είτε για παιχνίδι, την δουλειά του την έκανε με τα script δε χρειάζεται κάτι παραπάνω.  Ανάθεμα κι αν βγάζει άκρη κανείς ακόμα και σήμερα, τι ρόλο παίζουν τα 6-7-8 runlevels των script και τι νόημα θα είχαν πέρα από τα 3 (init - run - stop) ... 


Νομίζω δηλαδή ότι η απλούστευση κάποιων κριτικών ενάντια στο systemd και οι προπαγανδιστική αναφορά στο "systemd να μην είναι κι ας είναι και sysvinit" ή η εύκολη δικαιολογία καρα-προπαγάνδα του systemd, είναι καλύτερο του sysvinit, σαν να μην υπάρχει τρίτο, είναι αποπροσανατολισμός.


Το OpenRC είναι ένας καθαρός, τακτικός, τρόπος να αντιμετωπίζεις τα scripts. σαν ινιτ και service management.  Τίποτα παρά πάνω.


Το runit είναι πολύ πιο προηγμένο σαν λειτουργία.  Δηλαδή αφού μπορεί το runit και δουλεύει αδιαμαρτύρητα και κάνει τόσα πολλά τόσο απλά, και με τόσο λίγους πόρους, τι τα θες τα "προηγούμενα";


Το s6 ξεκινάει εκεί που σταμάτησε το runit, δηλαδή πρέπει να φτάσεις σε σημείο να ξεπεράσεις τις δυνατότητες του runit για να αντιληφθείς την υπεροχή του s6.  Υπάρχουν ψηφιακοί βερνιέροι να μετράνε με ακρίβεια εκατοστών του χιλιοστού, και υπάρχει και μεζούρα με χιλιοστά.  Αν είσαι μαραγκός μια χαρά είναι η μεζούρα, 2-3ε κάνει, και να την χάσεις θα πάρεις άλλη.  Αν φτιάχνεις πιστόνια για τα MotoGP με την μεζούρα δε μετράς τίποτα.  Τόσο μεγάλες οι διαφορές. το τσουβάλιασμα του στυλ " αφού δεν είναι systemd, καλό είναι" δεν βοηθάει.


Σε απόδοση και χρήση πόρων δύσκολα θα καταλάβεις διαφορά μεταξύ ενός συστήματος με sysvinit κι ενός με openrc.  Με το runit θα το καταλάβεις.  Με το s6 από το runit πάλι δεν θα καταλάβεις, απλά οι δυνατότητες και οι δρόμοι που ανοίγουν είναι τεράστιοι, αλλά ίσως και δυσνόητοι (δηλαδή θέλουν πολύ θεωρητικό διάβασμα για να αντιληφθείς τις δυνατότητες, πόσο μάλλον για να τις εκμεταλλευτείς στο έπακρο).











friendly
0
funny
0
informative
0
agree
0
disagree
0
pwnt
0
like
2
dislike
0
No reactions
No reactions
No reactions
No reactions
No reactions
No reactions
Members reacted like:
linuxer,rhtoras,
No reactions

linuxer

  • Administrator
  • *****
  • Μηνύματα: 35
  • Systemd kills Linux Freedom - Move to Artix Linux
    • Προφίλ
    • LINUXER
Απ: Σύστημα εκκίνησης OpenRC, «αιρετικό» και διαδεδομένο.
« Απάντηση #4 στις: Οκτώβριος 11, 2020, 09:00:28 μμ »
Άψογος στην διατύπωση, αλλά τότε που ξεκίνησε το τέρας, δεν ήταν κολλητοί της IBM, έγιναν μόλις τους έδωσε τις χάντρες και τα γυαλάκια.

Όσο για το Runit, ένα μόνο μπορεί να του προσάψει κανείς, το racing condition που μπορεί να δημιουργηθεί πολύ απλά, όπως είχα να αντιμετωπίσω πριν μερικές μέρες, με το ξεκίνημα του GDM.

Το s6, το οποίο και δεν έχει παρουσιαστεί ακόμη εδώ, είναι ένα πάρα πολύ δυνατό σχήμα σαν init, αλλά όντως έχει τεράστια δυσκολία του να εμπλακεί κανείς σε συγγραφή services, χωρίς όμως αυτό να σημαίνει ότι αποτελεί εμπόδιο ως επιλογή.

Πάντως στα Artix γίνεται τεράστια δουλειά σε αυτόν τον τομέα, για να μπορούμε να παρέχουμε τα services και να μην υστερεί σε σχέση με το systemd.
friendly
0
funny
0
informative
0
agree
0
disagree
0
pwnt
0
like
1
dislike
0
No reactions
No reactions
No reactions
No reactions
No reactions
No reactions
Members reacted like:
rhtoras,
No reactions

Tags:
 


Powered by EzPortal