Hackerboard WikiHaboBlog

[HaBo]

 

Basis-Build - Teil 1+2

Diskussion: Basis-Build - Teil 1+2 im Forum HaBo-Linux, in der Kategorie Linux/UNIX; Da architect seine Toolchain schon fertig hat, hier schonmal der erste Teil des Basis-Builds. Ich möchte aber darauf hinweisen, dass ...

Antwort
Alt 13.05.09, 02:34   #1 (permalink)
Moderator
 
Benutzerbild von bitmuncher
 
Registriert seit: 30.09.06
bitmuncher Leistung: Opteronbitmuncher Leistung: Opteronbitmuncher Leistung: Opteronbitmuncher Leistung: Opteronbitmuncher Leistung: Opteronbitmuncher Leistung: Opteron
Likes: 371
Standard Basis-Build - Teil 1+2


Da architect seine Toolchain schon fertig hat, hier schonmal der erste Teil des Basis-Builds. Ich möchte aber darauf hinweisen, dass es evtl. noch Änderungen bezüglich der Patches, Configure- und Compiler-Parameter usw. geben kann, wenn sich im weiteren Build noch Fehler aufzeigen oder das System nach dem Build nicht wie erwartet funktioniert.

Die Fortsetzung gibt es dann am WE.

Nachdem man wie unter Nach dem Server-Crash... beschrieben die Toolchain gebaut und in diese chrootet hat, wird zuerstmal die Standard-Ordnerstruktur eines Linux-Systems erzeugt. In der Chroot-Umgebung werden dafür folgende Befehle verwendet:

Code:
mkdir -p /{bin,boot,etc/opt,home,lib,mnt,opt}
mkdir -p /{media/{floppy,cdrom},sbin,srv,var}
install -d -m 0750 /root
install -d -m 1777 /tmp /var/tmp
mkdir -p /usr/{,local/}{bin,include,lib,sbin,src}
mkdir -p /usr/{,local/}share/{doc,info,locale,man}
mkdir  /usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -p /usr/{,local/}share/man/man{1..8}
for dir in /usr /usr/local; do
  ln -s share/{man,doc,info} $dir
done
mkdir /var/{lock,log,mail,run,spool}
mkdir -p /var/{opt,cache,lib/{misc,locate},local}
Ausserdem sollten wir ein paar notwendige Tools und Libs im Zielsystem verfügbar machen. Später werden sie ersetzt.

Code:
ln -sv /tools/bin/{bash,cat,echo,grep,pwd,stty} /bin
ln -sv /tools/bin/perl /usr/bin
ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib
ln -sv bash /bin/sh
Dann brauchen wir noch eine password- und eine group-Datei und die mtab, damit grundlegende Rechte-Verteilung funktioniert:

Code:
cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
EOF
cat > /etc/group << "EOF"
root:x:0:
bin:x:1:
sys:x:2:
kmem:x:3:
tty:x:4:
tape:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
uucp:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
mail:x:34:
nogroup:x:99:
EOF
touch /etc/mtab
Damit die Auflösung von User- und Gruppennamen korrekt funktioniert, wird eine neue Shell gestartet:
Code:
exec /tools/bin/bash --login +h
login, agetty und init brauchen ein paar Standard-Logs:

Code:
touch /var/run/utmp /var/log/{btmp,lastlog,wtmp}
chgrp utmp /var/run/utmp /var/log/lastlog
chmod 664 /var/run/utmp /var/log/lastlog
Nun kann das eigentliche Kompilieren beginnen. Ich habe die folgenden Anweisungen für die Pakete auf das eigentliche Kompilieren beschränkt. Das Runterladen und Entpacken der Sources, die unter http://www.habolinux.de/sources/ zu finden sind, sollte bis zur Installation von tar und wget im Host-System gemacht werden. Danach kann es auch innerhalb der chroot-Umgebung geschehen. Runtergeladen werden Pakete mittels

Code:
wget http://www.habolinux.de/sources/<paketname>.tar.gz
Entpackt wird dann mit

Code:
tar -xzf <paketname>.tar.gz
wodurch ein Ordner '<paketname>' entsteht, der die Sources enthält.

Bevor man mit dem Build beginnt, sollte der Inhalt des sources-Ordner gelöscht werden, in dem sich ja die kompilierten Sources der Toolchain befinden.

Bei den hier aufgeführten Befehlen gehe ich also davon aus, dass man sich im entpackten Source-Ordner in der chroot-Umgebung befindet und dass diese im sources-Ordner abgelegt sind, der im Host-System unter /hl/sources und in der chroot-Umgebung unter /sources verfügbar ist.

Linux API Headers (Paket: kernel.tar.gz)
Code:
make mrproper
make headers_check
make INSTALL_HDR_PATH=dest headers_install
cp -r dest/include/* /usr/include
Man-Pages (Paket: man-pages.tar.gz)
Code:
make install
GlibC (Paket: glibc.tar.gz)
Code:
sed -i '/vi_VN.TCVN/d' localedata/SUPPORTED
sed -i 's|@BASH@|/bin/bash|' elf/ldd.bash.in
cd /sources
mkdir glibc-build
cd glibc-build
echo "CFLAGS += -march=i486 -mtune=native" > configparms
../glibc/configure --prefix=/usr --disable-profile --enable-add-ons --enable-kernel=2.6.0 --libexecdir=/usr/lib/glibc
make
cp ../glibc/iconvdata/gconv-modules iconvdata
touch /etc/ld.so.conf
make install
mkdir -p /usr/lib/locale
make localedata/install-locales
cat > /etc/nsswitch.conf << "EOF"
# Begin /etc/nsswitch.conf

passwd: files
group: files
shadow: files

hosts: files dns
networks: files

protocols: files
services: files
ethers: files
rpc: files

# End /etc/nsswitch.conf
EOF
tzselect
cat > /etc/ld.so.conf << "EOF"
# Begin /etc/ld.so.conf

/usr/local/lib
/opt/lib

# End /etc/ld.so.conf
EOF
Toolchain "aufräumen"
Code:
mv -v /tools/bin/{ld,ld-old}
mv /tools/$(gcc -dumpmachine)/bin/{ld,ld-old}
mv /tools/bin/{ld-new,ld}
ln -s /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld
gcc -dumpspecs | sed -e 's@/tools/lib/ld-linux.so.2@/lib/ld-linux.so.2@g' -e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' -e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' > `dirname $(gcc --print-libgcc-file-name)`/specs
Binutils (Paket: binutils.tar.gz)
Code:
mkdir ../binutils-build
cd ../binutils-build
../binutils/configure --prefix=/usr --enable-shared
make tooldir=/usr
make tooldir=/usr install
cp ../binutils/include/libiberty.h /usr/include
GMP (Paket: gmp.tar.gz)
Code:
./configure --prefix=/usr --enable-cxx --enable-mpbsd
make
make install
mkdir /usr/share/doc/gmp-4.3.0
cp doc/{isa_abi_headache,configuration} doc/*.html /usr/share/doc/gmp-4.3.0
MPFR (Paket: mpfr.tar.gz)
Code:
./configure --prefix=/usr --enable-thread-safe
make
make install
Tar (Paket: tar.tar.gz)
Code:
./configure --prefix=/usr --bindir=/bin --libexecdir=/usr/sbin
make
make install
GCC (Paket: gcc.tar.gz)
Code:
sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in
sed -i 's/^XCFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in
sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in
mkdir ../gcc-build
cd ../gcc-build
../gcc/configure --prefix=/usr --libexecdir=/usr/lib --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-languages=c,c++ --disable-bootstrap
make
make -k check
../gcc/contrib/test_summary
make install
ln -s ../usr/bin/cpp /lib
ln -s gcc /usr/bin/cc
echo 'main(){}' > dummy.c
cc dummy.c -v -Wl,--verbose &> dummy.log
readelf -l a.out | grep ': /lib'
grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log
grep -B4 '^ /usr/include' dummy.log
grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
grep "/lib/libc.so.6 " dummy.log
grep found dummy.log
rm dummy.c a.out dummy.log
Wie der korrekte Output für die grep-Befehle auszusehen hat, kann man im LFS-Handbuch nachlesen.

DB4 (Paket: db4.tar.gz)
Code:
patch -Np1 -i patches/db-4.7.25-upstream_fixes-1.patch
cd build_unix
../dist/configure --prefix=/usr --enable-compat185 --enable-cxx
make
make docdir=/usr/share/doc/db-4.7.25 install
chown -Rv root:root /usr/share/doc/db-4.7.25
Sed (Paket: sed.tar.gz)
Code:
./configure --prefix=/usr --bindir=/bin --enable-html
make
make install
e2fsprogs (Paket: e2fsprogs.tar.gz)
Code:
sed -i 's@/bin/rm@/tools&@' lib/blkid/test_probe.in
mkdir build
cd build
../configure --prefix=/usr --with-root-prefix="" --enable-elf-shlibs
make
make install
make install-libs
chmod -v u+w /usr/lib/{libblkid,libcom_err,libe2p,libext2fs,libss,libuuid}.a
gunzip -v /usr/share/info/libext2fs.info.gz
install-info --dir-file=/usr/share/info/dir /usr/share/info/libext2fs.info
makeinfo -o      doc/com_err.info ../lib/et/com_err.texinfo
install -v -m644 doc/com_err.info /usr/share/info
install-info --dir-file=/usr/share/info/dir /usr/share/info/com_err.info
install -v -m644 -D ../doc/libblkid.txt /usr/share/doc/e2fsprogs-1.41.5/libblkid.txt
Coreutils (coreutils.tar.gz)
Code:
./configure --prefix=/usr --enable-install-program=hostname --enable-no-install-program=kill,uptime
make
make NON_ROOT_USERNAME=nobody check-root
echo "dummy:x:1000:nobody" >> /etc/group
chown -Rv nobody config.log {gnulib-tests,lib,src}/.deps
sed -i '/dummy/d' /etc/group
make install
mv /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin
mv /usr/bin/{false,hostname,ln,ls,mkdir,mknod,mv,pwd,readlink,rm} /bin
mv /usr/bin/{rmdir,stty,sync,true,uname} /bin
mv /usr/bin/chroot /usr/sbin
mv /usr/bin/{head,sleep,nice} /bin
M4 (Paket: m4.tar.gz)
Code:
./configure --prefix=/usr --enable-threads
make
make check
make install
Bison (Paket: bison.tar.gz)
Code:
./configure --prefix=/usr
echo '#define YYENABLE_NLS 1' >> config.h
make
make check
make install
Ncurses (Paket: ncurses.tar.gz)
Code:
./configure --prefix=/usr --with-shared --without-debug --enable-widec
make
make install
chmod 644 /usr/lib/libncurses++w.a
mv /usr/lib/libncursesw.so.5* /lib
ln -sf ../../lib/libncursesw.so.5 /usr/lib/libncursesw.so
for lib in curses ncurses form panel menu ; do \
    rm -vf /usr/lib/lib${lib}.so ; \
    echo "INPUT(-l${lib}w)" >/usr/lib/lib${lib}.so ; \
    ln -sfv lib${lib}w.a /usr/lib/lib${lib}.a ; \
done
ln -sf libncurses++w.a /usr/lib/libncurses++.a
rm -f /usr/lib/libcursesw.so
echo "INPUT(-lncursesw)" >/usr/lib/libcursesw.so
ln -sf libncurses.so /usr/lib/libcurses.so
ln -sf libncursesw.a /usr/lib/libcursesw.a
ln -sf libncurses.a /usr/lib/libcurses.a
mkdir /usr/share/doc/ncurses-5.7
cp -R doc/* /usr/share/doc/ncurses-5.7
make distclean
./configure --prefix=/usr --with-shared --without-normal --without-debug --without-cxx-binding
make sources libs
cp -av lib/lib*.so.5* /usr/lib
ProcPS (Paket: procps.tar.gz
Code:
make
make install
Libtool (Paket: libtool.tar.gz)
Code:
./configure --prefix=/usr
make
make install
Zlib (Paket: zlib.tar.gz)
Code:
./configure --prefix=/usr --shared --libdir=/lib
make
make install
rm /lib/libz.so
ln -sf ../../lib/libz.so.1.2.3 /usr/lib/libz.so
make clean
./configure --prefix=/usr
make
make install
chmod -v 644 /usr/lib/libz.a
Perl (Paket: perl.tar.gz)
Code:
echo "127.0.0.1 localhost $(hostname)" > /etc/hosts
patch -Np1 -i patches/perl-5.10.0-consolidated-1.patch
sed -i -e "s|BUILD_ZLIB\s*= True|BUILD_ZLIB = False|"           \
	-e "s|INCLUDE\s*= ./zlib-src|INCLUDE    = /usr/include|" \
	-e "s|LIB\s*= ./zlib-src|LIB        = /usr/lib|"         \
      ext/Compress/Raw/Zlib/config.in
sh Configure -des -Dprefix=/usr -Dvendorprefix=/usr -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dpager="/usr/bin/less -isR"
make
make test
make install
Readline (Paket: readline.tar.gz)
Code:
sed -i '/MV.*old/d' Makefile.in
sed -i '/{OLDSUFF}/c:' support/shlib-install
./configure --prefix=/usr --libdir=/lib
make SHLIB_LIBS=-lncurses
make install
mv -v /lib/lib{readline,history}.a /usr/lib
rm -v /lib/lib{readline,history}.so
ln -sfv ../../lib/libreadline.so.6 /usr/lib/libreadline.so
ln -sfv ../../lib/libhistory.so.6 /usr/lib/libhistory.so
mkdir /usr/share/doc/readline-6.0
install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-6.0
Autoconf (Paket: autoconf.tar.gz)
Code:
./configure --prefix=/usr
make
make install
Automake (Paket: automake.tar.gz)
Code:
./configure --prefix=/usr --docdir=/usr/share/doc/automake-1.10.2
make
make install
Bash (Paket: bash-3.2.48.tar.gz)
Code:
./configure --prefix=/usr --bindir=/bin --without-bash-malloc --with-installed-readline ac_cv_func_working_mktime=yes
make
sed -i 's/LANG/LC_ALL/' tests/intl.tests
sed -i 's@tests@& </dev/tty@' tests/run-test
chown -Rv nobody ./
su-tools nobody -s /bin/bash -c "make tests"
make install
exec /bin/bash --login +h
Bzip2 (Paket: bzip2.tar.gz)
Code:
patch -Np1 -i patches/bzip2-1.0.5-install_docs-1.patch
make -f Makefile-libbz2_so
make clean
make PREFIX=/usr install
cp -v bzip2-shared /bin/bzip2
cp -av libbz2.so* /lib
ln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so
rm -v /usr/bin/{bunzip2,bzcat,bzip2}
ln -sv bzip2 /bin/bunzip2
ln -sv bzip2 /bin/bzcat
Diffutils (Paket: diffutils.tar.gz)
Code:
patch -Np1 -i patches/diffutils-2.8.1-i18n-1.patch
touch man/diff.1
./configure --prefix=/usr
make
make install
File (Paket: file.tar.gz)
Code:
./configure --prefix=/usr
make
make install
Gawk
Code:
./configure --prefix=/usr --libexecdir=/usr/lib ac_cv_func_working_mktime=yes
make
make install
mkdir /usr/share/doc/gawk-3.1.6
cp doc/{awkforai.txt,*.{eps,pdf,jpg}} /usr/share/doc/gawk-3.1.6
Findutils
Code:
./configure --prefix=/usr --libexecdir=/usr/lib/findutils --localstatedir=/var/lib/locate
make
make check
make install
mv /usr/bin/find /bin
sed -i -e 's/find:=${BINDIR}/find:=\/bin/' /usr/bin/updatedb
Flex (Paket: flex.tar.gz)
Code:
./configure --prefix=/usr
make
make check
make install
ln -sv libfl.a /usr/lib/libl.a
cat > /usr/bin/lex << "EOF"
#!/bin/sh
# Begin /usr/bin/lex

exec /usr/bin/flex -l "$@"

# End /usr/bin/lex
EOF
chmod 755 /usr/bin/lex
mkdir /usr/share/doc/flex-2.5.35
cp doc/flex.pdf /usr/share/doc/flex-2.5.35
Grub (Paket: grub.tar.gz)
Code:
patch -Np1 -i patches/grub-0.97-disk_geometry-1.patch
patch -Np1 -i patches/grub-0.97-256byte_inode-1.patch
./configure --prefix=/usr
make
make install
mkdir /boot/grub
cp /usr/lib/grub/i386-pc/stage{1,2} /boot/grub
Gettext (Paket: gettext.tar.gz)
Code:
./configure --prefix=/usr --docdir=/usr/share/doc/gettext-0.17
make
make check
make install
__________________
Mein Blog - Mein Job - Diaspora

Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund.

Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+
bitmuncher ist offline   Mit Zitat antworten
Alt 13.05.09, 19:58   #2 (permalink)
 
Registriert seit: 26.03.08
moveax1 Leistung: Facit NTK
Likes: 0
Standard

bis auf gettext bin ich erstmal durch.

Da ist bei mir noch der Wurm drin aber ich schau erstmal ob ich es selber finde.

// EDIT: Nach einem erneuten kompilieren mit neu entpackten Sources hat alles anstandslos funktioniert
moveax1 ist offline   Mit Zitat antworten
   
HaBOT
 

Werbung ist gerade online    
Alt 18.05.09, 06:47   #3 (permalink)
Moderator
Themenstarter
 
Benutzerbild von bitmuncher
 
Registriert seit: 30.09.06
bitmuncher Leistung: Opteronbitmuncher Leistung: Opteronbitmuncher Leistung: Opteronbitmuncher Leistung: Opteronbitmuncher Leistung: Opteronbitmuncher Leistung: Opteron
Likes: 371
Standard Basis-Build - Teil 2

Grep (Paket: grep.tar.gz)
Code:
./configure --prefix=/usr --bindir=/bin --without-included-regex
make
make install
Groff (Paket: groff-1.20.tar.gz)
Code:
sed -i -e 's/2010/002D/' -e 's/2212/002D/' -e 's/2018/0060/' -e 's/2019/0027/' font/devutf8/R.proto
PAGE=a4 ./configure --prefix=/usr
make
ln -s eqn /usr/bin/geqn
ln -s tbl /usr/bin/gtbl
Eine Anmerkung zu groff: Da derzeit noch keine endgültigen Berichte darüber vorliegen inwiefern sich die Änderungen in groff 1.20 auf ein System auswirken, stehen unter http://www.habolinux.de/sources die Versionen 1.18 und 1.20 zur Verfügung. Für eigene Tests fehlt mir momentan die Zeit. Die in den Tarballs enthaltenen Ordner heissen nicht 'groff' sondern '1.20' bzw. '1.18'. Die Version 1.20 ist die von uns derzeit eingesetzte. Sollten sich Probleme aufzeigen, werden wir ggf. ein Downgrade auf 1.18 machen. Beim Build bereitet die 1.20 jedenfalls keine Probleme.

Gzip (Paket: gzip.tar.gz)
Code:
sed -i 's/futimens/gl_&/' gzip.c lib/utimens.{c,h}
./configure --prefix=/usr --bindir=/bin
make
make check
make install
mv /bin/{gzexe,uncompress,zcmp,zdiff,zegrep} /usr/bin
mv /bin/{zfgrep,zforce,zgrep,zless,zmore,znew} /usr/bin
Inetutils (Paket: inetutils.tar.gz)
Code:
./configure --prefix=/usr --libexecdir=/usr/sbin --sysconfdir=/etc --localstatedir=/var --disable-ifconfig --disable-logger --disable-syslogd --disable-whois --disable-servers
make
make install
mv /usr/bin/ping /bin
Iproute2 (Paket: iproute2.tar.gz)
Code:
make DESTDIR= SBINDIR=/sbin
make DESTDIR= SBINDIR=/sbin MANDIR=/usr/share/man DOCDIR=/usr/share/doc/iproute2-2.6.29 install
mv /sbin/arpd /usr/sbin
Kbd (Paket: kbd.tar.gz)
Code:
./configure --prefix=/usr --datadir=/lib/kbd
make
make install
mv /usr/bin/{kbd_mode,loadkeys,openvt,setfont} /bin
mkdir /usr/share/doc/kbd-1.15
cp -R doc/* /usr/share/doc/kbd-1.15
Less (Paket: less.tar.gz)
Code:
./configure --prefix=/usr --sysconfdir=/etc
make
make install
Make (Paket: make.tar.gz)
Code:
./configure --prefix=/usr
make
make check
make install
Man-DB (Paket: man-db.tar.gz)
Code:
sed -i -e '\%\t/usr/man%d' -e '\%\t/usr/local/man%d' src/man_db.conf.in
./configure --prefix=/usr --libexecdir=/usr/lib --sysconfdir=/etc --disable-setuid --enable-mb-groff --with-browser=/usr/bin/lynx --with-col=/usr/bin/col --with-vgrind=/usr/bin/vgrind --with-grap=/usr/bin/grap
make
make install
cat >> convert-mans << "EOF"
#!/bin/sh -e
FROM="$1"
TO="$2"
shift ; shift
while [ $# -gt 0 ]
do
  FILE="$1"
  shift
  iconv -f "$FROM" -t "$TO" "$FILE" >.tmp.iconv
  mv .tmp.iconv "$FILE"
done
EOF
install -m755 convert-mans  /usr/bin
Module-Init-Tools (Paket: module-init-tools.tar.gz)
Code:
./configure --prefix=/ --enable-zlib --mandir=/usr/share/man
make
make INSTALL=install install
Patch (Paket: patch.tar.gz)
Code:
./configure --prefix=/usr
make
make install
Psmisc (Paket: psmisc.tar.gz)
Code:
./configure --prefix=/usr --exec-prefix=""
make
make install
mv /bin/pstree* /usr/bin
ln -s killall /bin/pidof
Shadow:
Code:
sed -i 's/groups$(EXEEXT) //' src/Makefile.in
find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \;
sed -i -e 's/ ko//' -e 's/ zh_CN zh_TW//' man/Makefile.in
for i in de es fi fr id it pt_BR; do
    convert-mans UTF-8 ISO-8859-1 man/${i}/*.?
done
for i in cs hu pl; do
    convert-mans UTF-8 ISO-8859-2 man/${i}/*.?
done
convert-mans UTF-8 EUC-JP man/ja/*.?
convert-mans UTF-8 KOI8-R man/ru/*.?
convert-mans UTF-8 ISO-8859-9 man/tr/*.?
sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD MD5@' -e 's@/var/spool/mail@/var/mail@' etc/login.defs
./configure --sysconfdir=/etc
make
make install
pwconv
grpconv
sed -i 's/yes/no/' /etc/default/useradd
passwd root
Sysklogd (Paket: sysklogd.tar.gz)
Code:
make
make install
cat > /etc/syslog.conf << "EOF"
auth,authpriv.* -/var/log/auth.log
*.*;auth,authpriv.none -/var/log/sys.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
*.emerg *
# End /etc/syslog.conf
EOF
Sysvinit (Paket: sysvinit.tar.gz)
Code:
sed -i 's@Sending processes@& configured via /etc/inittab@g' src/init.c
sed -i -e 's/utmpdump wall/utmpdump/' -e 's/mountpoint.1 wall.1/mountpoint.1/' src/Makefile
make -C src
make -C src install
cat > /etc/inittab << "EOF"
# Begin /etc/inittab

id:3:initdefault:

si::sysinit:/etc/rc.d/init.d/rc sysinit

l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

su:S016:once:/sbin/sulogin

1:2345:respawn:/sbin/agetty tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600

# End /etc/inittab
EOF
Tar (Paket: tar.tar.gz)
Code:
./configure --prefix=/usr --bindir=/bin --libexecdir=/usr/sbin
make
make check
make install
Texinfo (Paket: texinfo.tar.gz)
Code:
./configure --prefix=/usr
make
make install
Udev (Paket: udev.tar.gz)
Code:
install -dv /lib/{firmware,udev/devices/{pts,shm}}
mknod -m0666 /lib/udev/devices/null c 1 3
mknod -m0600 /lib/udev/devices/kmsg c 1 11
ln -s /proc/self/fd /lib/udev/devices/fd
ln -s /proc/self/fd/0 /lib/udev/devices/stdin
ln -s /proc/self/fd/1 /lib/udev/devices/stdout
ln -s /proc/self/fd/2 /lib/udev/devices/stderr
ln -s /proc/kcore /lib/udev/devices/core
./configure --prefix=/usr --exec-prefix= --sysconfdir=/etc
make
make install
install -m644 -v rules/packages/64-*.rules /lib/udev/rules.d/
install -m644 -v rules/packages/40-pilot-links.rules /lib/udev/rules.d/
cd udev-config
make install 
make install-doc
make install-extra-doc
cd ..
install -m644 -v -D docs/writing_udev_rules/index.html /usr/share/doc/udev-142/index.html
Pkg-Config (Paket: pkg-config.tar.gz)
Code:
./configure --prefix=/usr
make
make install
Util-Linux-NG (Paket: util-linux-ng.tar.gz)
Code:
sed -e 's@etc/adjtime@var/lib/hwclock/adjtime@g' -i $(grep -rl '/etc/adjtime' .)
mkdir -p /var/lib/hwclock
./configure --enable-arch --enable-partx --enable-write
make
make install
Vim (Paket: vim.tar.gz)
Code:
patch -Np1 -i patches/vim-7.2-fixes-4.patch
echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h
./configure --prefix=/usr --enable-multibyte
make
make test
make install
ln -s vim /usr/bin/vi
for L in  /usr/share/man/{,*/}man1/vim.1; do
    ln -sv vim.1 $(dirname $L)/vi.1
done
ln -s ../vim/vim72/doc /usr/share/doc/vim-7.2
cat > /etc/vimrc << "EOF"
" Begin /etc/vimrc

set nocompatible
set backspace=2
syntax on
if (&term == "iterm") || (&term == "putty")
  set background=dark
endif

" End /etc/vimrc
EOF
Diverse Nacharbeiten:
Code:
logout
chroot /hl /tools/bin/env -i HOME=/root TERM=$TERM PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin /tools/bin/bash --login
/tools/bin/find /{,usr/}{bin,lib,sbin} -type f -exec /tools/bin/strip --strip-debug '{}' ';'
logout
chroot /hl /usr/bin/env -i HOME=/root TERM="$TERM" PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login
Ab diesem Zeitpunkt verwendet man nur noch 'chroot /hl /usr/bin/env -i HOME=/root TERM="$TERM" PS1='\u:\w\$ ' PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login' um die chroot-Umgebung zu betreten.

Code:
cat > /etc/sysconfig/clock << "EOF"
# Begin /etc/sysconfig/clock

UTC=1

# End /etc/sysconfig/clock
EOF
cat > /etc/sysconfig/console << "EOF"
# Begin /etc/sysconfig/console

KEYMAP="de-latin1"
KEYMAP_CORRECTIONS="euro2"
FONT="lat0-16 -m 8859-15"

# End /etc/sysconfig/console
EOF

cat > /etc/inputrc << "EOF"
# Begin /etc/inputrc
# Modified by Chris Lynn <roryo@roryo.dynup.net>

# Allow the command prompt to wrap to the next line
set horizontal-scroll-mode Off

# Enable 8bit input
set meta-flag On
set input-meta On

# Turns off 8th bit stripping
set convert-meta Off

# Keep the 8th bit for display
set output-meta On

# none, visible or audible
set bell-style none

# All of the following map the escape sequence of the value
# contained in the 1st argument to the readline specific functions
"\eOd": backward-word
"\eOc": forward-word

# for linux console
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[3~": delete-char
"\e[2~": quoted-insert

# for xterm
"\eOH": beginning-of-line
"\eOF": end-of-line

# for Konsole
"\e[H": beginning-of-line
"\e[F": end-of-line

# End /etc/inputrc
EOF

cat > /etc/profile << "EOF"
export LANG=de_DE@euro
EOF
Ab diesem Punkt sollte man der LFS-Anleitung (ab Kapitel 7.10 - "Configuring the localnet Script") bis zum Reboot des Systems folgen, da Netzwerkeinstellungen usw. ja recht individuelle Dinge sind. Die Kernel-Konfiguration kann man ggf. von einem anderen System übernehmen, wenn man möchte. Ich arbeite gerade an einer Config, die auf den meisten Geräten funktionieren dürfte. Sobald diese fertig ist, packe ich sie auf den Server. Später müssen die hier erstellten Konfigurationen und Skripte natürlich vom Installer bzw. einem Paket angelegt werden. Welche Default-Einstellungen wir für bestimmte Dinge nehmen sollten, müssen wir aber an anderer Stelle nochmal durchsprechen. Die hier von mir genutzten Einstellungen sind erstmal eine minimale Basis, die wir auf jeden Fall ausbauen sollten. Gerade die Konfiguration der Shell und die sysconfig-Einstellungen sind nicht unbedingt optimal.

Wenn das System dann bootfähig ist, geht es weiter mit der Integration von apt und der Umsetzung sämtlicher Pakete als Debs. Eine entsprechend e Anleitung dafür ist in Arbeit. Allerdings kann ich noch nicht genau sagen, wann ich diese fertig haben werde.
__________________
Mein Blog - Mein Job - Diaspora

Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund.

Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+
bitmuncher ist offline   Mit Zitat antworten
Antwort
   

Werbung ist gerade online    

[HaBo] » Operating Systems » Linux/UNIX » HaBo-Linux » Basis-Build - Teil 1+2
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Basis-Team bitmuncher HaBo-Linux 6 12.01.08 12:42
Pakete für das Basis-System bitmuncher HaBo-Linux 2 18.11.07 16:54
Windows 2000 auf NT Basis dN-yL Windows 2000 /95/98/ME 6 05.03.04 23:19
Hewlett-Packard entwickelt Molekularchip auf Nanotechnologie-Basis Tec News & Ankündigungen 0 10.09.02 01:06


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61