<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>-ENOTTY (Posts about Techblog)</title><link>https://enotty.pipebreaker.pl/</link><description></description><atom:link href="https://enotty.pipebreaker.pl/categories/techblog.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Sun, 25 May 2025 14:47:43 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Tak się powinno robić samochody</title><link>https://enotty.pipebreaker.pl/2016/01/25/tak-sie-powinno-robic-samochody/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;W weekend w końcu znalazłem trochę czasu na obejrzenie &lt;a href="https://www.youtube.com/watch?v=KX_0c9R4Fng"&gt;DEF CON 23 - Marc Rogers and Kevin Mahaffey - How to Hack a Tesla Model S&lt;/a&gt;. Potwierdziło się to, co czytałem wcześniej. Tesla naprawdę porządnie robi samochody.&lt;/p&gt;

&lt;p&gt;Security IT mają zrobione bardzo dobrze zarówno wewnętrznie — izolowane podsieci CAN i infotainment z „firewallem” w postaci modułu &lt;em&gt;gateway&lt;/em&gt;, szyfrowanie prawie wszędzie, użycie SSH do komunikacji między komponentami — ale również zewnętrznie: OpenVPN z dokładnym sprawdzaniem certyfikatów (keyUsage) itp. W przypadku „zabicia” elektroniki przez atakującego, samochodem nadal można kierować i działają hamulce.&lt;/p&gt;

&lt;p&gt;Co prawda używają starego Ubuntu i było kilka drobnych niedoróbek, ale plusem Tesla Motors jest też sprawny system patchowania. I ekipa ludzi, którzy biorą IT Security poważnie. Poważniej, niż niektóre biznesy z którymi współpracowałem.&lt;/p&gt;

&lt;p&gt;Prezentacja warto obejrzeć, sam chętnie bym zobaczył wycieczkę po serwerowni Tesla Motors i posłuchał więcej: jak zarządzają certyfikatami dla każdego samochodu, jaką mają infrastrukturę sieciową, jak przechowują i obrabiają telemetrię itp.&lt;/p&gt;

&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Archived comments:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;sprae&lt;/strong&gt; &lt;em&gt;2016-01-28 01:47:44&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Dziękuję, też zobaczę.&lt;/p&gt;</description><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2016/01/25/tak-sie-powinno-robic-samochody/</guid><pubDate>Mon, 25 Jan 2016 07:00:00 GMT</pubDate></item><item><title>Failure modes of incorrect Type= in systemd units</title><link>https://enotty.pipebreaker.pl/2014/10/08/failure-modes-of-incorrect-type-in-systemd-units/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;Proper supervision of daemons requires knowledge which cannot be inferred automatically. Some aspects of service behaviour have to be described by administrator. Widely used &lt;code&gt;upstart&lt;/code&gt; system manager has 3 type-like job properties: &lt;em&gt;expect daemon, fork&lt;/em&gt; and &lt;em&gt;stop&lt;/em&gt;. &lt;a href="http://upstart.ubuntu.com/cookbook/#expect"&gt;Their description&lt;/a&gt; starts with a warning:

&lt;/p&gt;&lt;blockquote&gt;This stanza is &lt;em&gt;extremely&lt;/em&gt; important: read this section carefully!&lt;/blockquote&gt;

The warning is no less true with systemd's Type=.

&lt;p&gt;
Wrong type specification impacts service monitoring, failure detection and dependencies handling. There are &lt;a href="http://www.freedesktop.org/software/systemd/man/systemd.service.html#Type="&gt;six service types&lt;/a&gt; in systemd. Three basic ones (simple, forking, oneshot) and three more sophisticated (dbus, idle, notify). &lt;/p&gt;&lt;p&gt;

&lt;/p&gt;&lt;p&gt;Failure to set proper type may not bite you immediately. Service may run for minute or two and then get killed mysteriously. Services depending on wrongly specified one won't be started, even if it appears to run fine; but systemd won't consider the service ready and will not start dependent units.&lt;/p&gt;

&lt;h4&gt;Type highlights&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;simple&lt;/em&gt; - default type; daemon has to stay in foreground. &lt;strong&gt;Ready:&lt;/strong&gt; as soon as the binary is executed (which may be too soon, service may not be ready to serve requests yet).&lt;/li&gt;

&lt;li&gt;&lt;em&gt;forking&lt;/em&gt; - daemon must fork. &lt;strong&gt;Ready&lt;/strong&gt;: after first process exits. If &lt;code&gt;PIDFile=&lt;/code&gt; is defined, readiness is delayed until PID is written to the pidfile.&lt;/li&gt;

&lt;li&gt;&lt;em&gt;oneshot&lt;/em&gt; - suitable for running scripts; systemd waits until process finishes. &lt;strong&gt;Ready:&lt;/strong&gt; when main process exits.&lt;/li&gt;

&lt;li&gt;&lt;em&gt;dbus&lt;/em&gt; - for D-Bus services. &lt;strong&gt;Ready:&lt;/strong&gt; when specified &lt;code&gt;BusName=&lt;/code&gt; is acquired.&lt;/li&gt;

&lt;li&gt;&lt;em&gt;idle&lt;/em&gt; - like “simple” , but with delayed execution.&lt;/li&gt;

&lt;li&gt;&lt;em&gt;notify&lt;/em&gt; - most flexible and robust type; by defining simple communication protocol between daemon and systemd, precise information about state can be provided. Requires simple patching, for scripts you can use &lt;a href="http://www.freedesktop.org/software/systemd/man/systemd-notify.html"&gt;systemd-notify&lt;/a&gt; helper. &lt;strong&gt;Ready:&lt;/strong&gt; when service says so.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Basic type determination&lt;/h4&gt;
&lt;p&gt;Suitable type can be guessed correctly in 75% cases by just running the daemon binary. If it stays in foreground, connected to the terminal, the type is “simple”. If it forks into the background, the type is “forking” (suprisingly!)&lt;/p&gt;

&lt;blockquote&gt;
&lt;pre&gt; # /usr/sbin/daemon
Copyright 2014 Foo Baz Bar Corp.
Serving Requests…&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;strong&gt;→ Type=simple&lt;/strong&gt;

&lt;blockquote&gt;
&lt;pre&gt;# /usr/sbin/otherdaemon
#&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;strong&gt;→ Type=forking&lt;/strong&gt;

&lt;p&gt;If you need to run a program/script which does its jobs and exits (does not stay running), use &lt;strong&gt;oneshot&lt;/strong&gt;. Please note: if you can choose how the daemon behaves, it generally better to go with "forking". This makes systemd declare "ready" after daemon is actually able to accept connections.&lt;/p&gt;

&lt;h4&gt;Failure modes&lt;/h4&gt;
&lt;p&gt;Most of the failures shown below happen after &lt;code&gt;TimeoutStartSec=&lt;/code&gt;. By default it’s set to 90 seconds, so lets stick with this value.&lt;/p&gt;

&lt;center&gt;

&lt;table border="1"&gt;&lt;tr&gt;&lt;td rowspan="2" colspan="2"&gt;&lt;/td&gt;
   &lt;th colspan="4"&gt;Incorrectly selected Type=&lt;/th&gt;&lt;/tr&gt;
  &lt;tr style="background-color: #C67070;"&gt;&lt;th&gt;simple&lt;/th&gt;&lt;th&gt;forking&lt;/th&gt;&lt;th&gt;oneshot&lt;/th&gt;&lt;th&gt;notify&lt;/th&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;th rowspan="4" style="transform: rotate(90);"&gt;Correct type&lt;/th&gt;
   &lt;th style="background-color: #19D175"&gt;simple&lt;/th&gt;
   &lt;td align="center"&gt; ✓ &lt;/td&gt;
   &lt;td&gt; killed after 90 s&lt;sup&gt;1&lt;/sup&gt; &lt;/td&gt;
   &lt;td&gt; stays in “activating” state forever&lt;sup&gt;2&lt;/sup&gt; &lt;/td&gt;
   &lt;td&gt; killed after 90 s&lt;sup&gt;3&lt;/sup&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;&lt;th style="background-color: #19D175"&gt;forking&lt;/th&gt;
   &lt;td&gt; killed almost immediately&lt;sup&gt;4&lt;/sup&gt; &lt;/td&gt;
   &lt;td align="center"&gt; ✓ &lt;/td&gt;
   &lt;td&gt; stays in “activating” state forever &lt;/td&gt;
   &lt;td&gt; killed after 90 s&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;&lt;th style="background-color: #19D175"&gt;oneshot&lt;/th&gt;
   &lt;td&gt; becomes “failed” after executing&lt;sup&gt;5&lt;/sup&gt; &lt;/td&gt;
   &lt;td&gt; killed after 90 s &lt;/td&gt;
   &lt;td align="center"&gt; ✓ &lt;/td&gt;
   &lt;td&gt; killed after 90 s&lt;/td&gt;
 &lt;/tr&gt;

  &lt;tr&gt;&lt;th style="background-color: #19D175"&gt;notify&lt;/th&gt;
   &lt;td&gt; probably works fine&lt;/td&gt;
   &lt;td&gt; killed after 90 s &lt;/td&gt;
   &lt;td&gt; stays in “activating” state forever &lt;/td&gt;
   &lt;td align="center"&gt; ✓ &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;

&lt;/center&gt;
Notes:
&lt;ol&gt;
  &lt;li&gt; systemd expects process to fork and parent to exit. It waits until timeout.&lt;/li&gt;
  &lt;li&gt; it never gets to the “ready” state, so no units depending on it will start; start timeout is ignored for “oneshot” units.&lt;/li&gt;
  &lt;li&gt; systemd will wait for ready notification. Until timeout.&lt;/li&gt;
  &lt;li&gt; ”main” process exits&lt;/li&gt;
  &lt;li&gt; daemons should not exit, but “oneshot” units should&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I hope that explains why sometimes systemd kills your service after a minute. Of course you should read 
&lt;a href="http://www.freedesktop.org/software/systemd/man/systemd.service.html"&gt;man systemd.service&lt;/a&gt;, it contains much more details. &lt;/p&gt;</description><category>english</category><category>Linux</category><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2014/10/08/failure-modes-of-incorrect-type-in-systemd-units/</guid><pubDate>Wed, 08 Oct 2014 10:29:00 GMT</pubDate></item><item><title>Partyzanckie utrzymywanie usługi w działaniu (z systemd)</title><link>https://enotty.pipebreaker.pl/2014/03/27/partyzanckie-utrzymywanie-uslugi-w-dzialaniu-z-systemd/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;Używam &lt;em&gt;socket activation&lt;/em&gt; w systemd do odpalania demona FTPD. &lt;strong&gt;Plus&lt;/strong&gt; jest taki, że jak na dłoni widzę wszystkie sesje i mogę je wybiórczo ubijać. Chociaż raczej nie ma potrzeby, bo użycie zasobów jest skutecznie limitowane mechanizmami z systemd.&lt;/p&gt;

&lt;blockquote&gt;&lt;pre&gt;$ systemctl | grep vsftp
  vsftpd@406-109.107.25.117:21-93.154.247.87:43126.service            loaded active running   vsftpd instance service for /vsftpd@406.service (93.154.247.87:43126)
  vsftpd.socket                                                       loaded active listening vsftpd incoming socket


$ systemctl status vsftpd@406-109.107.25.117:21-93.154.247.87:43126.service
● vsftpd@406-109.107.25.117:21-93.154.247.87:43126.service - vsftpd instance service for /vsftpd@406.service (93.154.247.87:43126)
   Active: active (running) since Thu 2014-03-27 11:40:13 CET; 1min 9s ago
   CGroup: /system.slice/system-vsftpd.slice/vsftpd@406-109.107.25.117:21-93.154.247.87:43126.service
           ├─11643 vsftpd: ::ffff:93.154.247.87: connected
           └─11645 vsftpd: ::ffff:93.154.247.87/ftp: RETR pidora-18-r1c.img
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;Jest też niestety &lt;strong&gt;minus&lt;/strong&gt; — jeśli demon vsftpd kilkukrotnie zakończy działanie błędem, to w końcu systemd wyłączy nasłuchujące gniazdko. &lt;/p&gt;

&lt;p&gt;Przydałaby się więc automatyka włączająca je z powrotem. W pierwszym odruchu zrobiłem parę jednostek, które używają &lt;code&gt;curl&lt;/code&gt; do sprawdzenia stanu usługi:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre&gt;
$ cat ftp-check.timer
[Timer]
OnCalendar=hourly

[Install]
WantedBy=vsftpd.socket

$ cat ftp-check.service
[Unit]
OnFailure=vsftpd.socket

[Service]
ExecStart=/usr/bin/curl --silent --noproxy localhost ftp://localhost:21 -o /dev/null
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;Jak to działa?  Jednostka &lt;code&gt;timer&lt;/code&gt;:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;aktywowana jest co godzinę&lt;/li&gt;
&lt;li&gt;polecenie &lt;code&gt;enable&lt;/code&gt; spowoduje, że zaczyna działać razem z &lt;code&gt;vsftpd.socket&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;ponieważ nie ma explicité podanego co jest włączane przez timer, to aktywowana jest usługa o takiej samej nazwie: ftp-check.timer-&amp;gt;ftp-check.&lt;strong&gt;service&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Działanie "usługi sprawdzającej" również zawiera się w kilku punktach:&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;start usługi powoduje próbę połączenia curlem do FTP&lt;/li&gt;
 &lt;li&gt;po zakończeniu curla sprawdzany jest jego kod wyjścia:
  &lt;ul&gt;&lt;li&gt;jeśli połączenie przebiegło pomyślnie, ftp-check.service po prostu się kończy&lt;/li&gt;
 &lt;li&gt;jeśli curl nie mógł się połączyć, to kod wyjścia wskazuje na błąd; usługa przechodzi w stan &lt;strong&gt;failed&lt;/strong&gt;; ponieważ zdeklarowano &lt;code&gt;OnFailure=&lt;/code&gt;, błąd powoduje, że systemd aktywuje wskazaną jednostkę. Powoduje to ponowne wprowadzenie gniazdka vsftpd w stan nasłuchujący — powrót do normalnego działania&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Rozwiązanie działa, jednak z opóźnieniem. Zastanowiwszy się nad tym, wpadłem na prostsze rozwiązanie:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre&gt;$ cat vsftpd@.service
[Unit]
Description=vsftpd instance service for %c
OnFailure=vsftpd.socket
[...]
&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;W ten sposób padający &lt;code&gt;vsftpd&lt;/code&gt; sam od razu podnosi gniazdo.&lt;/p&gt;
&lt;p&gt;A tak w ogóle to &lt;code&gt;&lt;a href="http://fedoraproject.org/wiki/Features/Icinga"&gt;yum install icinga&lt;/a&gt;&lt;/code&gt;.&lt;/p&gt;</description><category>Linux</category><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2014/03/27/partyzanckie-utrzymywanie-uslugi-w-dzialaniu-z-systemd/</guid><pubDate>Thu, 27 Mar 2014 11:46:00 GMT</pubDate></item><item><title>Trimming legacy fat with systemd</title><link>https://enotty.pipebreaker.pl/2013/07/17/trimming-legacy-fat-with-systemd/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;Recently, Michael Stapelberg prepared a detailed listing of &lt;a href="http://people.debian.org/~stapelberg/docs/systemd-dependencies.html"&gt;systemd's component sizes&lt;/a&gt;. It clearly shows how much space is really required, and how much space can be saved by giving up various optional components of systemd. It's a nice document. On the other hand, how much we can save by dropping legacy shell utilities?&lt;/p&gt;

&lt;p&gt;Let's take some hypothetical system &lt;strong&gt;not&lt;/strong&gt; designed to be accessed interactively by sysadmin. You may call it &lt;em&gt;embedded&lt;/em&gt;, you may call it &lt;em&gt;minimal cloud image&lt;/em&gt; or just &lt;em&gt;specialised spin/just-enough-OS&lt;/em&gt;. We are going to remove all the tools which duplicate functionality already provided by systemd.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;&lt;center&gt;&lt;table&gt;
&lt;tr&gt;&lt;th&gt;Directive&lt;/th&gt;  &lt;th&gt;Obsoleted utility&lt;/th&gt; &lt;th&gt;Utility size in bytes&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;WorkingDirectory&lt;/td&gt; &lt;td&gt; /usr/bin/cd&lt;/td&gt; &lt;td&gt;   26 bytes - shell builtin &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;RootDirectory &lt;/td&gt; &lt;td&gt;       /usr/sbin/chroot &lt;/td&gt; &lt;td&gt; 37 112  &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;User, Group, SupplementaryGroups   &lt;/td&gt; &lt;td&gt; /usr/bin/su &lt;/td&gt; &lt;td&gt;   32 032 suid!  &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;Nice   &lt;/td&gt; &lt;td&gt;/usr/bin/nice&lt;/td&gt; &lt;td&gt;   35 776  &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;IOSchedulingClass, *Priority&lt;/td&gt; &lt;td&gt;/usr/bin/ionice&lt;/td&gt; &lt;td&gt;22 928  &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;CPUSchedulingPolicy, *Priority&lt;/td&gt; &lt;td&gt;/usr/bin/chrt&lt;/td&gt; &lt;td&gt;    27 968  &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;CPUAffinity&lt;/td&gt; &lt;td&gt;      /usr/bin/taskset &lt;/td&gt; &lt;td&gt; 31 464  &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;UMask&lt;/td&gt; &lt;td&gt;    /usr/bin/umask &lt;/td&gt; &lt;td&gt;   29 shell builtin  &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;Limit* &lt;/td&gt; &lt;td&gt;  ulimit  &lt;/td&gt; &lt;td&gt;  shell builtin  &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;Capability*    &lt;/td&gt; &lt;td&gt;  /usr/sbin/setcap &lt;/td&gt; &lt;td&gt; 14 024  &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;InaccessibleDirectories    &lt;/td&gt; &lt;td&gt;  /usr/bin/unshare &lt;/td&gt; &lt;td&gt; 14 992  &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;RuntimeWatchdogSec&lt;/td&gt; &lt;td&gt;   /usr/sbin/watchdog&lt;/td&gt; &lt;td&gt;    88 752  &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;Listen*&lt;/td&gt; &lt;td&gt;  /usr/sbin/xinetd     &lt;/td&gt; &lt;td&gt; 178 872 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;OnCalendar&lt;/td&gt; &lt;td&gt;   /usr/sbin/crond&lt;br&gt;
                            /usr/sbin/atd&lt;br&gt;
                            /usr/bin/at&lt;/td&gt; &lt;td&gt;   66 016 &lt;br&gt;28 648&lt;br&gt;53 812 suid! &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/center&gt;


&lt;p&gt;Above binaries are needed because they’re doing something plain shell scripts can’t do – syscalls. Growing number of Linux API can be manipulated by means of &lt;code&gt;echo&lt;/code&gt;, &lt;code&gt;mkdir&lt;/code&gt; and &lt;code&gt;ln&lt;/code&gt;, but there always will be need for some syscalls.&lt;/p&gt;

&lt;p&gt;By removing legacy utilites, we save total of &lt;strong&gt; (magical) 640 kilobytes&lt;/strong&gt;.  Not much. Probably not worth the hassle. What else can we remove? /usr/sbin/hostname (20 304 bytes)? start-stop-daemon? vcsonsole setup, quotacheck, sysctl, cryptsetup, syslog, acpid?&lt;/p&gt;

&lt;p&gt;Sizes were collected on Fedora 20 amd64 system.&lt;/p&gt;

&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Archived comments:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stanisław 'dozzie' Klekot&lt;/strong&gt; &lt;em&gt;2013-07-17 23:32:33&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Erm.&lt;br&gt;
/usr/bin/cd -- What is this? I've never seen such binary (probably because it's impossible to expose chdir() as an external command).&lt;br&gt;
/usr/bin/umask -- The same. What is it?&lt;br&gt;
/usr/bin/su, which is rarely located in /usr/bin, is pretty much required anyway for any system that is not horribly crippled (mainly for interactive use; I do not consider it a tool to use in scripts).&lt;br&gt;
&lt;br&gt;
syslog virtually cannot be removed from system. systemd's journald is not (and doesn't seem to be going to be) a sensible solution for general-purpose logging and it focuses on collecting logs on a single host. Unattended or embedded system should be able to log to some remote destination.&lt;br&gt;
&lt;br&gt;
And all the rest of your breakdown, it's actually useless. You try to measure size of executables for purposely-built system, but you take references from a desktop OS. You haven't even scratched surface of special purpose systems (BusyBox anyone?).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2013-07-18 08:38:04&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;% cat /usr/bin/umask&lt;br&gt;
#!/bin/sh&lt;br&gt;
builtin umask "$@"&lt;br&gt;
&lt;br&gt;
And other builtins in similar manner. &lt;br&gt;
For busybox, I'm not sure if it provides ”enough Linux” to run systemd.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stanisław 'dozzie' Klekot&lt;/strong&gt; &lt;em&gt;2013-07-18 10:10:25&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Okay, and how do you expect that to affect *parent* process you issued the command in? Because bash and zsh don't take the shortcut of trying to execute the script in the same process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;shasta&lt;/strong&gt; &lt;em&gt;2013-07-18 20:48:45&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;dozzie, you say that syslog cannot be removed? Well, apparently Lennart sees things differently ;-)&lt;br&gt;
http://thread.gmane.org/gmane.linux.redhat.fedora.devel.announce/1117/&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stanisław 'dozzie' Klekot&lt;/strong&gt; &lt;em&gt;2013-07-18 21:05:19&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Of course he sees things that way. He is the creator of journald. But hey! Suddenly there is still a need for syslog!&lt;br&gt;
&lt;br&gt;
Journald can't operate sensibly in installations intended for no interactive sessions. There just has to be remote logging possibility, and that journald doesn't provide.&lt;br&gt;
&lt;br&gt;
Journald is pretty much only good for desktop cases. It will do for Fedora, as I don't know of anybody using it on servers anyway, but it's way too crippled logging solution to replace syslog altogether.&lt;br&gt;
&lt;br&gt;
You may read a bit of Rainer Gerhards' articles about journald, shasta. He's the author of rsyslog, so he is biased the other way (but very little, I think) -- this should straighten your view on logging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;shasta&lt;/strong&gt; &lt;em&gt;2013-07-18 23:04:43&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Why do you think my view on logging needs straightening? :-) I didn't say I agree with Lennart.&lt;br&gt;
&lt;br&gt;
I am a big fan of syslog-ng, plus - as a long time Slackware user I don't see journald/systemd crawling into my bed anytime soon. Honestly, I'm just a spectator for this whole systemd drama, watching it from a safe distance. ;-) &lt;br&gt;
&lt;br&gt;
And as for work, well, I will always have to deal with some sort of crap anyway, so whether this is Solaris 8 or systemd - doesn't make much of a difference to me ;-)&lt;/p&gt;</description><category>english</category><category>Linux</category><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2013/07/17/trimming-legacy-fat-with-systemd/</guid><pubDate>Wed, 17 Jul 2013 19:42:00 GMT</pubDate></item><item><title>Więc, często tak sobie benchmarkujesz?</title><link>https://enotty.pipebreaker.pl/2013/04/15/wiec-czesto-tak-sobie-benchmarkujesz/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;Do tematu wspomagania wolnego dysku mechanicznego szybkim SSD wracam
&lt;a href="http://enotty.pipebreaker.pl/2010/05/03/wiec-chcesz-uzyc-ssd-do-przyspieszenia-serwera/"&gt;trzy
lata później&lt;/a&gt;.  Celem jest sprawdzenie jak sobie radzi i ile daje dostępne
w jądrze linuksa &lt;code&gt;dm-cache&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;&lt;h4&gt;Co potrzeba?&lt;/h4&gt; &lt;ul&gt;
&lt;li&gt;dysk wolny — udział bierze dysk 5400 RPM 160GB&lt;/li&gt;
&lt;li&gt;dysk na cache, czyli partycja 5GiB na Samsung SSD 830&lt;/li&gt;
&lt;li&gt;dysk na metadane — partycja 32MiB na powyższym SSD&lt;/li&gt;
&lt;/ul&gt;

Pokusiłem się o test &lt;em&gt;real-life&lt;/em&gt;. Na wolnym dysku znajdują
się obrazy maszyn wirtualnych. W czasie testu  w jednej z nich
robiona był aktualizacja dwóch pakietów — &lt;code&gt;kernel&lt;/code&gt; oraz &lt;code&gt;fedup&lt;/code&gt;
— oraz usunięcie trzeciego &lt;code&gt;preupgrade&lt;/code&gt;. Po aktualizacji cofnięcie
tranzakcji. Pomiar wykonany
5 krotnie, skrajne wyniki odrzucone, pozostałe uśrednione. Następnie włączenie
cachu na SSD i powtórzenie procedury.

&lt;p&gt;&lt;/p&gt;&lt;h4&gt;Środowisko:&lt;/h4&gt;
host: Fedora 18 Spherical Cow z jądrem 3.9.0-0.rc6.git0.1.fc19.x86_64&lt;br&gt;
gość: Fedora 20 Rawhide&lt;br&gt;
&lt;br&gt;
Instalacja:
&lt;pre&gt;
 fedup     noarch      0.7.3-2.fc20               rawhide     67 k
     replacing  preupgrade.noarch 1.1.11-3.fc19
 kernel    x86_64      3.9.0-0.rc6.git0.1.fc20    rawhide     27 M
&lt;/pre&gt;
&lt;br&gt;
Pomiar:
&lt;pre&gt;
% time yum history redo 558 -y
% time yum history undo 558 -y&lt;/pre&gt;


&lt;p&gt;&lt;/p&gt;&lt;h4&gt;Decyzje i konfiguracja&lt;/h4&gt;

&lt;p&gt;Rozdzielenie urządzenia dla metadanych i właściwego &lt;em&gt;cache&lt;/em&gt; ma na celu
zwiększenie elastyczności rozwiązania. O ile dobór wielkości &lt;em&gt;cache&lt;/em&gt; jest
prosty (&lt;em&gt;im więcej tym lepiej&lt;/em&gt;), to jak z nośnikiem metadanych? Do tego
służy następująca reguła:
&lt;/p&gt;&lt;blockquote&gt;
  4MiB + (16bytes * nr_blocks)
&lt;/blockquote&gt;

A wielkość bloku? To już zależy od charakterystyki obciążenia. Ja przyjąłem “na
oko” blok wielkości &lt;b&gt;64KiB&lt;/b&gt;. Przy urządzeniu &lt;em&gt;cache&lt;/em&gt; wielkości 5GiB,
otrzymujemy porywające zapotrzebowanie &lt;b&gt;5,25 MiB&lt;/b&gt;.

&lt;p&gt;Mamy więc już prawie wszystko: urządzenie do przyspieszenia (sdb), partycję
na cache (sda5), partycję na metadane (sda6) i wielkość bloku (64KiB czyli 128
sektorów po 512 bajtów). Potrzebujemy tylko wielkości urządzenia &lt;b&gt;sdb&lt;/b&gt; w
sektorach:
&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;
% blockdev --getsz /dev/sdb 
312581808&lt;/pre&gt;
&lt;/blockquote&gt;

Możemy więc utworzyć, zamountować cache i przejść do pomiarów:
&lt;blockquote&gt;&lt;pre&gt;
% dmsetup create fusiondrive --table '0 312581808 cache /dev/sda6 /dev/sda5 /dev/sdb 128 1 writeback default 0'

% mount /dev/mapper/fusiondrive /var/lib/libvirt/images -o subvol=var_lib_libvirt_images&lt;/pre&gt;
&lt;/blockquote&gt;


&lt;p&gt;&lt;/p&gt;&lt;h4&gt;Wyniki i intepretacja&lt;/h4&gt;
&lt;p&gt;Zero. Żadnej zauważalnej różnicy. O ile jeszcze procent trafień przy zapisie 
oscylował w okolicach 4%, to przy odczycie średnia wyszła 0,12%. Czasy
&lt;em&gt;sys&lt;/em&gt; i &lt;em&gt;user&lt;/em&gt; zbliżone - okolice 40s i 50s dla instalacji,
w granicach 2,5s dla deinstalacji. Czas &lt;em&gt;real&lt;/em&gt; - duży rozrzut, do 83s
do ponad 330s. Całkowicie bezużytecznie, nawet nie ma co wykresów robić.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;&lt;h4&gt;Winny 1 - time yum&lt;/h4&gt;
&lt;p&gt;Instalacja jądra wydawała się dobrym pomysłem do momentu spojrzenia na wykresy
zajętości zasobów przez maszynę wirtualną. Gros czasu  obciążenie 100% CPU przy
minimalnym użyciu dysku. Powodem było tworzenie obrazu &lt;code&gt;initramfs&lt;/code&gt;,
a użycie CPU wynika z tworzeni i kompresji pliku cpio. Przydatność do testowania wejścia/wyjścia — żadna. Dodatkowo, yum większość czasu spędzał śpiąc i czekając na procesy potomne wykonujące prawdziwą pracę, w tym czasie nie był mu naliczany czas.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;&lt;h4&gt;Winny 2 - system plików btrfs&lt;/h4&gt;
&lt;p&gt;Zarówno dysk &lt;code&gt;sdb&lt;/code&gt;, na którym znajduje się obraz maszyny wirtualnej,
jak i sama maszyna skonfigurowane są z  &lt;code&gt;btrfs&lt;/code&gt;. Jest to
system plików typu &lt;em&gt;copy-on-write&lt;/em&gt;, co oznacza, że dane nigdy nie są nadpisywane.
Zapis polega na odczycie danych, zapisaniu zmodyfikowanej kopii gdzieś indziej
i uaktualnieniu wskaźników na dysku. Odniesienia do oryginalnej kopii danych
znikają (o ile nie ma snapshotów).&lt;/p&gt;
&lt;p&gt;Cache działający na poziomie bloków danych nie ma pojęcia, że wrzuca
do pamięci podręcznej bloki, do których system plików już nie będzie wracał. Taka
już jego uroda, ma ten problem &lt;code&gt;dm-cache&lt;/code&gt;, ma go &lt;code&gt;bcache&lt;/code&gt;,
będzie miał każdy inny. &lt;code&gt;btrfs&lt;/code&gt; nie nadaje sie do akceleracji w
ten sposób. Dopiero wbudowanie mechanizmów cache SSD w sam &lt;code&gt;btrfs&lt;/code&gt;
da jakieś sensowne wyniki. Może nawet porównywalne z &lt;a href="https://blogs.oracle.com/brendan/entry/test"&gt;osiągami ZFS&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;W skrócie: benchmarkować to trzeba umieć, panoczku.&lt;/p&gt;

&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Archived comments:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DeHa&lt;/strong&gt; &lt;em&gt;2013-04-15 15:19:11&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Czyli eksperyment dowiódł, że btrfs jest faktycznie CoW. ;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2013-04-15 15:29:57&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Mooooo!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LCF&lt;/strong&gt; &lt;em&gt;2013-04-15 16:00:35&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Huh,&lt;br&gt;
&lt;br&gt;
A nie prościej wszystko przemigrować na SSD, zamiast jakieś wynalazki z cachami ?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2013-04-15 17:00:45&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Oczywiście, że łatwiej i za parę lat ekonomicznie to będzie uzasadnione. Na dzień dzisiejszy rozwiązania pamięci hierarchicznej sprzedają się dobrze.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;tap&lt;/strong&gt; &lt;em&gt;2013-11-25 14:43:31&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Zrobiłem teścik bcache - taki organoleptyczny.&lt;br&gt;
&lt;br&gt;
Bcache na 2x 120GB SSD (samsung pro i kingston jakiś szybki) w raid1 na linuxowym md + 4x 1TB Segate w raidz1 i na tym zfs.&lt;br&gt;
&lt;br&gt;
Bez ssd-ków trzy chodzące równolegle tary powodowały zawał systemu. Load szedł w kosmos, próba zrobienia zfs list kosztowała czasem nawet kilkanaście sekund.&lt;br&gt;
&lt;br&gt;
Z bcache 10 chodzących równolegle tarów, load na poziomie 2-3 (8 fizycznych rdzeni HT, więc znikomy), system reponsywny, nadal możliwe było dowalenie jakiejś jeszcze operacji dyskowej. Co ciekawe, 10 tarów wykonało się szybciej (182s) niż 3 tary (270s).&lt;br&gt;
&lt;br&gt;
bcache fkoz jako write-back - dlatego na MD, dlatego na dwóch różnych SSD.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2013-12-18 13:35:31&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Przecież ZFS ma natywną obsługę cache na SSD, dlaczego przez bcache?&lt;/p&gt;</description><category>Linux</category><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2013/04/15/wiec-czesto-tak-sobie-benchmarkujesz/</guid><pubDate>Mon, 15 Apr 2013 13:14:00 GMT</pubDate></item><item><title>Pożegnanie z em1</title><link>https://enotty.pipebreaker.pl/2013/01/09/pozegnanie-z-em1/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;Przyzwyczaili się już do &lt;a href="http://enotty.pipebreaker.pl/2010/12/21/pozegnanie-z-eth0/"&gt;&lt;code&gt;em1&lt;/code&gt; i podobne w miejsce &lt;code&gt;eth0&lt;/code&gt;&lt;/a&gt;? Jeśli nie, to dobrze, bo wygląda na to, że znowu się zmieni.&lt;/p&gt;

&lt;p&gt;Kay Sievers zaimplementował w &lt;code&gt;udev&lt;/code&gt; nowe polityki nazewnictwa, znacznie rozszerzające ofertę &lt;code&gt;biosdevname&lt;/code&gt;. Admin ma do wyboru kilka sposobów określania nazwy sieciowej wraz z możliwością &lt;em&gt;wyłączenia tego w cholerę&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Wbudowane sieciówki ethernetowe już nie będą &lt;code&gt;emX&lt;/code&gt;, a &lt;code&gt;enoX&lt;/code&gt;. Dokładane mogą mieć nazwę zależną od "hotplug id" slotu (&lt;code&gt;ensX&lt;/code&gt;) bądź od id gniazda PCIe (&lt;code&gt;enpXsY&lt;/code&gt;). Oczywiście urządzenia wielofunkcyjne nazwy mają odpowiednio dłuższe, jak &lt;code&gt;enpXsYfZ&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Dla hardcorowców pozostają nazwy z osadzonym adresem MAC - &lt;code&gt;wwx028037ec0200&lt;/code&gt; (tutaj &lt;code&gt;ww&lt;/code&gt; jest przedrostkiem urządzenia WWAN; jak łatwo się domyślić, &lt;code&gt;en&lt;/code&gt; w poprzednich przykładach oznacza &lt;em&gt;Ethernet&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;Szerszy opis &lt;a href="http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames"&gt;na wiki&lt;/a&gt; oraz &lt;a href="http://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udev-builtin-net_id.c"&gt;w kodzie źródłowym&lt;/a&gt;.&lt;/p&gt;</description><category>Linux</category><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2013/01/09/pozegnanie-z-em1/</guid><pubDate>Wed, 09 Jan 2013 08:08:00 GMT</pubDate></item><item><title>Linux automatic user ACL management</title><link>https://enotty.pipebreaker.pl/2012/05/23/linux-automatic-user-acl-management/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;You may have not noticed, because it &lt;em&gt;just works&lt;/em&gt; in Linux. Every time user logs in, Access Control Lists on a few important devices nodes are set for him. And every time his session becomes inactive, ACL are revoked. It looks like this:&lt;/p&gt;

&lt;blockquote&gt;&lt;pre&gt;
# getfacl &lt;b&gt;/dev/video0&lt;/b&gt;
getfacl: Removing leading '/' from absolute path names
# file: dev/video0
# owner: root
# group: video
user::rw-
&lt;b&gt;user:zdzichu:rw-&lt;/b&gt;
group::rw-
mask::rw-
other::---&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;Works like this:&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;&lt;center&gt;
&lt;iframe width="640" height="480" src="//www.youtube.com/embed/qcD4Qr5ldbI" frameborder="0" allowfullscreen&gt;[a movie!]&lt;/iframe&gt;
&lt;p&gt;&lt;small&gt;Audio device access for user “zdzichu” is only granted when this user has an active session. If no one is logged in, or user “tomek” has an active session, then “zdzichu” access is revoked.&lt;/small&gt;
&lt;/p&gt;&lt;/center&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;And works internally like this...&lt;/p&gt;

&lt;h4&gt;Which devices are affected?&lt;/h4&gt;

&lt;p&gt;In theory, the devices belonging to the seat used by user. In addition to peripherals, access to a few subsystems is granted. Best practice is to &lt;b&gt;classify&lt;/b&gt; your device — some classes have the privilege of being ACL-managed. The logic lies in &lt;code&gt;70-uaccess.rules&lt;/code&gt; in &lt;code&gt;udev&lt;/code&gt; configuration. Devices of the following classes are made accessible: &lt;code&gt;ID_GPHOTO2, ID_HPLIP, ID_CDROM, ID_FFADO, ID_SMARTCARD_READER, ID_PDA, ID_REMOTE_CONTROL, ID_INPUT_JOYSTICK, ID_MEDIA_PLAYER&lt;/code&gt;. Names are self-explanatory.&lt;/p&gt;

&lt;p&gt;In future, this classification will let administator decide which classes are granted to local user.&lt;/p&gt;

&lt;p&gt;Some subsystems are treated specially, access is allowed without further classification. Those subsystems are: sound, video4linux, dvb, drm.&lt;/p&gt;

&lt;h4&gt;We need to go deeper&lt;/h4&gt;

&lt;p&gt;Classification from previous paragraph is really an abstraction layer. The ACL granting is handled at the lowest level in file &lt;code&gt;/usr/lib/udev/rules.d/73-seat-late.rules&lt;/code&gt; by this line:

&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;TAG=="uaccess", ENV{MAJOR}!="", RUN+="/usr/lib/systemd/systemd-uaccess $env{DEVNAME} $env{ID_SEAT}"&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;The &lt;code&gt;systemd-uaccess&lt;/code&gt; helper is run for each device with &lt;code&gt;uaccess&lt;/code&gt; tag (tagging itself happens in &lt;code&gt;70-uaccess.rules&lt;/code&gt;). On my system, there are a few devices affected:

&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;
# udevadm info --export-db | grep -cE "TAG.*uaccess"
9&lt;/pre&gt;&lt;/blockquote&gt;

&lt;h4&gt;Example: USB-to-RS232 converter&lt;/h4&gt;
&lt;p&gt;There is no proper class for this gizmo. We can either invent one and send the patch to upstream, or short-circuit logic by tagging device directly. For simplicity, let’s take the second route, keeping in mind it’s discouraged :)&lt;/p&gt;

&lt;p&gt;After plugging in our device, use &lt;code&gt;udevadm info&lt;/code&gt; to see what &lt;code&gt;udev&lt;/code&gt; knows about it and what makes it special. It may be a serial number, specific values of vendor id or product id, type, model or any other property. For my device, I will differentiate on model. Create a simple rule:

&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;
# cat /etc/udev/rules.d/92-usbserial-for-user.rules 
SUBSYSTEM=="tty", ENV{ID_MODEL}=="USB_Serial_Converter", TAG+="uaccess"
&lt;/pre&gt;&lt;/blockquote&gt;

From now on, every time this converter is plugged in, an active user will gain access to &lt;code&gt;/dev/ttyUSB0&lt;/code&gt; thanks to ACLs.

&lt;p&gt;This leaves us with important question:&lt;/p&gt;

&lt;h4&gt;Who is an &lt;em&gt;active user&lt;/em&gt;?&lt;/h4&gt;
&lt;p&gt;This information is managed by &lt;code&gt;logind&lt;/code&gt;. CLI interaction is provided by &lt;code&gt;loginctl&lt;/code&gt;:

&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;
# loginctl 
   SESSION        UID USER             SEAT            
        36        502 tomek            seat0           
         2        500 zdzichu          seat0    

# loginctl show-session -p Active 36
Active=no

# loginctl show-session -p Active 2
Active=yes
&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thus, ACLs for currently active user “zdzichu” are applied. Start of new session is signalled by &lt;code&gt;pam_systemd&lt;/code&gt; module, which should be included in PAM stack. &lt;code&gt;logind&lt;/code&gt; by itself watches for active VT console. In other implementations, like for example &lt;a href="https://github.com/dvdhrm/kmscon/wiki/KMSCON"&gt;kmscon&lt;/a&gt;, explicit calls on console switch are needed. Calls to &lt;code&gt;logind&lt;/code&gt;, of course.&lt;/p&gt;
&lt;p&gt;(This section probably needs to be expanded)&lt;/p&gt;

&lt;h4&gt;Daemons&lt;/h4&gt;
&lt;p&gt;What to do if you have daemon requiring access to device nodes? Should it start its own session and keep it active? The answer is no. Daemons should be added to the appropriate group. For example, CCTV daemon should be in group &lt;code&gt;video&lt;/code&gt;, which has access to &lt;code&gt;/dev/video*&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Group ownership of device nodes is of course managed by &lt;code&gt;udev&lt;/code&gt;:

&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;# grep video /usr/lib/udev/rules.d/*
/usr/lib/udev/rules.d/50-udev-default.rules:# video4linux
/usr/lib/udev/rules.d/50-udev-default.rules:SUBSYSTEM=="video4linux", &lt;b&gt;GROUP="video"&lt;/b&gt;
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;Yes, that’s an UNIX way.&lt;/p&gt;

&lt;p&gt;By the way, you don’t want users permanently added to groups like &lt;code&gt;audio&lt;/code&gt; or &lt;code&gt;video&lt;/code&gt;. Such user would be able to ssh into the machine while you are using it and spy on you using webcam, microphone etc. Access to such critical peripherals should only be granted for active user.&lt;/p&gt;

&lt;h4&gt;What could possibly go wrong?&lt;/h4&gt;
&lt;p&gt;Everything. There’s a lot of moving parts. Hopefully, most of them are very simple. And with this document, you’ll know what parts to check.&lt;/p&gt;

&lt;p&gt; One quite complicated aspect is finding the link between current graphical session and Xorg socket in &lt;code&gt;/tmp&lt;/code&gt;. This could go wrong, and will go wrong if you have &lt;a href="http://fedoraproject.org/wiki/Infrastructure/FedoraPeopleConfig#polyinstantiated_tempdirs"&gt;per-user /tmp dirs&lt;/a&gt;¹. In this case current user will have no sound, no accelerated GUI etc.&lt;/p&gt;

&lt;p&gt;Standard installations require &lt;code&gt;pam_systemd&lt;/code&gt; to be included in PAM stack. pam_systemd(8) man page contains example snippet.&lt;/p&gt;

&lt;p&gt;&lt;small&gt;¹ — this could be fixed by looking for X socket in abstract namespace first. Nobody needed it done, yet.&lt;/small&gt;&lt;/p&gt;

&lt;h4&gt;Look into the past&lt;/h4&gt;
&lt;p&gt;Information here applies to the last couple of Fedora releases.&lt;/p&gt;
&lt;p&gt;Some time ago, ACL modifications were done by &lt;code&gt;udev&lt;/code&gt; working with ConsoleKit database. The rules were different. Devices had to be TAGed with &lt;code&gt;TAG+="udev-acl"&lt;/code&gt; or variables like &lt;code&gt;ENV{ACL_MANAGE}="1"&lt;/code&gt; were used.  This no longer applies.&lt;/p&gt;</description><category>english</category><category>Linux</category><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2012/05/23/linux-automatic-user-acl-management/</guid><pubDate>Wed, 23 May 2012 17:22:00 GMT</pubDate></item><item><title>systemd: Jolu, pokaż Panom cel</title><link>https://enotty.pipebreaker.pl/2012/03/08/systemd-jolu-pokaz-panom-cel/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;&lt;a href="http://enotty.pipebreaker.pl/2010/08/04/krotki-instruktaz-systemd-cele-i-migawki/"&gt;Jak
pisałem dwa lata temu&lt;/a&gt;, systemd pozbywa się pojęcia &lt;code&gt;runleveli&lt;/code&gt;,
dając w zamian &lt;strong&gt;cele&lt;/strong&gt;. Cel jest swego rodzaju punktem
synchronizacji, w którym system zapewnia określoną funkcjonalność. Zależności
między celami, tak jak między innymi jednostkami, nie są liniowe:&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;&lt;center&gt;&lt;a href="http://xn--dogstaff-33b.pipebreaker.pl/2012.03.08-targets.png"&gt;
&lt;img src="http://xn--dogstaff-33b.pipebreaker.pl/2012.03.08-targets.m.png"&gt;&lt;/a&gt;
&lt;/center&gt;

&lt;p&gt;Otwórzmy powyższy obrazek i zastanówmy, &lt;em&gt;co ja pacze&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;Na początek legenda. &lt;strong&gt;Czarna&lt;/strong&gt; strzałka oznacza, że wskazywany
cel jest wymagany przez wskazujący (&lt;code&gt;Requires=&lt;/code&gt;). 
&lt;strong&gt;Zielona&lt;/strong&gt; wskazuje na kolejność, wskazywany musi się aktywować
do końca, zanim systemd przejdzie do wskazywanego (&lt;code&gt;After=&lt;/code&gt;). 
&lt;strong&gt;Czerwona&lt;/strong&gt; oznacza konflikt (&lt;code&gt;Conflicts=&lt;/code&gt;). Jak widać
&lt;code&gt;shutdown.target&lt;/code&gt; konfliktuje ze wszystkich, czyli aktywacja
shutdownu powoduje zwinięcie wszystkich innych celi.&lt;/p&gt;

&lt;p&gt;Jak widać w górnej-lewej części obrazka: &lt;code&gt;nss-lookup.target&lt;/code&gt; &lt;strong&gt;nie
wymaga&lt;/strong&gt; &lt;code&gt;network.target&lt;/code&gt;. Jeśli jednak z jakiegoś powodu &lt;code&gt;network.target&lt;/code&gt;
zostanie aktywowany, to &lt;code&gt;nss-lookup.target&lt;/code&gt; wykona się &lt;strong&gt;po&lt;/strong&gt;
nim — zielona strzałka.&lt;/p&gt;

&lt;p&gt;Przy systemd nie można za bardzo powiedzieć o &lt;em&gt;kolejności&lt;/em&gt; przy
starcie systemu. Tutaj wybiera się &lt;em&gt;docelowy&lt;/em&gt; stan systemu i osiąga
go poprzez przywołanie wszystkich zależności. Analizę &lt;em&gt;co się dzieje&lt;/em&gt;
łatwiej jednak prowadzić od końca.&lt;/p&gt;

&lt;p&gt;Załóżmy więc, że system ma działać w trybie graficznym. Celem jest więc
&lt;code&gt;graphical.target&lt;/code&gt;, który z grubsza można porównać z &lt;em&gt;runlevelem&lt;/em&gt;
2. w debianowatych. 4. w Slackware, 5. w starych redhatowych, SUSE i Archu —
umożliwia logowanie użytkowników w trybie graficznym.&lt;/p&gt;

&lt;p&gt;Jako pierwsze aktywowane zostaną wymagania &lt;code&gt;sysinit.target&lt;/code&gt;
(&lt;em&gt;A special target unit covering early boot-up scripts&lt;/em&gt;). Ten zaciąga
przestrzenie wymiany (&lt;code&gt;swap.target&lt;/code&gt;), lokalne systemy plików
(&lt;code&gt;local-fs.target&lt;/code&gt;), w tym również szyfrowane  z pytaniem o hasło,
jeśli potrzeba (&lt;code&gt;cryptsetup.target&lt;/code&gt;). Aktywacje tej trójki odbywają
się &lt;em&gt;równolegle&lt;/em&gt;. Kiedy zakończą się aktywacje i wystartowane zostaną
usługi dla tego celu, &lt;code&gt;sysinit.target&lt;/code&gt; zostaje osiągnięty.&lt;/p&gt;

&lt;p&gt;Umożliwia to  przejście do &lt;code&gt;basic.target&lt;/code&gt;. Zadaniem tego jest
dodatkowo uruchomienie wszystkich gniazd, na których słucha systemd 
(&lt;code&gt;sockets.target&lt;/code&gt;). System w tym stanie może przejść do &lt;strong&gt;trybu ratunkowego&lt;/strong&gt;
(&lt;code&gt;rescue.target&lt;/code&gt;) który daje powłokę odzyskiwania systemu. Przypominając:
mamy zamountowane lokalne systemy plików, włączony swap i zainicjowane
podstawowe mechanizmy dystrybucji. Taki &lt;em&gt;runlevel 1&lt;/em&gt;.&lt;br&gt;
Tu warto wspomnieć o trybie awaryjnym &lt;code&gt;emergency.target&lt;/code&gt;. Jest to
absolutnie minimalny stan, w którym można próbować naprawić całkowicie zepsuty
system. Odpowiada niemal uruchomieniu jądra z parametrem &lt;code&gt;init=/bin/sh&lt;/code&gt;,
daje jednak możliwość kontynuacji normalnego uruchamiania po naprawie.&lt;/p&gt;

&lt;p&gt;Stąd system może przejść również &lt;code&gt;multi-user.target&lt;/code&gt;. Jest to
podstawowy stan linuksa — działają prawie wszystkie demony, użytkownicy
moga logować się na konsolach (dzięki zaciągnięciu &lt;code&gt;getty.target&lt;/code&gt;). Pachnie
jak &lt;em&gt;runlevel 3&lt;/em&gt;. &lt;code&gt;multi-user.target&lt;/code&gt; &lt;strong&gt;nie wymaga&lt;/strong&gt; trybu ratunkowego,
ale jeśli takowy był uruchomiony, to musi skończyć się wykonywać przed przejściem
w m-u.target — zielona strzałka.&lt;/p&gt;

&lt;p&gt;Z aktywnego &lt;code&gt;multi-user.target&lt;/code&gt; już tylko krok do uruchomienia
graficznego zarządcy logowania i osiągnięcia zadanego &lt;code&gt;graphical.target&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Większość z tych etapów opisana jest na stronie manuala 
&lt;strong&gt;&lt;code&gt;systemd.special&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Skąd brany jest cel przy starcie systemu? Zazwyczaj wskazuje go łącze symboliczne:
&lt;code&gt;/usr/lib/systemd/system/default.target -&amp;gt; graphical.target&lt;/code&gt;. Administrator
może je przesłonić podając w linii poleceń jądra frazę &lt;code&gt;systemd.unit=&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Cele są punktami, do których przypisujemy usługi do uruchomienia w obecnym
stanie. Weźmy np. wiszące luzem na obrazku cele po prawej stronie. Taki
&lt;code&gt;bluetooth.target&lt;/code&gt; aktywowany jest przez pojawienie się urządzenia
obsługującego BT: &lt;/p&gt;

&lt;p&gt;
&lt;code&gt;/usr/lib/udev/rules.d/99-systemd.rules:SUBSYSTEM=="bluetooth", TAG+="systemd", ENV{SYSTEMD_WANTS}="bluetooth.target"&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;
i powoduje wystartowanie odpowiedniej usługi: 
&lt;/p&gt;
&lt;p&gt;
&lt;code&gt;/etc/systemd/system/bluetooth.target.wants/bluetooth.service&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;
Podobnie można np. przywiesić usługi do wystartowanie w związku z kartą dźwiękową
do &lt;code&gt;sound.target&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Nie należy zapominać, że start to tylko jeden z etapów życia systemu. Wdzięczny
do omówienia, gdyż powoduje kaskadę aktywacji różnych celi. W normalnym użytkowaniu
jest to jednak bardzo specyficzna sytuacja i nie należy się na niej skupiać w
celach innych niż akademickie.&lt;/p&gt;

&lt;p&gt;&lt;small&gt;Obrazek wygenerowany &lt;code&gt;grep&lt;/code&gt;em z &lt;code&gt;systemctl dot&lt;/code&gt;&lt;/small&gt;.&lt;/p&gt;</description><category>Linux</category><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2012/03/08/systemd-jolu-pokaz-panom-cel/</guid><pubDate>Thu, 08 Mar 2012 10:16:00 GMT</pubDate></item><item><title>Haczyki przy upgrade do 64 bitów</title><link>https://enotty.pipebreaker.pl/2012/02/09/haczyki-przy-upgrade-do-64-bitow/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/X86-64"&gt;Dekadę  po wprowadzeniu architektury AMD64&lt;/a&gt; przerobiłem w końcu ostatnią z moich maszyn na dystrybucję 64-bitową. Sprzęt był &lt;em&gt;capable&lt;/em&gt; od dawna, ale jego wymiana odbyła się metodą transplantacji dysków ze starego komputera i nie było kiedy zmienić softu.&lt;/p&gt;

&lt;p&gt;Procedura jest prosta. Instalujemy kernel 64 bitowy, uruchamiany z niego system z 32-bitowym userlandem i reinstalujemy wszystkie pakiety po kolei w wersjach x86_64. Userland 32 na jądrze 64 działa sprawnie nawet na x86, ale trzeba mieć na uwadze trzy drobiazgi:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automount ma &lt;a href="https://lkml.org/lkml/2011/9/16/130"&gt;rozbieżne wielkości strukturki danych&lt;/a&gt; między 32 a 64 bity.&lt;/strong&gt; Owocuje to zawieszeniem w czasie uruchamiania systemu 32 bit na jądrze 64 bit.  Pamiętać należy o wyłączeniu automountów przed takim bootem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RRD nie lubi baz stworzonych na innej architekturze.&lt;/strong&gt; Tu warto zrobić &lt;code&gt;rrdtool dump&lt;/code&gt; do xml na 32 bitach, a po upgradzie &lt;code&gt;rrdtool restore&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PostgreSQL też nie lubi plików baz danych utworzonych na innej architekturze.&lt;/strong&gt; Podobnie jak z RRD, najpierw &lt;code&gt;pg_dumpall&lt;/code&gt;, a po upgradzie &lt;code&gt;initdb&lt;/code&gt; i &lt;code&gt;psql -f dump.sql&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Inny soft na razie problemów nie wykazuje. Zapomnienie o zrzutach może zawocować drapaniem się w głowę podczas poszukiwania jakieś jeszcze działającej 32 bitowej instalacji, żeby dokonać ich &lt;em&gt;post factum&lt;/em&gt;. Ale na szczęście wystarcza pendrive USB z zainstalowaną 32 bitową instalacją i katalogi baz danych wyeksportowane przez NFS.&lt;/p&gt;

&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Archived comments:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Remigiusz 'lRem' Modrzejewski&lt;/strong&gt; &lt;em&gt;2012-02-09 14:56:56&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Tak właściwie, to po co to zrobiłeś?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stanisław 'dozzie' Klekot&lt;/strong&gt; &lt;em&gt;2012-02-09 16:27:24&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Nie wiem jakie były faktyczne powody, ale jednym bardzo dobrym jest możliwość pozbycia się ostatniego hosta x86. Dla administratora to na przykład brak konieczności przygotowywania pakietów na jedną więcej architekturę.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2012-02-09 17:16:34&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;lrem: jak dozzie pisze, odstawało od reszty. I ma 8GB RAM, niedlugo moze 16, uzywanie PAE smierdzi troche.&lt;br&gt;
Z dziwnych rzeczy, po upgradzie zaczela dzialac wetknieta kiedys karta TV na chipie bttv - pewnie wczesniej cos z przestrzenia adresowa nieteges było.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;rozie&lt;/strong&gt; &lt;em&gt;2012-02-09 18:43:50&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Jeśli dobrze kojarzę skorzytsałeś z bardzo niezalecanej metody upgrade'u systemu (BTW jakie distro?). W sumie jakie zalety w stosunku do odpalenie z live i przywrócenie systemu z backupu?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2012-02-10 09:05:50&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;rozie: z zupelnie niezalecanej, chyba żadne distro nie wspiera zmiany architektury. Fedora na pewnie nie :).&lt;br&gt;
Zalety takie, że ciągłość pracy (czyt. dostępu do internetu i rozrywki, w trakcie oglądałem film na rzeczonym komputerze). &lt;br&gt;
Przywracanie z backupu wiąże się też z instalowaniem od nowa wszystkiego, co się przez prawie 3 lata (od http://enotty.pipebreaker.pl/2009/06/16/goodbye-foresight/) zbierało, a czego nie ma w domyślnej instalce. A dumpy np. RRD i tak trzeba by było zrobić (bo backupują się u mnie binarne bazy).&lt;br&gt;
W skrócie: oszczędność czasu.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2012-02-19 19:00:10&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Tak za 64 bitami jeszcze:&lt;br&gt;
 nasty FPU state corruption issue that happened only when the wireless stack used the AES-NI instructions from softirqs on 32-bit x86.&lt;br&gt;
&lt;br&gt;
Moral of the story: don't use 32-bit kernels on modern CPU's that could do so much better.&lt;br&gt;
z https://plus.google.com/109995262342451767357/posts/KGijJrUZQ7j&lt;br&gt;
&lt;br&gt;
Pamiętam jakiś czas temu było też priviledge escalation, które działało na 32 bitach, a na 64 - z uwagi na organizację pamięci - nie działało.&lt;/p&gt;</description><category>Linux</category><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2012/02/09/haczyki-przy-upgrade-do-64-bitow/</guid><pubDate>Thu, 09 Feb 2012 09:29:00 GMT</pubDate></item><item><title>W którą stronę ewoluuje konfigurowanie Linuksa...</title><link>https://enotty.pipebreaker.pl/2012/01/16/w-ktora-strone-ewoluuje-konfigurowanie-linuksa/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;Ostatnio przemigrowałem z &lt;a href="http://stgt.sourceforge.net/"&gt;tgt&lt;/a&gt; na
nowy, lepszy, wbudowany w jądro &lt;a href="http://linux-iscsi.org/wiki/Main_Page"&gt;LIO&lt;/a&gt;.
Chodzi o &lt;em&gt;cel SCSI&lt;/em&gt;. Po robocie odsunąłem się od monitorów, spojrzałem na
stary config, spojrzałem na nowy i naszła mnie refleksja.&lt;/p&gt;

&lt;p&gt;Czy przejście z takiego sposobu konfigurowania:
&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;
vendor_id UTC FS Support
product_id Linux iSCSI

# Set the driver. If not specified, defaults to "iscsi".

default-driver iscsi

&amp;lt;target iqn.2010-08.com.fs.utc:dvdtmp&amp;gt;
        backing-store /dev/mapper/sabretoothvg-iscsi.dvdtmp
&amp;lt;/target&amp;gt;

&amp;lt;target iqn.2010-08.com.utc.fs:winxppp45client-stor1&amp;gt;
        backing-store /dev/sabretoothvg/iscsi.winxppp45client-stor1
&amp;lt;/target&amp;gt;

&amp;lt;target iqn.2011-02.com.utc.fs:esxi.local-space0&amp;gt;
        backing-store /dev/sabretoothvg/iscsi.esxi.local-space0
&amp;lt;/target&amp;gt;

&amp;lt;target iqn.2011-02.com.utc.fs:fcoe.test0&amp;gt;
       backing-store /dev/mapper/sabretoothvg-fcoe.test0
       allow-in-use yes
&amp;lt;/target&amp;gt;
&lt;/pre&gt;&lt;/blockquote&gt;

na taki (uwaga, ściana tekstu):
&lt;blockquote&gt;&lt;pre&gt;
#### Parameters for TCM subsystem plugin storage object reference
python /usr/lib/python2.6/site-packages/rtsadmin/tcm_node.py --establishdev iblock_0/iblock0 /dev/sabretoothvg/fcoe.test0
python /usr/lib/python2.6/site-packages/rtsadmin/tcm_node.py --setunitserialwithmd iblock_0/iblock0 72ad13f0-c8d2-4d96-bffe-30f9cfc46f2f
#### Parameters for TCM subsystem plugin storage object reference
python /usr/lib/python2.6/site-packages/rtsadmin/tcm_node.py --establishdev iblock_1/gilbertus.swap /dev/sabretoothvg/iscsi.gilbertus.swap
python /usr/lib/python2.6/site-packages/rtsadmin/tcm_node.py --setunitserialwithmd iblock_1/gilbertus.swap 7e05140f-6536-4813-a1a0-d9fdc3b7bca8
#### Parameters for TCM subsystem plugin storage object reference
python /usr/lib/python2.6/site-packages/rtsadmin/tcm_node.py --establishdev iblock_3/esxi.local-space0 /dev/sabretoothvg/iscsi.esxi.local-space0
python /usr/lib/python2.6/site-packages/rtsadmin/tcm_node.py --setunitserialwithmd iblock_3/esxi.local-space0 5bcaffac-6da0-42b0-ad07-fe130609674
#### iSCSI Target Ports
mkdir -p /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd/tpgt_1/lun/lun_0
ln -s /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd/tpgt_1/lun/lun_0/../../../../../../target/core/iblock_0/iblock0 /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd/tpgt_1/lun/lun_0/6efd3cb027
lio_node --aluasecmd iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd 1 0
mkdir -p /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd/tpgt_1/lun/lun_1
ln -s /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd/tpgt_1/lun/lun_1/../../../../../../target/core/iblock_4/winxppp45client-stor1 /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd/tpgt_1/lun/lun_1/1d6312ea35
lio_node --aluasecmd iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd 1 1
#### iSCSI Initiator ACLs for iSCSI Target Portal Group
mkdir -p /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd/tpgt_1/acls/iqn.1994-05.com.fedora:5f21153a55f
echo 16 &amp;gt; /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd/tpgt_1/acls/iqn.1994-05.com.fedora:5f21153a55f/cmdsn_depth
mkdir /sys/kernel/config/target/fc
#### fc Target Ports
mkdir -p /sys/kernel/config/target/fc/20:00:00:23:ae:b2:f4:3b/tpgt_1/lun/lun_0
ln -s /sys/kernel/config/target/fc/20:00:00:23:ae:b2:f4:3b/tpgt_1/lun/lun_0/../../../../../../target/core/iblock_0/iblock0 /sys/kernel/config/target/fc/20:00:00:23:ae:b2:f4:3b/tpgt_1/lun/lun_0/b522dc7322
&lt;/pre&gt;&lt;/blockquote&gt;

to naprawdę jakiś postęp? Powyżej to drobny fragment, całość ,,nowości'' ma prawie pół tysiąca linii i postać skryptu,
który odtwarza ustawienia przez wykonanie wszystkich katalogów i dowiązań symbolicznych.

&lt;p&gt;Do LIO dostępny jest &lt;code&gt;targetcli&lt;/code&gt;, będący tak naprawdę kolorową nakładką na
&lt;code&gt;mkdir&lt;/code&gt;, &lt;code&gt;ln&lt;/code&gt; i &lt;code&gt;touch&lt;/code&gt;. Ja rozumiem, że &lt;em&gt;wszystko
jest plikiem&lt;/em&gt;, ale naprawdę zajęło mi pół godziny wpadnięcie na intuicyjny
sposób określenia IP, na który jądro ma słuchać. (Tym sposobem jest &lt;em&gt;utworzenie
katalogu&lt;/em&gt;, dokładniej 
&lt;code&gt;mkdir -p /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd/tpgt_1/np/192.168.6.9:3260&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Plik konfiguracyjny jest dla mnie czymś solidnym. Skrypt zastępujący go
setkami poleceniem powłoki sprawia wrażenie sznurka i taśmy klejącej.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; Ktoś jednak stwierdził, że lepsze będzie &lt;a href="https://www.youtube.com/watch?v=f6cgZotqUj0"&gt;trzymanie konfiguracji w JSON&lt;/a&gt;. No cóż, ma szansę sprawdzić się lepiej niż skrypt shellowy.&lt;/p&gt;

&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Archived comments:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DIVI&lt;/strong&gt; &lt;em&gt;2012-01-17 06:04:11&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Panie, a ile wojny było o ten target. &lt;br&gt;
&lt;br&gt;
Deweloper konkurencyjnej implementacji gdy go nie wybrano strzelił potwornego focha i jest teraz wojna idelologiczna.&lt;br&gt;
&lt;br&gt;
Argumentacja opiekuna podsystemu storage też była mało merytoryczna i bardziej się operała o to że ten "wygrany" jest gorszy ale ma bardziej uległych i skorych do ustępstw developerów.&lt;br&gt;
&lt;br&gt;
To wszystko jest jeszcze pikuś, ale ten config to już jest parodia.&lt;br&gt;
&lt;br&gt;
Nie podobie mnie się.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DIVI&lt;/strong&gt; &lt;em&gt;2012-01-17 06:07:13&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To tak apropos: http://lwn.net/Articles/424004/&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;l00natyk&lt;/strong&gt; &lt;em&gt;2012-01-17 14:48:04&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Mam wrazenie ze w niedalekiej przyszlosci ktos napisze skrypt ktory pobiera dane ze starego konfigu i bedzie tak samo tylko ze inaczej.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;yZZuF&lt;/strong&gt; &lt;em&gt;2012-01-20 09:48:57&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Wygląda jakby się ktoś puścił poręczy.&lt;/p&gt;</description><category>Linux</category><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2012/01/16/w-ktora-strone-ewoluuje-konfigurowanie-linuksa/</guid><pubDate>Mon, 16 Jan 2012 20:41:00 GMT</pubDate></item><item><title>systemd: stadko zamieniających Uniksa demonów</title><link>https://enotty.pipebreaker.pl/2011/08/04/systemd-stadko-zamieniajacych-uniksa-demonow/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;Czytając o &lt;a href="http://www.freedesktop.org/wiki/Software/systemd"&gt;systemd&lt;/a&gt;
można czasem przeoczyć większą wizję.  Celem nie jest jedynie napisanie kolejnego
zastępcy &lt;code&gt;init&lt;/code&gt;a.  To tylko element całości, którą jest zdefiniowanie (również
poprzez stworzenie) &lt;strong&gt;platformy Linuksowej&lt;/strong&gt;.  Ostatecznie
będzie można powiedzieć, że ,,w Linuksie''
&lt;/p&gt;&lt;ul&gt;
 &lt;li&gt;jest ustawiona nazwa hosta&lt;/li&gt;
 &lt;li&gt;listę zalogowanych użytkowników uzyskujemy przez &lt;code&gt;systemd-loginctl list-sessions&lt;/code&gt;&lt;/li&gt;
 &lt;li&gt;startujemy usługi na żądanie tworząc &lt;a href="http://enotty.pipebreaker.pl/2010/08/05/krotki-instruktaz-systemd-gniazdka/"&gt;definicje &lt;code&gt;.socket&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;usługi potrzebujące haseł korzystają ze &lt;a href="http://www.freedesktop.org/wiki/Software/systemd/PasswordAgents"&gt;zdefiniowanej metody pytania&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;unikalny identyfikator systemu można odczytać z &lt;code&gt;/etc/machine-id&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;itp.&lt;/li&gt;
&lt;/ul&gt;

I to &lt;strong&gt;zawsze&lt;/strong&gt;.  Dostawca oprogramowania nie będzie musiał tworzyć
zawiłych skryptów sprawdzających czy używamy &lt;code&gt;xinetd&lt;/code&gt;, &lt;code&gt;inetd&lt;/code&gt;
czy jeszcze czegoś innego.  Osuszanie bagienka różnic między dystrybucjami powinno 
ułatwić dostarczanie oprogramowania firmom trzecim.

&lt;p&gt;Aby osiągnać ten cel, &lt;code&gt;systemd&lt;/code&gt; dostarczany jest wraz z 
garścią pomocniczych programików pojedynczego
zastosowania.  Część ujednolica czynności wykonywane we wszystkich dystrybucjach,
część implementuje nowe mechanizmy mające stać się &lt;strong&gt;API Linuksa&lt;/strong&gt;.
Najprostsze (ograniczające się do pojedyńczych &lt;em&gt;syscalli&lt;/em&gt;) wbudowane
są w samą binarkę &lt;code&gt;systemd&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Do czego zacząć się przyzwyczajać?
&lt;/p&gt;&lt;ul&gt; 
 &lt;li&gt; &lt;code&gt;hostname1&lt;/code&gt; — dostępna przez D-Bus usługa &lt;a href="http://www.freedesktop.org/wiki/Software/systemd/hostnamed"&gt; zarządzająca
   krótką oraz opisową nazwą komputera&lt;/a&gt;; konfigurowana w &lt;code&gt;/etc/hostname&lt;/code&gt;&lt;/li&gt;
 &lt;li&gt; &lt;code&gt;systemd-localed&lt;/code&gt; — dostępne przez D-Bus ustawianie
 języka systemu; konfigurowane w &lt;code&gt;/etc/locale.conf&lt;/code&gt;&lt;/li&gt;
 &lt;li&gt; &lt;code&gt;systemd-timedated&lt;/code&gt; — D-Bus; ustawianie czasu, daty,
  strefy czasowej; konfiguracja w &lt;code&gt;/etc/adjtime&lt;/code&gt;, &lt;code&gt;/etc/timezone&lt;/code&gt;,
  &lt;code&gt;/etc/locatime&lt;/code&gt;&lt;/li&gt;

 &lt;li&gt; &lt;code&gt;systemd-vconsole-setup&lt;/code&gt; — ustawienie układu klawiatury
  i fontu na konsoli tekstowej; konfiguracja w &lt;code&gt;/etc/vconsole.conf&lt;/code&gt;&lt;/li&gt;

  &lt;li&gt; &lt;code&gt;systemd-binfmt&lt;/code&gt; — konfiguracja jak traktować różne
    pliki wykonywalne; katalog z konfiguracją:  &lt;code&gt;/etc/bindfmt.d&lt;/code&gt;&lt;/li&gt;

  &lt;li&gt; &lt;code&gt;systemd-tmpfiles&lt;/code&gt; — tworzenie plików, katalogów i gniazd
    przy starcie systemu; również kasowanie starych, nie używanych plików; 
    konfiguracja z &lt;code&gt;/usr/lib/tmpfiles.d&lt;/code&gt; i &lt;code&gt;/etc/tmpfiles.d&lt;/code&gt;&lt;/li&gt;

  &lt;li&gt; &lt;code&gt;systemd-sysctl&lt;/code&gt; — ustawienie zmiennych jądra; konfiguracje
    z katalogów &lt;code&gt;{/usr/lib,/etc,/run}/sysctl.d&lt;/code&gt; i pliku &lt;code&gt;/etc/sysctl.conf&lt;/code&gt;&lt;/li&gt;

  &lt;li&gt; &lt;code&gt;systemd-modules-load&lt;/code&gt; — ładowanie modułów jądra; pliki
  konfiguracyjne w &lt;code&gt;/etc/modules-load.d&lt;/code&gt;&lt;/li&gt;

  &lt;li&gt; &lt;code&gt;systemd-kmsg-syslogd&lt;/code&gt; — minimalny demon zapamiętujący
  informacje przed uruchomieniem właściwego &lt;code&gt;syslogd&lt;/code&gt;&lt;/li&gt;

  &lt;li&gt; &lt;code&gt;systemd-random-seed&lt;/code&gt; — inicjacja puli entropii generatora
   pseudolosowego; również zapisanie stanu przy wyłączaniu komputera&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Wydzielenie tych drobiazgów ze skryptow startowych umożliwia:
&lt;/p&gt;&lt;ol&gt;
 &lt;li&gt;ujednolicenie zachowania wszystkich dystrybucji Linuksa&lt;/li&gt;
 &lt;li&gt;ujednolicenie sposobów np. zmiany nazwy komputera na wszystkich dystrybucjach&lt;/li&gt;
 &lt;li&gt;uruchamianie powyższych czynności jednocześnie&lt;/li&gt;
 &lt;li&gt;uruchamianie w razie potrzeby w trakcie działania komputera (np. pojawienie
    się nowego pliku w &lt;code&gt;/etc/binfmt.d&lt;/code&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ważnym nowością jest &lt;strong&gt;&lt;code&gt;systemd-loginctl&lt;/code&gt;&lt;/strong&gt; i
skojarzony &lt;code&gt;/etc/systemd/systemd-logind.conf&lt;/code&gt; zarządzajacy sesjami
użytkownika.  Odpowiada m. in. za automatycznie uruchamianie &lt;code&gt;getty&lt;/code&gt;
na konsolach, na które przełącza się użytkownik.  &lt;em&gt;Login manager&lt;/em&gt; daje
informacje o zalogowanych użytkownikach, aktywnych sesjach i także pilnuje sprzątania
procesów po użytkownikach wylogowanych. Poleceniem &lt;code&gt;systemd-loginctl enable-linger&lt;/code&gt;
można zażyczyć sobie uruchamiania sesji dla zwykłych użytkowników przy starcie systemu.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;systemd-logind&lt;/code&gt; zarządza również wszystkimi zestawami &lt;em&gt;
klawiatura+mysz+monitor+inne urządzenia&lt;/em&gt;, ułatwiając pracę wielu użytkowników
jednocześnie.  Jest to efekt zapowiadanego &lt;a href="https://lwn.net/Articles/441328/"&gt;
pozbycia się ConsoleKit&lt;/a&gt;.&lt;/p&gt;

&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Archived comments:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;abc&lt;/strong&gt; &lt;em&gt;2011-08-04 17:10:38&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;... tylko czemu ten systemd nie działa w chroocie (cały system, a nie tylko usługa) ani w vserverowym gueście? :-/&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remigiusz 'lRem' Modrzejewski&lt;/strong&gt; &lt;em&gt;2011-08-04 17:16:06&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Nie działa w gueście? No to pozamiatane...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;m&lt;/strong&gt; &lt;em&gt;2011-08-04 17:23:05&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I dlaczego wymaga dbusa?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2011-08-04 17:43:49&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;abc: jak nie działa? Ma problem z zamountowaniem katalogów czy coś innego?  Jak używasz "systemd-nspawn" jako helpera chrootowego to też jest problem?&lt;br&gt;
&lt;br&gt;
m: bo wymaga IPC.  Można było użyć czegoś znanego, przetestowanego i zdebugowanego (D-Bus) albo wymyślać koło samemu.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;abc&lt;/strong&gt; &lt;em&gt;2011-08-04 18:39:07&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;zdz: w gueście vservera nie masz uprawnien do montowania czegokolwiek w najczęstrzym przypadku. chroot jest dużo mniej interesujący więc go pomińmy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;d33tah&lt;/strong&gt; &lt;em&gt;2011-08-05 10:37:36&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;http://xkcd.com/927/&lt;/p&gt;</description><category>Linux</category><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2011/08/04/systemd-stadko-zamieniajacych-uniksa-demonow/</guid><pubDate>Thu, 04 Aug 2011 13:54:00 GMT</pubDate></item><item><title>systemd: modyfikacja jednostek</title><link>https://enotty.pipebreaker.pl/2011/06/20/systemd-modyfikacja-jednostek/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;W życiu zachodzi czasem potrzeba modyfikacji skryptów
startowych (jednostek systemd). Co jeśli mamy jakiś 
niepełnosprawny program i chcemy opóźnić jego uruchomienie,
a nie możemy tego wyrazić poprawnymi zależnościami?&lt;/p&gt;

&lt;p&gt;Systemowe (dostarczane przez dystrybucję) skrypty startowe
znajdują się w &lt;code&gt;&lt;b&gt;/lib&lt;/b&gt;/systemd/system&lt;/code&gt;. Administrator
nie powinienen ich ruszać, za to może przesłonić skrypt systemowy
swoim, umieszczając go w &lt;code&gt;&lt;b&gt;/etc&lt;/b&gt;/systemd/system&lt;/code&gt;.
Skrypt z &lt;code&gt;/lib&lt;/code&gt; wygląda następująco:

&lt;/p&gt;&lt;blockquote&gt;
&lt;pre&gt;
[Unit]
Description=uses CDP / LLDP frames to inform switches about connected hosts
Requires=network.target

[Service]
EnvironmentFile=/etc/sysconfig/ladvd
ExecStart=/usr/sbin/ladvd -f $LADVD_OPTIONS
PIDFile=/var/run/ladvd.pid
StandardOutput=syslog

[Install]
WantedBy=multi-user.target
&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Przepisywanie całości jest niezdrowe, dużo roboty i możliwe rozjechanie
gdy aktualizacja zmieni systemową jednostkę. W takich sytucjach najlepiej
posłużyć się dyrektywą &lt;code&gt;&lt;b&gt;.include&lt;/b&gt;&lt;/code&gt;:

&lt;/p&gt;&lt;blockquote&gt;
&lt;pre&gt;.include /lib/systemd/system/ladvd.service

[Service]
ExecStartPre=/bin/sleep 20s

[Install]
WantedBy=multi-user.target
&lt;/pre&gt;&lt;/blockquote&gt;


&lt;p&gt;Pierwsza linijka zaciąga całą treść oryginalnej jednostki. Sekcja
&lt;code&gt;[Service]&lt;/code&gt; wprowadza interesującą nas zmianę. Końcowka
jest potrzebna do korzystania z &lt;code&gt;systemctl enable/disable&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Inny przykład: dodanie zależności, wpływa na kolejność startu. Tworzymy &lt;code&gt;/etc/systemd/system/radvd.service&lt;/code&gt; z zawartością:
&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;
.include /lib/systemd/system/radvd.service

[Unit]
After=aiccu.service&lt;/pre&gt;&lt;/blockquote&gt;</description><category>Linux</category><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2011/06/20/systemd-modyfikacja-jednostek/</guid><pubDate>Mon, 20 Jun 2011 13:27:00 GMT</pubDate></item><item><title>3.0 zalicza czy psuje</title><link>https://enotty.pipebreaker.pl/2011/06/07/3-0-zalicza-czy-psuje/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;Wraz ze zmianą numeracji jądra pojawiło się kilka problemów z programami spodziewających się numeracji x.y.z. Brak trzeciego numerka odczuły jak dotąd:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;lvm2&lt;/code&gt; — efektem jest problem z bootowaniem, naprawiony już w najnowszej wersji&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mdadm&lt;/code&gt; też krztusi się z dwucyfrowym numerkiem&lt;/li&gt;
&lt;li&gt;&lt;code&gt;distributed.net client&lt;/code&gt; nie startuje, wysypuje się na inicjalizacji timerów&lt;/li&gt;
&lt;li&gt;aktualizacji wymagały &lt;code&gt;module-init-tools&lt;/code&gt; w Fedorze&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;3.0 udostępnia też katalog &lt;code&gt;/sys/fs/selinux&lt;/code&gt;. Biblioteki SELinuksa korzystają z niego w pierwszej kolejności przed &lt;code&gt;/selinux&lt;/code&gt;. Zmiana punktu mountowania zaskoczyła &lt;code&gt;systemd&lt;/code&gt;, co kończy się pętlą komunikatów &lt;q&gt;loading policy&lt;/q&gt; przy uruchomieniu. &lt;a href="http://cgit.freedesktop.org/systemd/commit/?id=ef9d7dca5463e64510e174d55a869b4d5a3c4e84"&gt;Poprawka &lt;/a&gt;już jest, w międzyczasie zbootować można dodając &lt;code&gt;selinux=0&lt;/code&gt; do linii poleceń jądra.&lt;/p&gt;

&lt;p&gt;A czy &lt;b&gt;Twój kod&lt;/b&gt; radzi sobie z nowym numerkiem? I w ogóle po co mu ta informacja, powinien sprawdzać obecność wymaganych &lt;em&gt;ficzerów&lt;/em&gt;, a nie numer wersji.&lt;/p&gt;

&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Archived comments:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;gentooGangsta&lt;/strong&gt; &lt;em&gt;2011-06-07 11:56:56&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;jaki programista taki koT ;]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;moher&lt;/strong&gt; &lt;em&gt;2011-06-07 12:20:10&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Samo sprawdzenie obecności ficzera nie zawsze wystarczy, przykładem mogą być dwie wersje jajka z danym ficzerem i bonusowym bugiem, który trzeba obejść w jednej z nich. Nie zawsze sprawdzanie wszystkich możliwych bugów w danym ficzerze jest optymalne.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;trasz&lt;/strong&gt; &lt;em&gt;2011-06-22 22:18:48&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Ciekawe, kiedy developerzy Linuksa wynajdą getosreldate(), które pozwala unikać tego typu problemów.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2011-06-23 18:44:45&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;trasz: kosztem innych problemow? x.y.z.bignum  zazwyczaj wydawane jest sporo po x.y.z+1.&lt;/p&gt;</description><category>Linux</category><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2011/06/07/3-0-zalicza-czy-psuje/</guid><pubDate>Tue, 07 Jun 2011 08:40:00 GMT</pubDate></item><item><title>/run Forest, /run</title><link>https://enotty.pipebreaker.pl/2011/03/30/run-forest-run/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;Linuksowi administratorzy w nadchodzących wydaniach swoich ulubionych
dystrybucji natkną się na nowy wpis w katalogu głównym. Będzie to
&lt;code&gt;&lt;b&gt;/run&lt;/b&gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Katalog &lt;code&gt;/run&lt;/code&gt; jest dostępny zaraz po zamountowaniu 
głównego &lt;code&gt;/&lt;/code&gt;, przed pojawieniem się /var, 
który może być na osobnym wolumenie. Zawiera rzeczy odnoszące się do aktualnie 
działających program‎ów i usług (nie przechowuje wpisów przy reboocie). Są to:
&lt;/p&gt;&lt;ul&gt;
 &lt;li&gt; pliki blokad (&lt;code&gt;/run/lock&lt;/code&gt;, dostępne również jako &lt;code&gt;/var/lock&lt;/code&gt;)&lt;/li&gt;
 &lt;li&gt; różne pliki uruchomieniowe, dotąd w &lt;code&gt;/var/run&lt;/code&gt;&lt;/li&gt;
 &lt;li&gt; zbiór rzeczy do tej pory ukrywanych w .katalogach w &lt;code&gt;/dev&lt;/code&gt;:
  &lt;ul&gt;
   &lt;li&gt; dane udev z &lt;code&gt;/dev/.udev&lt;/code&gt;&lt;/li&gt;
   &lt;li&gt; informacje przekazane przez programy z initramfs, działające przed
        zamountowaniem /, dotąd w &lt;code&gt;/dev/.initramfs&lt;/code&gt;&lt;/li&gt;
   &lt;li&gt; informacje z systemach plików z &lt;code&gt;/dev/.mount/utab&lt;/code&gt; (wszystko
        to, co nie jest zawarte w &lt;code&gt;/proc/self/mounts&lt;/code&gt;)&lt;/li&gt;
    &lt;li&gt; pliki kontrolne w &lt;code&gt;/dev/.systemd&lt;/code&gt;&lt;/li&gt;
   &lt;li&gt; pliki tymczasowe z &lt;code&gt;/dev/.mdadm&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
  &lt;/li&gt;&lt;li&gt; pamięć podręczną z &lt;code&gt;/etc/lvm2/cache&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

A także inne pliki tworzone przez &lt;code&gt;dracut&lt;/code&gt;, &lt;code&gt;plymouth&lt;/code&gt;, bootchart
i wszystkie programy, które do tej pory potrzebowały takiego miejsca. Użycie
&lt;code&gt;/dev&lt;/code&gt; było podyktowane obecnością tego katalogu od samego
początku uruchamiania systemu. Nie do końca prawidłowe jest jednak przechywanie
w /dev wpisów nie będących urządzeniami, a zwłaszcza ukrywanie ich kropką
w nazwach.

&lt;p&gt;Poza nadużywaniem /dev, dystrybucje do problemu podchodziły
różnie. Debian daje &lt;code&gt;/lib/init/rw&lt;/code&gt;, który z kolei narusza
przestrzeń &lt;code&gt;/lib&lt;/code&gt; dla bibliotek. Ubuntu udostępnia
&lt;code&gt;/var/run&lt;/code&gt; i &lt;code&gt;/var/lock&lt;/code&gt; przy starcie, a przy 
mountowaniu właściwego &lt;code&gt;/var&lt;/code&gt; dokonuje przypięcia (&lt;em&gt;bindmount&lt;/em&gt;).
Jest to jednak rozwiązanie podatne na wyścigi.&lt;/p&gt;

&lt;p&gt;Wynik międzydystrybucyjnych uzgodnień &lt;a href="http://lists.freedesktop.org/archives/systemd-devel/2011-March/001757.html"&gt;ogłosił
Kay Sievers&lt;/a&gt;, jednocześnie odpowiedzialny za wdrożenie tego rozwiązania
w SUSE. &lt;a href="http://lists.freedesktop.org/archives/systemd-devel/2011-March/001779.html"&gt;
Zawtórował mu Scott James Remnant&lt;/a&gt;, opiekun &lt;code&gt;upstart&lt;/code&gt; i członek
rady technicznej Ubuntu. Rozwiązanie wdrożyła &lt;a href="http://lists.fedoraproject.org/pipermail/devel/2011-March/150031.html"&gt;Fedora&lt;/a&gt;,
poddane zostało również pod &lt;a href="http://lists.debian.org/debian-devel/2011/03/msg01119.html"&gt;dyskusję
w Debianie&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Nasuwać się może pytanie, co z &lt;em&gt;File Hierarchy Standard&lt;/em&gt;? Wersja
2.3 &lt;a href="http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE2"&gt;nie zakazuje&lt;/a&gt;,
jednak wymaga rozwagi:

&lt;/p&gt;&lt;blockquote&gt;
 Distributions should not create new directories in the root hierarchy without 
 extremely careful consideration of the consequences including for application portability.
 &lt;/blockquote&gt;

Twórcy najważniejszych dystrybucji porozumieli się między sobą i stosowna
poprawka do FHS &lt;a href="http://bugs.freestandards.org/show_bug.cgi?id=718"&gt;została
zgłoszona&lt;/a&gt;. Ostatecznie będziemy mieli: &lt;code&gt;/var&lt;/code&gt; do rzeczy zmiennych,
dostępnych pomiędzy restartami i &lt;code&gt;/run&lt;/code&gt; dla tych mających sens
jedynie w działającym systemie (wskazane więc użycie &lt;code&gt;tmpfs&lt;/code&gt;). Coraz bliżej jest do umożliwienia funkcjonowania
systemu z kluczowymi katalogami (&lt;code&gt;/usr&lt;/code&gt;, &lt;code&gt;/etc&lt;/code&gt; itp.) 
zamountowanymi w trybie tylko-do-odczytu.

&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Archived comments:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;liori&lt;/strong&gt; &lt;em&gt;2011-03-30 18:38:34&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Aaa... czym to się różni od /tmp? Tym że dane w środku będą jakoś konkretnie poukładane?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2011-03-30 18:42:43&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;/tmp też może znajdować się na osobnej partycji lub wolumenie wymagającym zachodu (składanie RAID, logowanie iSCSI itp). /tmp nie daje gwarancji, że dane tam zapisane nie znikną pomiędzy dwoma uruchomieniami programu. W końcu /tmp może być odrębne dla każdego użytkownika (chociaż /run jest dla rzeczy systemowych, nie związanych z użytkownikiem). I tak, /run ma odrobinę bardziej sformalizowaną zawartość.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;mh&lt;/strong&gt; &lt;em&gt;2011-03-30 18:49:27&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Ja bym poszedł na całość:&lt;br&gt;
  runfs on /run type runfs&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stanisław 'dozzie' Klekot&lt;/strong&gt; &lt;em&gt;2011-03-31 11:52:51&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;gt; Debian daje /lib/init/rw, który z kolei narusza przestrzeń /lib dla bibliotek&lt;br&gt;
&lt;br&gt;
Osobiście bym się tym nie przejmował. Kernelowe moduły też naruszają tę przestrzeń, podobnie jak firmware dla modułów, baza terminfo (pod Debianem) czy binarki i skrypty udeva.&lt;/p&gt;</description><category>Linux</category><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2011/03/30/run-forest-run/</guid><pubDate>Wed, 30 Mar 2011 16:36:00 GMT</pubDate></item><item><title>Bye bye, suid</title><link>https://enotty.pipebreaker.pl/2010/12/31/bye-bye-suid/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;Wychodząc naprzeciw trendowi „jeden komputer — jeden użytkownik”,
od następnej wersji Fedory będzie w systemie tylko konto &lt;code&gt;root&lt;/code&gt;.
Dzięki temu możliwe stanie się wyeliminowanie programów z &lt;strong&gt;suidami&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;A tak na poważnie, eliminacja polega na &lt;a href="http://fedoraproject.org/wiki/Features/RemoveSETUID"&gt;zastąpieniu 
suid-rootów odpowiednimi &lt;code&gt;capabilities&lt;/code&gt;&lt;/a&gt;. Program, który
wymaga tylko uprawnień do zmiany czasu lub używania portów sieciowych
poniżej 1024, dostanie uprawnienia tylko do tego. Do tej pory wszystkie
możliwości roota były przyznawane.&lt;/p&gt;

&lt;p&gt;Wcześniej temu wyzwaniu podołał OpenWall Linux. Przez przerobienie niektórych
mechanizmów pozbyto się konieczności uruchamiania przez użytkownika
programów jako root. Przykładowo, zmiana powłoki, opisu, hasła czy innych
pól w bazie użytkowników /etc/passwd wymagała uprawnień
do modyfikacji tego pliku, a więc superużytkownika. W OWL każdy użytkownik
ma swój plik w &lt;code&gt;/etc/tcb&lt;/code&gt;, którego jest właścicielem i 
którego edycja nie wymaga superusera.&lt;/p&gt;

&lt;p&gt;W Fedorze wysiłki zmierzają do konkretnego nadawania uprawnień.
W sieci można znaleźć &lt;a href="http://lwn.net/Articles/313838/"&gt;przykłady
użycia setpcap&lt;/a&gt;. Jest to proces dość żmudny i niekoniecznie
zakończy się powodzeniem, już w tej chwili &lt;a href="http://lwn.net/Articles/412237/"&gt;
idzie dość opornie&lt;/a&gt;. Rozwiązanie z OWL wygląda lepiej i bardziej
przypadło mi do gustu.&lt;/p&gt;

&lt;p&gt;Tak jak wcześniej ACL'e rozszerzyły uprawnienia plikowe &lt;code&gt;rwx&lt;/code&gt;,
tak teraz &lt;em&gt;capabilities&lt;/em&gt; rozszerzają ideę rootowego suida. Admini, którzy
do tej pory zwlekali z uzupełnieniem swojej wiedzy mają kolejną szansę na pobudkę
z ręką w nocniku.&lt;/p&gt;

&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Archived comments:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stanisław 'dozzie' Klekot&lt;/strong&gt; &lt;em&gt;2011-01-01 18:40:01&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;gt; Admini, którzy do tej pory zwlekali z uzupełnieniem swojej wiedzy mają kolejną szansę na pobudkę z ręką w nocniku.&lt;br&gt;
&lt;br&gt;
Znaczy tego, no. Zdajesz sobie sprawę że naprawdę niewiele usług potrafi skorzystać z POSIX 1003.1e ACLs? W żadnym wypadku nieznajomość POSIX 1003.1e ACLs nie powoduje problemów, a i znajomość stosunkowo niewiele pomaga.&lt;br&gt;
&lt;br&gt;
Podobnie pewnie będzie z capabilities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ickon&lt;/strong&gt; &lt;em&gt;2011-01-01 19:49:40&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;poczekamy - zobaczymy, jak się przyjmie to zerknę dokładniej ...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2011-01-02 11:28:44&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;dozzie; prawda, niewiele aplikacji bezpośrednio korzysta. Ale jak już to robią, to ma to zazwyczaj większy impact, jak np. udev-acl rozdające uprawnienia do plików w /dev.&lt;br&gt;
&lt;br&gt;
Problem widzę raczej w ,,starej gwardii'', która uważa, że "ls -l" wystarczy do sprawdzenia kto ma dostęp do pliku lub jakie uprawenienia ma program po uruchomieniu.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;spinus&lt;/strong&gt; &lt;em&gt;2011-01-03 18:00:00&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Hm, a to nie jest tak, że ta ,,stara gwardia'' to ludzie, którzy lubią KISS? Łatwo szybko i przyjemnie, natomiast ACLe i podobne wynalazki zabierają dużo czasu na najprostsze zadania, jak np sprawdzenie listy dostępu czy inne mechanizmy? W Windowsie takie rozwiązanie istnieje od dawna i często widze jak koledzy z tych systemów klą na te mechanizmy. Ale być może to kwestia braku dobrych narzędzi do obsługi mechanizmów?&lt;/p&gt;</description><category>Linux</category><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2010/12/31/bye-bye-suid/</guid><pubDate>Fri, 31 Dec 2010 15:14:00 GMT</pubDate></item><item><title>Pożegnanie z eth0</title><link>https://enotty.pipebreaker.pl/2010/12/21/pozegnanie-z-eth0/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;Osoby instalujące Fedorę 15 i późniejsze może zaskoczyć drobna zmiana
 w nazewnictwie interfejsów sieciowych.  Zamiast niemal losowo przyznawanych
 &lt;code&gt;ethX&lt;/code&gt;, nazwa będzie zgadzała się z położeniem karty sieciowej
 w komputerze i opisem producenta. Mianowicie:
 &lt;/p&gt;
&lt;p&gt;
 &lt;/p&gt;&lt;ul&gt;
   &lt;li&gt;karty wbudowane w płytę główną: &lt;strong&gt;emX&lt;/strong&gt;, czyli &lt;code&gt;em1&lt;/code&gt;,
   &lt;code&gt;em2&lt;/code&gt; itd.&lt;/li&gt;
   &lt;li&gt;karty dołożone: &lt;strong&gt;pciX#Y&lt;/strong&gt; lub &lt;strong&gt;pciX#Y_Z&lt;/strong&gt; (X – numer slotu, Y– numer portu na karcie, Z – numer funkcji) , co
   daje przykładowe &lt;code&gt;pci3#1&lt;/code&gt; lub &lt;code&gt;pci2#2_15&lt;/code&gt;. Druga wersja
   wyróżnia funkcje wirtualne w ramach SRV-IO.&lt;/li&gt;
 &lt;/ul&gt;


&lt;p&gt;&lt;strike&gt;Przyznawanie nazw dotyczy oczywiście tylko kart pojawiających się w 
systemie po raz pierwszy. Raz nazwana, karta zawsze dostanie tę samą etykietkę
na podstawie adresu MAC i &lt;code&gt;70-persistent-net.rules&lt;/code&gt;.&lt;/strike&gt;
&lt;strong&gt;Aktualizacja:&lt;/strong&gt;. Nazwy nadawane są przy każdym uruchomieniu.
Zamiana karty w slocie PCI na inną spowoduje, że nowy interfejs przejmie
nazwę starego. Nie zmienią się nazwy w systemach aktualizowanych i tam, gdzie
administrator wymusił przypisania w  &lt;code&gt;70-persistent-net.rules&lt;/code&gt;. Dane o
położeniu fizycznym brane są z ACPI, DMI i tablicy przerwań PCI.
&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;&lt;center&gt;&lt;img src="http://xn--dogstaff-33b.pipebreaker.pl/2010.12.21-netlabels2.jpg" alt="Interfejsy sieciowe"&gt;&lt;br&gt;
 &lt;small&gt;Etykiety na obudowie w końcu będą zgodne z rzeczywistością&lt;/small&gt;&lt;/center&gt;

&lt;p&gt;Inne uniksowate zazwyczaj nazywają karty sieciowe na podstawie modelu
urządzenia i obsługującego go sterownika. Ja od lat staram się nazywać
interfejsy od ich funkcji/providera: &lt;code&gt;lan&lt;/code&gt;, &lt;code&gt;nsm&lt;/code&gt;,
&lt;code&gt;storagenet&lt;/code&gt;, &lt;code&gt;tpsa&lt;/code&gt;, &lt;code&gt;netia&lt;/code&gt;, &lt;code&gt;kabel&lt;/code&gt;,
&lt;code&gt;eter&lt;/code&gt; itp.  Znacząco ułatwia to np. pisanie reguł filtra pakietów. Wieki temu musiałem łatać &lt;code&gt;iptraf&lt;/code&gt;a, który upierał się na działaniu
tylko z interfejsami o nazwach &lt;code&gt;ethX&lt;/code&gt;.  Dzisiaj spokojnie można
zakładać, że tak popsutych programów już nie ma.  Nazwy interfejsów sieciowych
można w Linuksie zmieniać od lat!&lt;/p&gt;

&lt;p&gt;Więcej na stronie &lt;a href="http://fedoraproject.org/wiki/Features/ConsistentNetworkDeviceNaming"&gt;
Features/ConsistentNetworkDeviceNaming&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; &lt;a href="http://enotty.pipebreaker.pl/2013/01/09/pozegnanie-z-em1/"&gt;Pożegnanie z em1&lt;/a&gt;.&lt;/p&gt;

&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Archived comments:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wildente&lt;/strong&gt; &lt;em&gt;2010-12-21 13:29:23&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Jednym słowem Dupa Blada. Będzie to samo co z USB. Wpięty pendrajw nie wiadomo gdzie się pojawi, bo nazwę bierze z nazwy dysku. Pod Windows wiadomo, że dostanie literkę kolejną i można pewne rzeczy zautomatyzować. eth0 było eth0 i można było porady z internetu wklejać albo skrypty sobie pisać automatyzujące. A tu kolejne zamieszanie....&lt;br&gt;
&lt;br&gt;
No ale nie od dzisiaj wiadomo, że linuksy prześcignęły windowsa w zakresie automagiczności i nieprzewidywalności.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2010-12-21 13:36:38&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Polemizowałbym. Będzie wiadomo gdzie się pojawi: wpinasz w slot PCI numer 2, to masz pci2#port. W tej chwili przypisanie karty↔ethX potrafi zmienić się co każdy reboot (w zależności jak akurat pójdzie enumeracja).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wildente&lt;/strong&gt; &lt;em&gt;2010-12-21 13:43:57&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Już tak miałam, że kartę podmieniałam w locie, a system nadal działał po restarcie. A akurat losowej zmiany nie zauważyłam, ale ja używam Debiana, może Fedora szalała.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2010-12-21 13:51:26&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To nie kwestia dystrybucji, tylko zachowanie jądra. Więcej info http://lwn.net/Articles/325131/ i http://lkml.org/lkml/2006/9/29/268 .&lt;br&gt;
&lt;br&gt;
W Debianie zmiana karty też powinna skutkować nazwaniem jej eth1 bądź kolejna. Przynajmniej widzę w Debianie /lib/udev/rules.d/75-persistent-net-generator.rules&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wildente&lt;/strong&gt; &lt;em&gt;2010-12-21 13:53:21&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Może... Od wielu lat nic nie zmieniałam :D Więc w sumie może po pojawieniu się udeva tak się narobiło.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Margor&lt;/strong&gt; &lt;em&gt;2010-12-21 14:05:10&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Mi tam najbardziej podoba się podejście stosowane przez FreeBSD tzn. nazwa interfejsu przepisana jest do sterownika. Ale chyba od niedawna się to po części zmienia tzn. od FreeBSD 8 dla WLAN tworzony jest jeden interfejs wirtualny wlan0 (wczęsniej np. ath0). Nie leży mi to, ale może ma to jakiś słuszny cel, na szczęście dla ethernetu pozostało po staremu. &lt;br&gt;
&lt;br&gt;
A pomysł nadawania własnych nazw w zależności od przeznaczenia bardzo mi się podoba. Od razu wiadomo do czego służy i nie trzeba się zastanawiać.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;rozie&lt;/strong&gt; &lt;em&gt;2010-12-21 20:16:49&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;IMHO bez sensu zmiana. Przepięcie karty ze zintegrowanej na PCI będzie się teraz wiązało z koniecznością zmiany skryptów, jeśli któreś korzystają z karty. A dowolne przypisywanie numeru ethX do adresu MAC od dawna jest możliwe (przynajmniej w Debianie, ale nie sądzę by był wyjątkiem).&lt;br&gt;
&lt;br&gt;
BTW co z kartami na USB i bezprzewodowymi?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2010-12-23 19:57:43&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;rozie: moja karta wifi nie podlega zmianom nazwy, na USB nic nie mam do sprawdzenie, ale sądzę, że również nie będzie zmiany (bo nie ma slotu PCI).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2010-12-24 20:40:51&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;rozie: btw, zobacz tutaj: http://dżogstaff.pipebreaker.pl/2010.12.21-netlabels2.jpg . 8 portów sieciowych. Powodzenia w zgadywaniu, który jest który bez opisanego mechanizmu. Z biosdevname wszystko jest jasne: em1, em2, em3, em4, pci5#0, pci5#1, pci6#0, pci6#1.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AlchemyX&lt;/strong&gt; &lt;em&gt;2010-12-27 09:48:57&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;@Wildente: No ale pendrive możesz odnaleźć po nazwie modelu lub uuid, więc automatyzacja nadal jest możliwa&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wildente&lt;/strong&gt; &lt;em&gt;2010-12-28 22:33:36&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Chyba nie rozumiem. Wkładam pendrajwa, a on zamiast się po ludzku zamontować jako znany z góry dysk F: :D montuje się każdy pendrajw gdzie indziej. Pewnie da się to jakoś automatyzować, ale trzeba pewnie mocno złożony skrypt pisać, co wykryje jakieś pojawienia się nośnika.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wildente&lt;/strong&gt; &lt;em&gt;2010-12-28 22:35:54&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A jeszcze dodam -- te UUIDy dla dysków też porażka. Skopiowałam kiedyś konfigurację Burga na 20 stacji roboczych identycznych i się miałam z pyszna, bo mi uciekło, że UUIDy są zmienne.. /dev/sda2 to /dev/sda2, dobrze że przynajmniej nie usunęli tego z systemu i po odpaleniu z lajwów udało się wrzucić poprawne konfigi z /dev/sda2&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2010-12-30 12:04:13&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Pendrive montuje sie jako z góry znany dysk /media/&amp;lt;label&amp;gt;. Jak system plikow nie ma etykiety, to jako /media/&amp;lt;uuid&amp;gt;.&lt;br&gt;
W drugiej sytuacji, skoro popelniles blad uzywajac UUIDow, zawsze mogles skorzystac z LABEL= do wskazania aetykiety. A sda2 nie zawsze trafia jako sda2. W niektorych komputerach wystarczy, zeby w trakcie bootowania byl wetkniety pendrive i juz enumeracja sie zmienia.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wildente&lt;/strong&gt; &lt;em&gt;2011-01-01 17:12:44&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A skąd niby mam wiedzieć jaką etykietę ma podłączany dysk? W przupadku UUIDów to już w ogóle porażka, jak pisałam, przy np. klonowaniu konfiguracji na identycznie w miarę maszyny&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2011-01-02 11:39:06&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;No chyba wiesz co podłączasz? Jak nie, to po wetknięciu masz polecenia "findmnt", "blkid" i inne. Pytając analogicznie, skąd możesz wiedzieć jakie /dev/sdX dostanie napęd?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wildente&lt;/strong&gt; &lt;em&gt;2011-01-02 13:47:34&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A skąd mam wiedzieć, co podłączam? Włączam pendrajwa do windowsa i mam zawsze jako ten sam dysk, nie ważne który z miliona pendrajwów. Podłączam do Linuksa i mam na milion sposobów. A co do /dev/sda2, to wiem, bo dyski zawsze są tak samo, przynajmniej u mnie. Nie zaobserwowałam zmian. &lt;br&gt;
&lt;br&gt;
No pewnie można jakoś sobie oprogramować te zmiany, ale zauważam po prostu fakt, że to tylko utrudnienie. I że jak kiedyś nie było UUIDów, to było wygodnie, bo było /dev/hda... Później było /dev/sda ale zasada pozostała. A teraz są UUIDy i przenaszalność mi szlag trafia.&lt;/p&gt;</description><category>Linux</category><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2010/12/21/pozegnanie-z-eth0/</guid><pubDate>Tue, 21 Dec 2010 11:59:00 GMT</pubDate></item><item><title>Hot, hot data</title><link>https://enotty.pipebreaker.pl/2010/08/29/hot-hot-data/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;Nadal chcesz &lt;a href="https://enotty.pipebreaker.pl/2010/05/03/wiec-chcesz-uzyc-ssd-do-przyspieszenia-serwera/"&gt;
przyspieszyć serwer dzięki SSD&lt;/a&gt;? Budżet nie pozwala na zakup dającego
1,5 miliona IOPS &lt;a href="http://www.kaminario.com/index.aspx?id=3935"&gt;Kaminario K2&lt;/a&gt;.
Pewnie nie starcza nawet na najmniejszą konfigurację K2 (300 kIOPS, 1TB, $200k),
ani na &lt;a href="http://www.ramsan.com/products/ramsan-440.asp"&gt;małego
RamSan-440&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Pozostaje dopingować (a najlepiej zasponsorować) Bena Chocieja z IBM, który pracuje nad infrastrukturą
do śledzenia &lt;em&gt;temperatury&lt;/em&gt; danych. Im gorętsze — częściej
używane — tym bardziej nadają się do przeniesienia na szybszą
pamięć masową. Czyli na dyski 10k, 15k RPM, short-stroked, SSD czy 
wysokowydajne wolumeny RAID10 na macierzy.&lt;/p&gt;

&lt;p&gt;Łatki Bena na początek &lt;a href="https://lwn.net/Articles/398503/"&gt;współdziałają
z btrfs&lt;/a&gt;. Pojawiły się głosy za umieszczeniem funkcjonalności na poziomie VFS,
co daje możliwość korzystanie z niej innym systemom plików. Koncepcja jak 
najbardziej słuszna.&lt;/p&gt;

&lt;p&gt;W stosunku do rozwiązań &lt;em&gt;cache'ujących&lt;/em&gt;, pojemność szybkiej pamięci
masowej wchodzi w skład dostępnej przestrzeni dyskowej w puli.
Stąd już tylko krótki krok do niezłej implementacji hierarchicznego składowania
w Linuksie. I do zastąpienia &lt;a href="http://en.wikipedia.org/wiki/DMAPI"&gt;DMAPI&lt;/a&gt;,
niedawno usuniętego z XFS w jądrze.&lt;/p&gt;

&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Archived comments:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;sprae&lt;/strong&gt; &lt;em&gt;2010-08-29 16:40:24&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Czy dzisiaj się nie stosuje już do takich krytycznych rzeczy zwykłego ramdysku?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2010-08-29 17:02:19&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;sprae stosuje się, ale cenowo/pojemnościowo się nie opłaca. Do serwera włożysz jakiś terabajt RAMu (do Sun Fire x4800) ale zapłacisz za to masakrycznie dużo (KVR1333D3D4R9S/8G za 1300 pln, potrzebujesz 128 takich). Po to są rozwiązania HSM, na jednym końcu page cache jądra, potem SSD, dyski, a na końcu taśmy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2010-08-29 17:10:08&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;W sumie inaczej: jeden poziom cacheowania danych już mamy - tak jak mówisz, w pamięci RAM. Problemem są dwa:1) że jądro widzi tylko pamięć RAM i system dyskowy, bez niczego pośredniego; 2) dane są duplikowane w RAM i na dysku, więc tracimy na pojemności.&lt;br&gt;
Po zauważeniu, że dyski nie są jednolite - różnią się prędkością - łatki Bena pozwalają te różnice wykorzystać.&lt;br&gt;
Ręczne zakładanie ramdysków i kopiowanie częściej używanych danych to prowizorka. Tym powinno się zajmować jądro.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;sprae&lt;/strong&gt; &lt;em&gt;2010-08-29 21:21:45&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Tak spytałem, bo ostatnio głośno o facebookowym przejściu na ARM. I gdy o tym dyskutowaliśmy to wyszło nam, że na ARM można co najwyżej zrobić komputery obsługujące aplikacje (te ich kompilowane PHPy itp). Z resztą oni też są znani z tego, że trzymają statyczne dane w ramie.&lt;br&gt;
Co do reszty infrastruktury o której piszesz we wpisie wydaje się fajna, o ile będzie stabilna i przewidywalna. Inaczej dalej będzie jak to nazywasz "prowizorka" (dla mnie to normalne elementy infrastruktury).&lt;/p&gt;</description><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2010/08/29/hot-hot-data/</guid><pubDate>Sun, 29 Aug 2010 14:36:00 GMT</pubDate></item><item><title>Krótki instruktaż systemd: spis treści</title><link>https://enotty.pipebreaker.pl/2010/08/13/krotki-instruktaz-systemd-spis-tresci/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;Dotychczas w cyklu epopei nerdowskiej&lt;sup&gt;*&lt;/sup&gt; ukazały się:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt; &lt;a href="https://enotty.pipebreaker.pl/2010/08/02/krotki-instruktaz-systemd-wstep/"&gt;Wstęp&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt; &lt;a href="https://enotty.pipebreaker.pl/2010/08/03/krotki-instruktaz-systemd-uslugi/"&gt;Usługi&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt; &lt;a href="https://enotty.pipebreaker.pl/2010/08/04/krotki-instruktaz-systemd-cele-i-migawki/"&gt;Cele i migawki&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt; &lt;a href="https://enotty.pipebreaker.pl/2010/08/05/krotki-instruktaz-systemd-gniazdka/"&gt;Gniazdka&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt; &lt;a href="https://enotty.pipebreaker.pl/2010/08/06/krotki-instruktaz-systemd-timery/"&gt;Timery&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt; &lt;a href="https://enotty.pipebreaker.pl/2010/08/07/krotki-instruktaz-systemd-sciezki/"&gt;Ścieżki&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt; &lt;a href="https://enotty.pipebreaker.pl/2010/08/08/krotki-instruktaz-systemd-punkty-auto-mountowania/"&gt;Punkty (auto)mountowania&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt; &lt;a href="https://enotty.pipebreaker.pl/2010/08/09/krotki-instruktaz-systemd-urzadzenia-i-swap/"&gt;Urządzenia i swap&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt; &lt;a href="https://enotty.pipebreaker.pl/2010/08/10/krotki-instruktaz-systemd-zaleznosci/"&gt;Zależności&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt; &lt;a href="https://enotty.pipebreaker.pl/2010/08/11/krotki-instruktaz-systemd-kontrola-startu/"&gt;Kontrola startu&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt; &lt;a href="https://enotty.pipebreaker.pl/2010/08/12/krotki-instruktaz-systemd-uzyteczne-drobiazgi/"&gt;Użyteczne drobiazgi&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt; &lt;a href="https://enotty.pipebreaker.pl/2010/08/13/krotki-instruktaz-systemd-spis-tresci/"&gt;Spis treści&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt; Addendum:
   &lt;ul&gt;
    &lt;li&gt; &lt;a href="http://enotty.pipebreaker.pl/2011/06/20/systemd-modyfikacja-jednostek/"&gt;Modyfikacja jednostek&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt; &lt;a href="http://enotty.pipebreaker.pl/2011/08/04/systemd-stadko-zamieniajacych-uniksa-demonow/"&gt;Stadko zamieniających Uniksa demonów&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt; &lt;a href="http://enotty.pipebreaker.pl/2012/03/08/systemd-jolu-pokaz-panom-cel/"&gt;Jolu, pokaż Panom cel&lt;/a&gt;&lt;/li&gt;
   &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I nawet brak dobrego tłumaczenia dla określenia &lt;em&gt;crash course&lt;/em&gt; nie przeszkodził.
&lt;/p&gt;
&lt;p&gt;Kotek:&lt;br&gt;

&lt;/p&gt;&lt;center&gt;&lt;img src="https://xn--dogstaff-33b.pipebreaker.pl/2010.08.13-kotek.jpg" alt="[dachowiec]"&gt;&lt;/center&gt;

&lt;p&gt;&lt;small&gt;&lt;sup&gt;*&lt;/sup&gt; dzięki, &lt;a href="http://doomhammer.jogger.pl"&gt;Doom&lt;/a&gt; :)&lt;/small&gt;
&lt;/p&gt;

&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Archived comments:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Caladan&lt;/strong&gt; &lt;em&gt;2010-08-13 14:23:07&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Kicia!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rebel&lt;/strong&gt; &lt;em&gt;2010-08-13 17:52:06&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;krzyż! i to podwójny ! ;p&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Szymon&lt;/strong&gt; &lt;em&gt;2010-08-13 21:20:08&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;kotek :3&lt;br&gt;
&lt;br&gt;
obiecuję sobie to wszystko niedługo przeczytać, zgaduje że odwaliłeś kawał dobrej roboty...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paweł Ciupak&lt;/strong&gt; &lt;em&gt;2010-08-14 01:39:03&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Trawka!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Michał &amp;amp;quot;Wolvverine&amp;amp;quot; Panasiewicz&lt;/strong&gt; &lt;em&gt;2012-06-29 03:21:51&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;CGroups - Zarządzanie zasobami w Linux - rlimit (ulimit) do lamusa?&lt;br&gt;&lt;br&gt;Stara metoda limitowania:&lt;br&gt;
rlimit - pam_limits, limits.conf, /proc/[pid]/limits&lt;br&gt;
część programów jej nie respektuje, niejasna konfiguracja, limity nieprzestrzegane przez programy.&lt;br&gt;
&lt;br&gt;
Aktualna:&lt;br&gt;
&lt;br&gt;
CGroups - Mechanizm do hierarchicz[...]&lt;/p&gt;</description><category>Linux</category><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2010/08/13/krotki-instruktaz-systemd-spis-tresci/</guid><pubDate>Fri, 13 Aug 2010 11:40:00 GMT</pubDate></item><item><title>Z upstart do systemd w sobotnie popołudnie</title><link>https://enotty.pipebreaker.pl/2010/07/17/z-upstart-do-systemd-w-sobotnie-popoludnie/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;Dzisiaj przystosowałem paczkę, którą zajmuję się w Fedorze (hdapsd) do
współpracy z &lt;a href="http://www.freedesktop.org/wiki/Software/systemd"&gt;&lt;code&gt;systemd&lt;/code&gt;&lt;/a&gt;.
Systemd jest najnowszym podejściem do zarządzania w Linuksie procesami i usługami
na poziomie systemu, operacji cyklicznych i sesji użytkownika.&lt;/p&gt;

&lt;p&gt;Moją paczkę od początku wyposażyłem w skrypt współpracujący z &lt;code&gt;upstart&lt;/code&gt;,
czyli poprzednią próbą unowocześnienia tradycyjnego inita. Upstart jest stosowany
w Ubuntu od 2006 roku, w Fedorze od wersji 9, czyli od 2008. Porzucenie upstart
w F14 jest gruntowne — &lt;code&gt;systemd&lt;/code&gt; współpracuje ze
skryptami startowymi SysV, ale zupełnie ignoruje definicje zadań z
&lt;code&gt;upstart&lt;/code&gt;. Stąd konieczność modyfikacji.&lt;/p&gt;

&lt;p&gt;Po kilku kwadransach czytania i modyfikowania wg. &lt;a href="http://lists.fedoraproject.org/pipermail/devel/2010-July/138866.html"&gt;
wskazówek Lennarta&lt;/a&gt; stwierdzam: podoba mi się
&lt;code&gt;systemd&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Program, który się zajmuje ma proste zadanie: zatrzymuje pracę dysku
twardego, gdy któryś z akcelerometrów wykryje spadek komputera. Dla każdego
z chronionych dysków &lt;code&gt;hdapsd&lt;/code&gt; musi być uruchomiony osobno. Najlepiej
jak najszybciej, żeby objąć dyski nadzorem jak tylko pojawią się w systemie.
Do tego odrobina konfiguracji w pliku &lt;code&gt;/etc/sysconfig/hdapsd&lt;/code&gt;.

&lt;/p&gt;&lt;p&gt;Pierwszym elementem jest regułka wywoływana dla dysków twardych przez
&lt;code&gt;udev&lt;/code&gt;. Informuje systemd, że dla niewymiennych dysków &lt;code&gt;sda&lt;/code&gt;
i &lt;code&gt;sdb&lt;/code&gt; przydałoby się uruchomić usługę &lt;code&gt;hdapsd&lt;/code&gt;:

&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;
SUBSYSTEM=="block", KERNEL=="sd[ab]", ATTRS{removable}=="0", TAG="systemd", ENV{SYSTEMD_WANTS}="hdapsd@%k.service"
&lt;/pre&gt;&lt;/blockquote&gt;

Podobną regułkę wykorzystywałem, gdy w Fedorze używany był Upstart 0.3. Wersja
0.6 nie potrzebowała regułki. Prawdopodobnie w systemd też będzie (a może już
można?) obejść się bez dodatków do &lt;code&gt;udev&lt;/code&gt;.

&lt;p&gt;Druga sprawa to definicja usługi już w systemd. Plik 
&lt;code&gt;/lib/systemd/system/hdapsd@.service&lt;/code&gt; wygląda następująco:

&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;
[Unit]
Description=%I shock protection daemon

[Service]
EnvironmentFile=/etc/sysconfig/hdapsd
StandardOutput=syslog
SyslogIdentifier=%p(%I)
Nice=-5
ExecStart=/usr/sbin/hdapsd -d %I $(HDAPSD_OPTIONS)
&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;Jest tu przekierowanie standardowego wyjścia z programu do sysloga. Hdapsd
ma przełącznik &lt;code&gt;-l&lt;/code&gt;, dzięki któremu robi to sam, ale nie każdy
program lub skrypt tak potrafi. Dzięki implementacji na poziomie inita
programiści nie muszą pisać obsługi syslog samemu.&lt;/p&gt;

&lt;p&gt;Uruchomienie z żądanym poziomem &lt;code&gt;Nice&lt;/code&gt; to tylko szczyt góry
lodowej możliwości regulacji. Moja dusza sysadmina szeroko się uśmiecha,
gdy czytam &lt;a href="http://0pointer.de/public/systemd-man/systemd.exec.html"&gt;stronę
manuala &lt;code&gt;systemd.exec&lt;/code&gt;&lt;/a&gt;, gdzie podane są wszystkie możliwe
przełączniki. A jest ich multum: katalogi, capabilities, UID, GID, ustawienia OOM,
parametry planisty I/O, klasy planisty CPU, przywiązania do procesorów itd.
Pieczę nad nimi trzyma systemd, więc skrypty startowe mogą składać się z
ustawień i nazwy binarki do uruchomienia. Do tej pory osiągnięcie takiej
kontroli wiązało się z uruchamianiem wielu pomocniczych progamów (nice,
ionice, echo &amp;gt; /proc/…, ulimit, setcap, chrt, su, taskset, …) a czasem wymagało
skorzystania z odpowiednich wywołań systemowych już w programie.&lt;/p&gt;

&lt;p&gt;Pochwała należy się za &lt;a href="http://0pointer.de/public/systemd-man/"&gt;dokumentację&lt;/a&gt;,
która rzadko w linuksanych programach jest odpowiednio obszerna. Systemd 
opisany jest wyczerpująco, a główny autor na IRCu i poprzez
kanał mailowy wyjaśnia wątpliwości. &lt;/p&gt;

***

**Archived comments:**

**Piotr Pyclik** _2010-07-17 18:00:27_

&lt;p&gt;A może w przystępnych słowach, czym się różni systemd od upstart i z jakich względów ma zostać preferowanym rozwiązaniem w F14? Obserwuję rozwój Fedory, jednak programistą nie jestem, stąd to wszystko nie jest dla mnie zrozumiałe...&lt;/p&gt;

**zdz** _2010-07-17 18:08:30_

&lt;p&gt;W przystępnych słowach, hm... Lennart opisał dokładnie u siebie: http://0pointer.de/blog/projects/systemd.html (w tym porównanie z systemd) , kocio pisał też kiedyś na linuxnews.pl , plan na F14 jest tu: https://fedoraproject.org/wiki/Features/systemd&lt;br&gt;
Powtarzać tego wszystkiego raczej nie ma po co. IMO nie wymaga wiedzy programistycznej do zrozumienia.&lt;/p&gt;

**Paweł Ciupak** _2010-07-17 23:01:30_

&lt;p&gt;&amp;gt; A może w przystępnych słowach, czym się różni systemd od upstart&lt;br&gt;
&lt;br&gt;
Upstart to wymyślaniie koła od nowa, zaś systemd, to wymyślanie koła  od nowa drugi raz.&lt;/p&gt;

**Stanisław 'dozzie' Klekot** _2010-07-18 23:17:02_

&lt;p&gt;Albo też inaczej: upstart jest broken by design, bo bazuje na podaniu przez opiekuna pakietu wszystkich zależności usługi (rzecz niewykonalna, widziałem w praktyce).&lt;br&gt;
systemd ma szanse działać sprawnie, bo listę zależności sporządza sam. Za usługę jest uznawane coś, co słucha na gnieździe; systemd słucha na tym gnieździe, a przy pierwszym połączeniu startuje stosowną usługę i przekazuje jej gniazdo.&lt;br&gt;
Konstrukcja podobno zaczerpnięta z MacOS X.&lt;/p&gt;

**Marek** _2010-07-19 23:29:18_

&lt;p&gt;Witam. Szukając informacji o przywracaniu ext3 do stanu spójnego po nagłej śmierci systemu natrafiłem na tę stronę. Normalnie nie zostawiłbym żadnego wpisu, ale to słońce pomagające czytać zafascynowało mnie...&lt;br&gt;
Pozdro dla autora strony ;)&lt;/p&gt;

**zdz** _2010-08-03 07:23:02_

&lt;p&gt;Piotrze: zacząłem pisać, pierwsza notka z cyklu: &lt;a href="https://enotty.pipebreaker.pl/2010/08/02/krotki-instruktaz-systemd-wstep/"&gt;Krótki instruktaż systemd: wstęp&lt;/a&gt;&lt;/p&gt;</description><category>Linux</category><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2010/07/17/z-upstart-do-systemd-w-sobotnie-popoludnie/</guid><pubDate>Sat, 17 Jul 2010 15:54:00 GMT</pubDate></item><item><title>Więc chcesz użyć SSD do przyspieszenia serwera?</title><link>https://enotty.pipebreaker.pl/2010/05/03/wiec-chcesz-uzyc-ssd-do-przyspieszenia-serwera/</link><dc:creator>Tomasz Torcz</dc:creator><description>&lt;p&gt;Twój serwer, jak każdy szanujący się, spędzą większość czasu
nudząc się oczekując na zakończenie operacji wejścia/wyjścia. Jak
mu pomóc?&lt;/p&gt;

&lt;p&gt;Na zakup &lt;a href="http://www.dell.com/us/en/enterprise/servers/poweredge-r910/pd.aspx?refid=poweredge-r910&amp;amp;cs=555&amp;amp;s=biz"&gt;serwera z terabajtem RAMu&lt;/a&gt; Cię nie
stać. A szkoda, bo obsługiwałby obsceniczną liczbę &lt;em&gt;setek tysięcy&lt;/em&gt;
IOPS. &lt;a href="http://www.oracle.com/us/products/servers-storage/storage/disk-storage/043967.html"&gt;Macierz SSD&lt;/a&gt; też pewnie przekracza limit na kredytówce.
 Milion operacji wejścia/wyjścia na sekundę — &lt;em&gt;fun!&lt;/em&gt; Developerzy linuksa już usuwają wąskie
gardła przy współpracy z F5100.&lt;/p&gt;

&lt;p&gt;No to z ciężkim sercem decydujemy się tylko na ,,przyspieszenie''
podsystemu dyskowego używając SSD. Tylko co tam wtrynić… jeśli używasz programowego RAID,
możesz przejrzeć &lt;code&gt;man mdadm&lt;/code&gt; i nauczyć się o &lt;strong&gt;write intent
bitmap&lt;/strong&gt;. Który to &lt;em&gt;wib&lt;/em&gt; dobrze będzie się czuł na SSD.&lt;/p&gt;

&lt;p&gt;Ale to wciąż &lt;em&gt;mało, mało&lt;/em&gt; i niewiele daje. OK, spójrzmy trochę wyżej
na system plików. Jeśli posadowiłeś dane na ext3/4, XFS to super. Możesz wynieść
&lt;strong&gt;journal&lt;/strong&gt; na zewnętrzne urządzenie. Twoja baza danych wesoło zareaguje zwiększeniem
ilości możliwych zapisów na sekundę z 200÷300 (HDD) do 10 tysięcy (sprawdzić,
czy SSD Intela). Jeśli masz JFS to również możesz zeksternalizować dziennik. 
Ale mając JFS na produkcji powinieneś bać się $DEITY.&lt;/p&gt;

&lt;p&gt;Oczywiście niebycie pingwiniarzem zaprocentowało. Używając
ZFS dostępnego w FreeBSD i Solarisie już dawno zastosowałeś dyrektywę &lt;code&gt;log&lt;/code&gt;.
Obecnie Twój &lt;strong&gt;ZIL&lt;/strong&gt; podkręca licznik zużycia komórek SSD, a Ty czytasz ten wpis
celem pośmiania się z &lt;em&gt;przyjaciół drobiu arktycznego&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Załatwiliśmy zapisy, ale wciąż nie wszystko mieści się w buforze i odczyt 
czeka na odpowiednie położenie mechanicznej głowicy i talerza. Bo za złotówkę
można dostać 2,3 GiB talerza w dysku. RAM jako bufor to tylko 0,008 GiB / PLN.
SSD gdzieś pośrodku, ze jednego złocisza — jedna dziesiąta GB.&lt;/p&gt;

&lt;p&gt;Odczytom pomóżmy jakąś pamięcią podręczną. ZFSowcy ponownie robią &lt;em&gt;zieeeew&lt;/em&gt;,
bo &lt;strong&gt;L2ARC&lt;/strong&gt; od lat &lt;a href="http://blogs.sun.com/brendan/entry/l2arc_screenshots"&gt;czyni
im cuda z wydajnością&lt;/a&gt;. Podobnie podśmiewają się (wszyscy dwaj) użytkownicy
DragonflyBSD. Tam 
&lt;a href="http://leaf.dragonflybsd.org/cgi/web-man?command=swapcache"&gt;&lt;strong&gt;swapcache&lt;/strong&gt;&lt;/a&gt;
załatwia brudną robotę.&lt;/p&gt;

&lt;p&gt;Za to w linuksie dostępny jest pierdyliard rozwiązań, z których każde
kuleje na inną nóżkę. I gotowe będzie &lt;em&gt;za pół roku&lt;/em&gt;. Gimnastykować
się można z &lt;strong&gt;FS-Cache&lt;/strong&gt; i udawać, że wcale nie działa tylko z NFS,
AFS i iso9660. Bo ma potencjał.&lt;/p&gt;

&lt;p&gt;Potencjał ma też &lt;a href="http://users.cis.fiu.edu/~zhaom/dmcache/index.html"&gt;&lt;strong&gt;dm-cache&lt;/strong&gt;&lt;/a&gt;. Działa na tylko sprawnie, że Facebook
po drobnych przeróbkach i przemianowaniu na &lt;strong&gt;flashcache&lt;/strong&gt; stosuje
go produkcyjnie.&lt;/p&gt;

&lt;p&gt;Można poczuć się jak saper i wypróbować &lt;a href="http://lwn.net/Articles/382028/"&gt;
&lt;strong&gt;bcache&lt;/strong&gt;&lt;/a&gt;. Autor będzie wdzięczny za pomoc w ustabilizowaniu
rozwiązania. Klienci za wysłanie ich danych w kosmos trochę mniej.&lt;/p&gt;

&lt;p&gt;Obiecująco wyglądało &lt;strong&gt;dm-hstore&lt;/strong&gt;. Heinz jednak zajął się innymi,
bardziej pasjonującymi zabawkami i odłożył swoje dzieło na półkę. Wyraźniejszy
jest &lt;a href="http://lkml.org/lkml/2010/4/22/164"&gt;&lt;strong&gt;cleancache&lt;/strong&gt;&lt;/a&gt;,
który teoretycznie może być zastosowany z SSD jako zapleczem. &lt;/p&gt;

&lt;p&gt;Pozostaje mieć nadzieję, że &lt;a href="http://www.linkedin.com/pub/josef-bacik/7/8a/835"&gt;Josef&lt;/a&gt; po zakończeniu walki z &lt;code&gt;O_DIRECT&lt;/code&gt; zajmie
się trzymania drzewa intencji &lt;code&gt;btrfs&lt;/code&gt; na zewnętrznym
urządzeniu. A potem dorobi drugi poziom &lt;em&gt;cache&lt;/em&gt; w podobny sposób.
Może za pół roku.&lt;/p&gt;

&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Archived comments:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;krzyszsz&lt;/strong&gt; &lt;em&gt;2010-05-03 22:10:07&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Nie wiem czy dobrze zrozumiałem, ale chyba zrobiłeś mały błąd w zdaniu: "Bo za złotówkę można dostać 2,3 GiB talerza w dysku. RAM jako bufor to tylko 0,008 GiB / PLN. SSD gdzieś pośrodku, ze jednego złocisza — jedna dziesiątka GB". SSD ma droższy gigabajt niż gigabajt na talerzu. Nie wiem co to jest ZIL - sprawdzę w wolnej chwili. : ) Wpis jak każdy o ssd, ciekawy. : ) BTW u mnie był ostatnio wpis z dużą ilością komentarzy na ten temat.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2010-05-03 22:20:18&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;SSD jest droższe za GB. Za 1zł kupimy 23 razy mniej. Ceny oczywiście obrazują tylko rząd wielkości, a brałem do porównania następujące:&lt;br&gt;
Seagate 2 TB 7200rpm 64MB cache SATA III Barracuda XT SATA600 [ST32000641AS]     869zł&lt;br&gt;
Intel X25-M SSD 80GB (250MB/70MB) [SSDSA2MH080G2C1]      799zł&lt;br&gt;
A-Data 4GB (2x2GB) 2000MHz CL9 Xtreme Series &lt;br&gt;
[AX3U2000XB2G9-2X]  499zł&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;krzyszsz&lt;/strong&gt; &lt;em&gt;2010-05-03 22:34:58&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Ok, może się przyczepiłem niepotrzebnie. Chodziło mi o wyrażenie jakiego użyłeś: "jedna dziesiątka" potocznie oznacza liczbę 10 a nie liczbę 0.1.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;zdz&lt;/strong&gt; &lt;em&gt;2010-05-03 22:36:40&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;O! Literówka! Już poprawiam, dzięki.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LCF&lt;/strong&gt; &lt;em&gt;2010-05-03 23:16:12&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;"10 tysięcy (sprawdzić, czy SSD Intela)." &amp;lt;- zrobiłeś własne testy czy tylko czytałeś w necie ? Bo mam ciut inne wrażenia jeżeli chodzi o zapisy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;mina86&lt;/strong&gt; &lt;em&gt;2010-05-03 23:49:47&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Czemu użytkownicy BSD bardziej nie lubią GNU/Linuksa niż zamkniętych systemów?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;quackety&lt;/strong&gt; &lt;em&gt;2010-05-04 01:12:47&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Jest ZFS na FUSE, ale nie testowałem.&lt;br&gt;
&lt;br&gt;
Ogólnie, *bardzo* fajny wpis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;pecet&lt;/strong&gt; &lt;em&gt;2010-05-04 01:58:21&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Czy w przypadku XFS można przenosić journal w locie z partycji z danymi na zewnętrzna i odwrotnie, czy trzeba najpierw odmontować partycję?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;mt3o&lt;/strong&gt; &lt;em&gt;2010-05-04 06:58:07&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Na logikę powinno się odmontować. Zresztą, to bezpieczniej.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;rozie&lt;/strong&gt; &lt;em&gt;2010-05-05 06:59:01&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;@mina86: Pewnie zazdrość. *BSD niestety miejscami mocno przegrywa z Linuksami (miejscami oczywiście równie mocno wygrywa). A skoro przy BSD jesteśmy, czy Debian kFreeBSD pozwala na stosowanie ZFS? Z wszystkimi ficzerami?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ejdzej&lt;/strong&gt; &lt;em&gt;2010-05-08 09:14:22&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;"Czemu użytkownicy BSD bardziej nie lubią GNU/Linuksa niż zamkniętych systemów?"&lt;br&gt;
&lt;br&gt;
Bo zajmują tę samą niszę ekologiczną.&lt;/p&gt;</description><category>Linux</category><category>Ogólne</category><category>Techblog</category><guid>https://enotty.pipebreaker.pl/2010/05/03/wiec-chcesz-uzyc-ssd-do-przyspieszenia-serwera/</guid><pubDate>Mon, 03 May 2010 19:37:00 GMT</pubDate></item></channel></rss>