{"id":16,"date":"2006-03-19T20:30:56","date_gmt":"2006-03-19T19:30:56","guid":{"rendered":"http:\/\/my.stargazer.at\/?p=16"},"modified":"2011-07-14T08:53:19","modified_gmt":"2011-07-14T06:53:19","slug":"embedded-gentoo-tagebuch-eines-weiteren-versuchs-teil-1","status":"publish","type":"post","link":"https:\/\/my.stargazer.at\/de\/2006\/03\/19\/embedded-gentoo-tagebuch-eines-weiteren-versuchs-teil-1\/","title":{"rendered":"Embedded Gentoo &#8211; Tagebuch eines Versuchs (Teil 1)"},"content":{"rendered":"<p>Das Ziel dieser \u00dcbung ist, ein System welches sich leicht warten l\u00e4sst mit minimaler Gr\u00f6sse zu erstellen. Da Gentoo Linux meine Lieblingsdistribution ist und dank CHROOT() nicht viel schief gehen kann, starte ich einen Versuch in einem lokalen Build-Verzeichnis.<\/p>\n<p>Nach erstellung eines Verzeichnisses lade ich die Stage-1 des Gentoo-Embedded Projekts, welche noch immer als sehr experimentell gilt. Man findet sie unter den Gentoo-Mirrors unter <em>experimental\/x86\/embedded\/stages<\/em>. Da Stage-1 ein Compile von der Pike auf wird, das heisst mit Bootstrap &#8211; wird es auch die meiste Zeit in Anspruch nehmen, mir jedoch die M\u00f6glichkeiten offen lassen, auf anderen Architekturen zu arbeiten. <!--more--><\/p>\n<p>Nach dem Entpacken der Stage kopiere ich die ben\u00f6tigen Dateien und mounte mir Filesysteme. Da mein Portage auf einer eigenen Partition liegt binde ich ihn ein, halte ich jedoch PORTAGE_PKG und PORTAGE_DISTDIR in getrennten Verzeichnissen ausserhalb dieser Partition um mein Echtsystem nicht unnoetig mit Fremdpaketen zu belasten. Um trotzdem nichts doppelt aus dem Netz downloaden zu m\u00fcssen verwende ich den ohnehin schon existierenden HTTP-Replicator, welcher im lokalen Netz l\u00e4uft:<\/p>\n<blockquote><p><code>* net-proxy\/http-replicator<br \/>\nAvailable versions: 3.0<br \/>\nInstalled: none<br \/>\nDescription: Proxy cache for Gentoo packages<br \/>\n<\/code><\/p><\/blockquote>\n<p>Ich binde ihn in die make.conf des Target-Systems ein. Der Eintrag dazu lautet: <em>http_proxy=&#8220;http:\/\/http_replicator.localnet.net:8080&#8243;<\/em><\/p>\n<p>Als Kernel habe ich mich f\u00fcr die Version 2.6.xx entschieden &#8211; weshalb ich den Symlink von make.profile neu setzen muss. Diese Version ist zwar gr\u00f6sser, aber sie entspricht jeder auf meinem Build-Host.<\/p>\n<p>Was bisher geschah:<\/p>\n<blockquote><p><code>mkdir \/mnt\/gentoo_uclib<br \/>\ncd \/mnt\/gentoo_uclibc<br \/>\nwget &lt;path to stage-file&gt;<br \/>\ntar xjpf &lt;stage-file&gt;<br \/>\ncp -L \/etc\/resolv.conf \/mnt\/gentoo_uclibc\/etc\/resolv.conf<\/code><\/p>\n<p>mkdir -p \/mnt\/gentoo_uclibc\/usr\/portage<\/p><\/blockquote>\n<p>im chroot selbst:<\/p>\n<blockquote><p><code>mkdir \/usr\/local\/portage<br \/>\nmkdir \/var\/log\/portage<br \/>\nenv-update<br \/>\nsource \/etc\/profile<br \/>\nln -snf \/usr\/portage\/profiles\/uclibc\/x86\/2005.1 \/etc\/make.profile<br \/>\nemerge ccache -av<br \/>\nccache -M 2G<br \/>\n<\/code><\/p><\/blockquote>\n<p>Die abge\u00e4nderte make.conf meines chroots sieht wie folgt aus:<\/p>\n<blockquote><p><code># Build-time functionality<br \/>\n# ========================<br \/>\nUSE=\"minimal buildpkg\"<\/code><\/p>\n<p># Host Settings<br \/>\n# =============<br \/>\n# CHOST=&#8220;i686-pc-linux-gnu&#8220;<br \/>\nCFLAGS=&#8220;-march=i686 -pipe -Os&#8220;<\/p>\n<p># Advanced Masking<br \/>\n# ================<br \/>\n#ACCEPT_KEYWORDS=&#8220;~x86&#8243;<br \/>\nACCEPT_KEYWORDS=&#8220;x86&#8243;<\/p>\n<p># Portage Directories<br \/>\n# ===================<br \/>\nPORTAGE_TMPDIR=\/var\/tmp<br \/>\nPORTDIR=\/usr\/portage<br \/>\nDISTDIR=\/usr\/local\/portage\/distfiles<br \/>\nPKGDIR=\/usr\/local\/portage\/packages<br \/>\nPORT_LOGDIR=\/var\/log\/portage<\/p>\n<p>PORTDIR_OVERLAY=&#8220;\/usr\/local\/portage&#8220;<\/p>\n<p># Fetching files<br \/>\n# ==============<br \/>\nhttp_proxy=&#8220;http:\/\/http_replicator.localnet.net:8080&#8243;<\/p>\n<p># Synchronizing Portage<br \/>\n# =====================<br \/>\nSYNC=&#8220;rsync:\/\/rsync.gentoo.org\/gentoo-portage&#8220;<br \/>\nRSYNC_RETRIES=&#8220;3&#8243;<br \/>\nRSYNC_TIMEOUT=180<\/p>\n<p># Advanced Features<br \/>\n# =================<br \/>\nEMERGE_DEFAULT_OPTS=&#8220;&#8220;<br \/>\nMAKEOPTS=&#8220;-j2&#8243;<br \/>\nAUTOCLEAN=&#8220;yes&#8220;<br \/>\nPORTAGE_TMPFS=&#8220;\/dev\/shm&#8220;<\/p>\n<p>FEATURES=&#8220;autoconfig buildpkg ccache confcache digest distlocks fixpackages sandbox sfperms strict usersandbox&#8220;<br \/>\nCCACHE_SIZE=&#8220;2G&#8220;<br \/>\n# DISTCC_DIR=&#8220;${PORTAGE_TMPDIR}\/.distcc&#8220;<br \/>\n# UNSERMAKE=&#8220;\/usr\/bin\/unsermake&#8220;<\/p>\n<p># Hardware specific<br \/>\n# =================<br \/>\n# ALSA_CARDS=&#8220;intel8x0&#8243;<\/p><\/blockquote>\n<p>So weit so gut. Ich befinde mich im chroot meines Embedded-Stage1 Systems und kann nun mit dem Bootstrap beginnen, was sich aber nicht ganz nach Handbuch bewerkstelligen l\u00e4sst:<\/p>\n<blockquote><p><code>embedded portage # scripts\/bootstrap.sh -f<br \/>\nbash: scripts\/bootstrap.sh: \/bin\/bash: bad interpreter: Permission denied<\/code><\/p><\/blockquote>\n<p>Also dann, ein bisschen direkter, indem wir sie mit passendem Interpreter aufrufen &#8211; <em>bash scripts\/bootstrap.sh<\/em> &#8211; und der Prozess nimmt seinen Lauf&#8230;<\/p>\n<p>Sp\u00e4testens jetzt sollte man sich \u00fcber eine Besch\u00e4ftigung gedanken gemacht haben, wie zum Beispiel Aufr\u00e4umen, Howtos schreiben &#8211; kurz gesagt etwas, das einen f\u00fcr die n\u00e4chsten Stunden bei Laune h\u00e4lt bis schliesslich auch der n\u00e4chste Schritt, das &#8218;<em>emerge -e system<\/em>&#8218; gelaufen ist.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Ziel dieser \u00dcbung ist, ein System welches sich leicht warten l\u00e4sst mit minimaler Gr\u00f6sse zu erstellen. Da Gentoo Linux meine Lieblingsdistribution ist und dank CHROOT() nicht viel schief gehen kann, starte ich einen Versuch in einem lokalen Build-Verzeichnis. Nach erstellung eines Verzeichnisses lade ich die Stage-1 des Gentoo-Embedded Projekts, welche noch immer als sehr experimentell gilt. Man [&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":[194,109,39],"class_list":["post-16","post","type-post","status-publish","format-standard","hentry","category-it-related-stuff","tag-development","tag-embedded","tag-gentoo"],"_links":{"self":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts\/16","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=16"}],"version-history":[{"count":0,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts\/16\/revisions"}],"wp:attachment":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/media?parent=16"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/categories?post=16"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/tags?post=16"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}