LFS 6.8 Opdracht, bevindingen, tips en hints

Opdracht LFS

Bouw je eigen Linux systeem uit broncode......

Vooraf

De Linux lessen van de eerste periode in het 4e jaar gaan over Linux From Scratch.

Tijdens de lessen, en thuis als je tijd te kort komt, bouw je aan een compleet eigen Linux systeem met zelf gebakken tools. Dit alles zodat je beter gaat begrijpen hoe Linux werkt en hoe je Linux compleet naar je hand kunt zetten. Op deze pagina vinden jullie aanwijzingen die voldoende zouden moeten zijn om zelfstandig het LFS project te voltooien. Tijdens de lessen zal ik aandacht besteden aan verschillende onderwerpen uit het boek. Als je echter liever zelfstandig werkt aan de opdracht dan mag dat natuurlijk ook.

Jullie werken individueel aan deze opdracht. Het LFS boek geeft bij verschillende stappen aan dat eigen inbreng mogelijk is. Maak hiervan gebruik zodat je makkelijk kunt "bewijzen" dat het eindproduct, een werkende Linux machine, jou eigen werk is. Beoordeling van deze periode gaat o.b.v. je voortgang m.b.t. het LFS project en een toets o.b.v. de beschrijvingen in het LFS boek.

Een aantal opmerkingen vooraf:

- Het hele project vanaf het installeren van een recente Ubuntu desktop tot het booten van je eigen Linux omgeving duurt meer dan 20 uur. Je zult dus zo nu en dan je machine moeten laten doorwerken terwijl jij andere dingen doet om niet in tijdnood te komen.
- Werk als het even kan in 1 sessie door en gebruik de "save state" optie van Virtualbox. Maak regelmatig een snapshot zodat je terug kunt als je achteraf iets fout blijkt te hebben gedaan.

Bevindingen, tips en hints

Zoals gebruikelijk in Ubuntu heeft root geen wachtwoord.

Met
sudo su
log je in als root.


Host system requirements:
Om de foutmeldingen van het check script op te lossen kun je deze 2 commando's gebruiken:

sudo ln -s /lib/i386-linux-gnu/libc.so.6 /lib
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install texinfo


Download alle pakketten via http: met deze link: http://ftp.lfs-matrix.net/pub/lfs/lfs-packages/lfs-packages-6.8.tar

Stappen n.a.v. hoofdstuk 1 t/m 4

- Maak partitie met fdisk, cfdisk of gparted ( new primary wordt /dev/sda3 )
- Activeer eventueel de partitie met:
partprobe

- Swap partitie /dev/sda1 bestaat al en is al aangekoppeld ( zie: /proc/swaps )
cat /proc/swaps

- Maak filesystem op /dev/sda3
mke2fs -jv /dev/sda3

- Gebruik als wachtwoord voor de "lfs" gebruiker: "Welkom#1"

Hoofdstuk 5 en 6

Vragen:

1) LFS gebruik regelatig het commando sed. Bijvoorbeeld op pagina 35 staat: 
sed 's/libgcc/&_eh/'
Wat doet dit commando?

2) Sommige configure command's beginnen met: 
CC=......
Waarom? 

Kijk bv. eens naar het volgende voorbeeld:
We maken een script dat "ik zit in ....." zegt waar ... de inhoud van de variabele $KLAS is
cat > script <<EOF
echo ik zit in \$KLAS
EOF
Vervolgens roepen we het script aan:
KLAS=IB4A bash script

tips:

Mocht je om de een of andere reden tijdens hoofdstuk 5 opnieuw moeten starten. Dan kun je na de herstart je omgeving herstellen door


su lfs
echo $LFS
# even controleren of hier /mnt/lfs terug komt
mount /dev/sda3 $LFS
df
# even controleren dat sda3 echt gekoppeld is aan /mnt/lfs
cd $LFS/sources

Paragraaf 5.4:

- ga met cd naar de sources directory:
cd $LFS/sources

voor ieder pakket dat je gaat compileren geld:
  • pak de source uit:
  : tar.gz bestanden met:
tar -zxvf <bestand>

  : tar.bz2 bestanden met:
tar -jxvf <bestand>

  • ga in de source directory:
cd <foo.bar>

  • volg de instrukties van de betreffende paragraaf uit het book.
  • ga terug naar de sources directory
cd $LFS/sources

  • verwijder de bronbestanden en evt. de build directory met: rm -r foo.bar/

Tips:
  • Lees uitgebreide hints: http://www.linuxfromscratch.org/hints/read.html
  • Wil je 2 commando's na elkaar laten uitvoeren geef ze dan gescheiden door een && achterelkaar op. bv:
    make && make install
  • Wil je een waarschuwing krijgen als een commando afgerond is? voeg dan: && printf "\a" toe aan het commando bv:
    make && printf "\a"
  • of maak een script  "beep", om in de stijl te blijven:
    cat > /usr/bin/beep << "EOF"
    printf "\a"
    EOF
    chmod +x /urs/bin/beep
en voeg " && beep" toe aan de commando's


Paragraaf 5.9:

Verwijder de oude build directory:
rm -r ../binutils-build/

2 x "y" antwoorden

Vuistregel afhankelijkheid:

Tot paragraaf 5.15 zul je de onderdelen op de juiste volgorde moeten compileren. Vanaf paragraaf 5.15 zie ik geen bezwaar meer tegen het simultaan / parallel compileren en installeren van de overige pakketten. de daaropvolgende pakketten zijn nl. alfabetisch gerangschikt.

Wil je precies weten hoe het zit met afhankelijkheden tussen de verschillende pakketten, lees dan Appendix C: Dependencies

Paragraaf 5.10:

- De patch voer je uit in de sourcedirectory van gcc-4.x
- verwijder ook hier de oude build directory:

Paragraaf 6.7.2:

De sources directory is nu in /sources we zijn immers van root veranderd naar /mnt/lfs

Paragraaf 6.9:

uitkomst van de test:

"make[2]: *** [/sources/glibc-build/malloc/
tst-trim1.out] Error 1
make[1]: *** [malloc/tests] Error 2
make[2]: [/sources/glibc-build/posix/annexc.out] Error 1 (ignored)
make: *** [check] Error 2"

Wil je ook Nederlands ondersteunen? kijk wat er allemaal beschikbaar is met het commando:
cat ../glibc-2.11.1/localedata/SUPPORTED | grep nl

Voeg de nederlandse locales toe:
localedef -i nl_NL -f UTF-8 nl_NL.UTF-8
localedef -i nl_NL@euro -f ISO-8859-15 nl_NL@euro.ISO-8859-15

om van de timezone Europe/Amsterdam gebruik te maken:
cp -v --remove-destination /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime

Paragraaf 6.16:

Neem rustig de tijd voor deze 44 SBU's. 's avonds starten 's ochtends klaar.

Paragraaf 6.20:

Hier kreeg ik een serieus probleem met de subdirectory po. Iets gaf een error. Ik heb de hele directory leeg gemaakt en de inhoud van de directory tests er overheen gekopieerd. Toen werkte alles wel ook de programma's die in het pakket vallen.

Achteraf, na hoofdstuk 8 heb ik de sources opnieuw uitgepakt, gecompileerd en succesvol geïnstalleerd zonder probleem.

Laat het mij weten als je hier tegen het zelfde probleem aan loopt.

Paragraaf 6.22:

Skip de checks

Vuistregel afhankelijkheid:

Tot paragraaf 6.34 zul je de onderdelen op de juiste volgorde moeten compileren. Het boek stelt in de introductie van hoofdstuk 6 dat dit voor alle paragrafen geldt. Mijn ervaring is dat je vanaf paragraaf 6.34 de opvolgende paragrafen simultaan / parallel kunt compileren en installeren. Ik werkte hierbij met 3 terminals. Wel even chroot uitvoeren natuurlijk:

export LFS=/mnt/lfs
chroot $LFS /tools/bin/env -i \
HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin \
/tools/bin/bash --login

Ook deze pakketten zijn verder namelijk alfabetisch gerangschikt.

Wil je precies weten hoe het zit met afhankelijkheden tussen de verschillende pakketten, lees dan Appendix C: Dependencies

Paragraaf 6.53:

Gebruik Welkom#1
 

Paragraaf 6.62:

ga met
exit
uit de chroot omgeving en log opnieuw in.


Aangepaste bestanden vanaf hoofdstuk 7

/etc/sysconfig/console

cat > /etc/sysconfig/console << "EOF"
# Begin /etc/sysconfig/console
KEYMAP="us"
KEYMAP_CORRECTIONS="euro2"
FONT="lat0-16 -m 8859-15"
# End /etc/sysconfig/console
EOF

/etc/hosts

cat > /etc/hosts << "EOF"
# Begin /etc/hosts (network card version)
127.0.0.1 localhost
# End /etc/hosts (network card version)
EOF

/etc/sysconfig/network-devices

cd /etc/sysconfig/network-devices
mkdir -v ifconfig.eth0
cat > ifconfig.eth0/ipv4 << "EOF"
ONBOOT=yes
SERVICE=ipv4-static
IP=10.0.2.15
GATEWAY=10.0.2.2
PREFIX=24
BROADCAST=10.0.2.255
EOF

/etc/resolv.conf

cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf
domain mylfs.lfs
nameserver 8.8.8.8
# End /etc/resolv.conf
EOF

/etc/fstab

cat > /etc/fstab << "EOF"
# Begin /etc/fstab
# file system  mount-point type   options        dump fsck
#                                                     order
/dev/sda3      /           ext3   defaults       1    1
/dev/sda1      swap        swap   pri=1          0    0
proc           /proc       proc   defaults       0    0
sysfs          /sys        sysfs  defaults       0    0
devpts         /dev/pts    devpts gid=4,mode=620 0    0
tmpfs          /dev/shm    tmpfs  defaults       0    0
# End /etc/fstab
EOF

Hoofdstuk 8

Paragraaf 8.2:

het hdparm commando is niet beschikbaar.

Comments