{"id":41,"date":"2006-04-18T12:41:37","date_gmt":"2006-04-18T11:41:37","guid":{"rendered":"http:\/\/my.stargazer.at\/?p=41"},"modified":"2007-06-19T15:43:55","modified_gmt":"2007-06-19T13:43:55","slug":"die-leiden-des-einst-jungen-travelmate-800-teil-ii","status":"publish","type":"post","link":"https:\/\/my.stargazer.at\/de\/2006\/04\/18\/die-leiden-des-einst-jungen-travelmate-800-teil-ii\/","title":{"rendered":"Die Leiden des (einst) jungen Travelmate 800 &#8211; Teil II"},"content":{"rendered":"<p>Im letzten Teil der Anleitung arbeiteten wir bis <em>emerge -e system<\/em> durch. Nachdem wir dies erfolgreich \u00fcberstanden haben k\u00f6nnen wir uns dem n\u00e4chsten Schritt widmen und die ACCEPT_KEYWORDS in der make.conf auf ~x86 setzen.<\/p>\n<p>Ein <em>emerge -uDp system<\/em> und schliesslich <em>emerge -uD system<\/em> bringt uns auf den aktuellen Stand. Hier gilt das Selbe wie beim vorhergegangenen Schritt: Get a life. &#8211; Was ich damit sagen m\u00f6chte ist, dass jetzt ein guter Zeitpunkt ist um sich im Zimmer umzusehen und festzustellen was sich in den letzten Jahren ver\u00e4ndert hat. Sollte es vorkommen, dass man &#8218;Papa&#8216; oder &#8218;Mama&#8216; gerufen wird ist dies kein neuer Nick sondern mit h\u00f6chster Wahrscheinlichkeit die eigenen Kinder.<!--more--><\/p>\n<p>Nachdem das System nun auf Stand kommen jene Pakete bei denen wir schon ausw\u00e4hlen d\u00fcrfen:<\/p>\n<ul>\n<li>Syslog<\/li>\n<li>Cron<\/li>\n<li>Kernel-Sources<\/li>\n<\/ul>\n<p>Aufgrund der Skalierbarkeit und Einfachheit von Syslog-ng w\u00e4hle ich diesen als Syslog-Daemon. Seine F\u00e4higkeiten auf Netzwerkserver zu loggen k\u00f6nnte sich eventuell als N\u00fctzlich erweisen, auch wenn es an einem Feature namens Output-Buffering fehlt. Zugegeben, wenn mir jemand den Stecker zieht und den Akku klaut ist es besser, wenn die Logs gleich auf der Platte stehen. Also emergen wir einmal syslog-ng (das NG dabei steht f\u00fcr Next Generation).<\/p>\n<blockquote><p><code>emerge syslog-ng<\/code><\/p><\/blockquote>\n<p>Da Sicherheit bei den Logs beginnt sollte man diese <strong>leserlich halten<\/strong>, was ich durch folgende Config zu erreichen versuche:<\/p>\n<blockquote><p><code># \/etc\/syslog-ng\/syslog-ng.conf<br \/>\noptions { long_hostnames(off); sync(0); stats(0); };<\/code><\/p>\n<p>#Log-Quellen<br \/>\nsource src { unix-stream(&#8222;\/dev\/log&#8220;); internal(); };<br \/>\nsource kernsrc { file(&#8222;\/proc\/kmsg&#8220;); };<\/p>\n<p>#Wohin mit dem Zeug?<br \/>\ndestination authlog { file(&#8222;\/var\/log\/auth.log&#8220;); };<br \/>\ndestination syslog { file(&#8222;\/var\/log\/syslog&#8220;); };<br \/>\ndestination cron { file(&#8222;\/var\/log\/cron.log&#8220;); };<br \/>\ndestination daemon { file(&#8222;\/var\/log\/daemon.log&#8220;); };<br \/>\ndestination kern { file(&#8222;\/var\/log\/kern.log&#8220;); };<br \/>\ndestination lpr { file(&#8222;\/var\/log\/lpr.log&#8220;); };<br \/>\ndestination user { file(&#8222;\/var\/log\/user.log&#8220;); };<br \/>\ndestination mail { file(&#8222;\/var\/log\/mail\/mail.log&#8220;); };<\/p>\n<p>destination mailinfo { file(&#8222;\/var\/log\/mail\/mail.info&#8220;); };<br \/>\ndestination mailwarn { file(&#8222;\/var\/log\/mail\/mail.warn&#8220;); };<br \/>\ndestination mailerr { file(&#8222;\/var\/log\/mail\/mail.err&#8220;); };<\/p>\n<p>destination newscrit { file(&#8222;\/var\/log\/news\/news.crit&#8220;); };<br \/>\ndestination newserr { file(&#8222;\/var\/log\/news\/news.err&#8220;); };<br \/>\ndestination newsnotice { file(&#8222;\/var\/log\/news\/news.notice&#8220;); };<\/p>\n<p>destination debug { file(&#8222;\/var\/log\/debug&#8220;); };<br \/>\ndestination messages { file(&#8222;\/var\/log\/messages&#8220;); };<br \/>\ndestination console { usertty(&#8222;root&#8220;); };<br \/>\ndestination console_all { program(&#8222;ccze -r &gt;&gt; \/dev\/tty12&#8220;); };<br \/>\ndestination xconsole { pipe(&#8222;\/dev\/xconsole&#8220;); };<\/p>\n<p># Wir wollen ja nicht alles&#8230;<br \/>\nfilter f_auth { facility(auth); };<br \/>\nfilter f_authpriv { facility(auth, authpriv); };<br \/>\nfilter f_syslog { not facility(authpriv, mail); };<br \/>\nfilter f_cron { facility(cron); };<br \/>\nfilter f_daemon { facility(daemon); };<br \/>\nfilter f_kern { facility(kern); };<br \/>\nfilter f_lpr { facility(lpr); };<br \/>\nfilter f_mail { facility(mail); };<br \/>\nfilter f_user { facility(user); };<br \/>\nfilter f_debug { not facility(auth, authpriv, news, mail); };<br \/>\nfilter f_messages { level(info..warn)<br \/>\nand not facility(auth, authpriv, mail, news); };<br \/>\nfilter f_emergency { level(emerg); };<\/p>\n<p>filter f_info { level(info); };<br \/>\nfilter f_notice { level(notice); };<br \/>\nfilter f_warn { level(warn); };<br \/>\nfilter f_crit { level(crit); };<br \/>\nfilter f_err { level(err); };<br \/>\nfilter f_failed { match(&#8222;failed&#8220;); };<br \/>\nfilter f_denied { match(&#8222;denied&#8220;); };<\/p>\n<p>#Filter und Ziele verbinden:<br \/>\nlog { source(src); filter(f_authpriv); destination(authlog); };<br \/>\nlog { source(src); filter(f_syslog); destination(syslog); };<br \/>\nlog { source(src); filter(f_cron); destination(cron); };<br \/>\nlog { source(src); filter(f_daemon); destination(daemon); };<\/p>\n<p>log { source(kernsrc); filter(f_kern); destination(kern); };<br \/>\nlog { source(src); filter(f_lpr); destination(lpr); };<br \/>\nlog { source(src); filter(f_mail); destination(mail); };<br \/>\nlog { source(src); filter(f_user); destination(user); };<br \/>\nlog { source(src); filter(f_mail); filter(f_info); destination(mailinfo); };<br \/>\nlog { source(src); filter(f_mail); filter(f_warn); destination(mailwarn); };<br \/>\nlog { source(src); filter(f_mail); filter(f_err); destination(mailerr); };<\/p>\n<p>log { source(src); filter(f_debug); destination(debug); };<br \/>\nlog { source(src); filter(f_messages); destination(messages); };<br \/>\nlog { source(src); filter(f_emergency); destination(console); };<\/p>\n<p>#Alles nochmal hierlang:<br \/>\nlog { source(src); destination(console_all); };<\/p><\/blockquote>\n<p>Um das Logging in vollen Z\u00fcgen geniessen zu k\u00f6nnen lasse ich es noch zus\u00e4tzlich auf der Console 12 mitlaufen, was mit der Zieldefinition <em>destination console_all { program(&#8222;ccze -r &gt;&gt; \/dev\/tty12&#8220;); };<\/em> passiert. Das Programm <em>ccze<\/em> hat den Sinn die Logs je nach Ereignis einzuf\u00e4rben um es leserlicher zu gestalten.<\/p>\n<p>Als Cron Daemon bietet sich Paul Vixie&#8217;s vixie-cron an. Die Standard-Konfiguration sollte f\u00fcr uns ausreichen, wobei man mit Umgebungsvariablen das Verhalten beeinflussen kann:<\/p>\n<blockquote><p><code>SHELL=\/bin\/sh<br \/>\nPATH=\/usr\/bin:\/usr\/sbin:\/sbin:\/bin<\/code><\/p>\n<p>* * * * <task><br \/>\n<\/task><\/p><\/blockquote>\n<p>Wenn man bei einem Cronjob keine Berichtsmail haben m\u00f6chte, so sollte man diesen mit &#8222;2&amp;1&gt;\/dev\/null&#8220; zum Schweigen bringen, indem man so seine gesamten Ausgaben nach \/dev\/null umleitet.<\/p>\n<p>Jetzt wo wir einen Cron-Daemon am System haben, ist es interessant diesem auch Arbeit zu geben: Das Paket <em>logrotate<\/em> ist dazu da, die Systemlogs zusammenzur\u00e4umen indem es sie aufteilt, packt und alte Logs l\u00f6scht. Seine Konfiguration f\u00fcr unseren Syslog-NG sieht folgendermassen aus:<\/p>\n<blockquote><p><code>\/var\/log\/auth.log \/var\/log\/syslog \/var\/log\/cron.log \/var\/log\/daemon.log \/var\/log<br \/>\n\/kernel.log \/var\/log\/user.log \/var\/log\/mail\/* \/var\/log\/news\/* \/var\/log\/debug.log<br \/>\n{<br \/>\nmonthly<br \/>\nsize 1M<br \/>\nmissingok<br \/>\nnotifempty<br \/>\nsharedscripts<br \/>\npostrotate<br \/>\n\/etc\/init.d\/syslog-ng reload &gt; \/dev\/null 2&gt;&amp;1 || true<br \/>\nendscript<br \/>\n}<\/code><\/p>\n<p>\/var\/log\/messages {<br \/>\ndaily<br \/>\nsize 1M<br \/>\nmissingok<br \/>\nnotifempty<br \/>\nsharedscripts<br \/>\npostrotate<br \/>\n\/etc\/init.d\/syslog-ng reload &gt; \/dev\/null 2&gt;&amp;1 || true<br \/>\nendscript<br \/>\n}<\/p><\/blockquote>\n<p>Wichtig dabei ist, dass der Syslogger nach dem Rotieren der Logs neu geladen werden muss damit er weiter in Files schreiben kann!<\/p>\n<p>Die Wahl des Kernels \u00fcberlasse ich jedem selbst. Ich habe mich f\u00fcr die Gentoo-Sources entschieden, welche ich noch h\u00e4ndisch mit diversen Patches verfeinere. Ein n\u00fctzliches Werkzeug beim Bauen des Kernels ist <em>genkernel<\/em>, welches mich mit dem Parameter &#8211;menuconfig die Konfiguration des Kernels von Hand erledigen l\u00e4sst. Danach werden automatisch der Kernel, die Module und ein Initrd gebaut, was ich pers\u00f6nlich als ein angenehmes Feature empfinde. Die einzelnen Kernelkonfigurationen liegen dann nach Versionen benannt in \/etc\/kernels.<\/p>\n<p>Nach Abschluss des Kernels ben\u00f6tigen wir einen Bootloader. Ich habe mich f\u00fcr GRUB entschieden, da sich dieser on the fly richten l\u00e4sst. Das heisst f\u00fcr mich, wenn ich die Konfiguration \u00e4ndern muss kann ich auf eine Shell gelangen um den Kernel im schlimmsten Fall manuell zu laden. Seine in \/boot\/grub\/menu.lst befindliche Konfiguration (oft ein Symlink zu grub.conf) sieht wie Folgt f\u00fcr mich aus:<\/p>\n<blockquote><p><code>default 0<br \/>\ntimeout 30<br \/>\nsplashimage=(hd0,4)\/grub\/splash.xpm.gz<\/code><\/p>\n<p>#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\ntitle=Gentoo Linux (2.6.16-gentoo-r2)<br \/>\nroot (hd0,4)<br \/>\nkernel \/kernel-genkernel-x86-2.6.16-gentoo-r2 root=\/dev\/ram0 init=\/linuxrc real_root=\/dev\/hda5<br \/>\ninitrd \/initramfs-genkernel-x86-2.6.16-gentoo-r2<\/p>\n<p>#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\ntitle Windows XP<br \/>\nrootnoverify (hd0,0)<br \/>\nmakeactive<br \/>\nchainloader  +1<\/p><\/blockquote>\n<p>Danach geht es ans Einrichten der Konfigurationsdateien. Wichtig dabei sind die fstab, die Keyboardmappings und die rc. Ist dies geschehen setzen wir das Root-Passwort, verlassen das chroot und rebooten, nach sorgf\u00e4ltigem Unmounten der Dateisysteme.<\/p>\n<p>Wenn das System nun wie geplant bootet und man sich als root einloggen kann, das Netzwerk funktioniert k\u00f6nnen wir uns auf der Konsole h\u00e4uslich einrichten &#8211; doch dazu an einem anderen Tag.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im letzten Teil der Anleitung arbeiteten wir bis emerge -e system durch. Nachdem wir dies erfolgreich \u00fcberstanden haben k\u00f6nnen wir uns dem n\u00e4chsten Schritt widmen und die ACCEPT_KEYWORDS in der make.conf auf ~x86 setzen. Ein emerge -uDp system und schliesslich emerge -uD system bringt uns auf den aktuellen Stand. Hier gilt das Selbe wie beim vorhergegangenen Schritt: Get [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[223,221,39],"class_list":["post-41","post","type-post","status-publish","format-standard","hentry","category-it-related-stuff","tag-setup","tag-acer-travelmate-800","tag-gentoo"],"_links":{"self":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts\/41","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/comments?post=41"}],"version-history":[{"count":0,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts\/41\/revisions"}],"wp:attachment":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/media?parent=41"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/categories?post=41"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/tags?post=41"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}