Emergere il development_rootfs

Chroottarsi dentro il nuovo ambiente

Chrottiamo dentro il development_rootfs:

	# chroot /opt/i586-gentoo-uclibc-linux /bin/bash --login

Creiamo il nuovo environment e carichiamo le relative variabili di ambiente necessarie per procedere:

	# env-update
	# source /etc/profile

Attenzione: d'ora in poi ogni comando che troverete nel corso di questo documento si riferirà all'ambiente chroottato. Pertanto, se accedete al vostro host di sviluppo via ssh, dovranno ogni volta essere ripetute sequenze di comando illustrate sopra: cioè assicurarsi che /proc/ ed /usr/portage/ siano bindati dentro il development_rootfs, effettuare il chroot, lanciare env-update e caricare /etc/profile. Per non dover ripetere questi comandi ogni volta che ci si logga sulla macchina di sviluppo risulta molto comodo utilizzare screen, maggiori informazioni alla url http://www.gnu.org/software/screen/.

Fare il tuning del file /etc/make.conf

Modifichiamo il file /etc/make.conf per adattarlo alle nostre esigenze (qui viene utilizzato nano, ma potete utilizzare qualsiasi altro editor ascii):

	# nano -w /etc/make.conf

Il file che abbiamo utilizzato su un sistema vortex86 dovrebbe contenere pressapoco questo:

	# These settings were set by the catalyst build script
	# that automatically built this stage
	# Please consult /etc/make.conf.example for a more detailed example
	USE="bitmap-fonts minimal uclibc mmx -opengl"
	CHOST="i586-gentoo-linux-uclibc"
	CFLAGS="-march=i586 -Os -pipe -fomit-frame-pointer -mmmx"
	CXXFLAGS="${CFLAGS}"
	FEATURES="buildpkg"
	UCLIBC_CPU="586MMX"

Molto importanti sono le USE flag e le variabili d'ambiente sottostanti:

Eseguire i seguenti comandi per assicurarsi che il link simbolico /etc/make.profile punti al profile usr/portage/profiles/uclibc/x86 :

	# rm /etc/make.profile 
	# ln -s /usr/portage/profiles/uclibc/x86 /etc/make.profile

Avviare il bootstrap del portage

Avviare lo script di bootstrap: le opzioni -p -v sono preventive e consentono di visionare la lista dei pacchetti che portage emergerà:

	# cd /usr/portage/scripts
	# ./bootstrap.sh -p -v
	# ./bootstrap.sh

Se durante l'esecuzione dello script di bootstrap vi imbattete in qualceh errore del tipo "Failure compiling uclibc (gcc-config error: Could not run/locate "gcc")?" , utilizzate questo workaround:

	# gcc-config 1
	# source /etc/profile
	# ./bootstrap.sh

Emergere system nel nostro development_rootfs

Emergere l'ebuild system per il nostro development_rootfs:

	# emerge -e system

Nel momento in cui viene scritto questo documento pare ci siano alcuni problemi relativi a questa fase, il primo problema riguarda python: se ottenete un messaggio di errore del tipo !!! ERROR: dev-python/python-fchksum-1.7.1 failed., potete utilizzare il seguente workaround:

	# emerge python
	# emerge -e system

Un altro problema riscontrato riguarda l'ebuild groff, pare che non si riesca a compilarlo durante l'emerge -e system, questo problema è riportato sul bugzilla ufficiale alla url http://bugs.gentoo.org/show_bug.cgi?id=98187. Visto che, al momento in cui scriviamo, il bug non è stato ancora risolto, abbiamo deciso di fare in modo che l'ebuild non venga considerato da portage, questo si ottiene aggiungendo la riga sottostante al file /etc/portage/profile/package.provided (sostituite groff-1.19-r2 con la versione presente nel vostro albero del portage, se il file non esiste, createlo):

	sys-apps/groff-1.19.1-r2 

Se il comando emerge -e system è andato a buon fine, vuol dire che il vostro development_rootfs è pronto, passiamo per tanto alla creazione dell'embedded_rootfs.