"Pierre Cassimans" <[EMAIL PROTECTED]> wrote on 18.08.2005 09:02:13:

> 
> 
> 
> >From: "Marcel Romijn" <[EMAIL PROTECTED]>
> >Reply-To: [email protected]
> >To: <[email protected]>
> >Subject: RE: [gentoo-embedded] x86 SBC Gentoo Embedded HotTo version 
0.08
> >Date: Thu, 18 Aug 2005 02:46:18 -0400
> >
> >
> >
> > > -----Original Message-----
> > > From: Pierre Cassimans [mailto:[EMAIL PROTECTED]
> > > Sent: Thursday, 18 August, 2005 8:36
> > > To: [email protected]
> > > Subject: RE: [gentoo-embedded] x86 SBC Gentoo Embedded HotTo
> > > version 0.08
> > >
> > >
> > >
> > >
> > > >From: Heath Holcomb <[EMAIL PROTECTED]>
> > > >Reply-To: [email protected]
> > > >To: "'[email protected]'"
> > > <[email protected]>
> > > >Subject: [gentoo-embedded] x86 SBC Gentoo Embedded HotTo version 
0.08
> > > >Date: Wed, 17 Aug 2005 19:19:38 -0500
> > > >
> > > >Version 0.08
> > > >Please add, delete, modify. Thanks!
> > > >
> > > >Small fixes, but one very important.  All work arounds are back.
> > > >
> > > >I've update my website with this version also.
> > > >http://www.bulah.com/embeddedgentoo.html
> > > >
> > > >
> > > >
> > > >#------------------------------------------------------------
> > > --------------------
> > > ># Embedded Gentoo How-To for x86
> > > >#
> > > ># A how-to guide to setup a Gentoo embedded environment, you
> > > must be root.
> > > ># These commands are to be run on your development system,
> > > ># any x86 Gentoo Linux computer will do.  The system should be 
fast,
> > > ># to speed development.  The target can be any x86 based SBC.  I'm
> > > ># using a Geode based SBC.  Latter I'll use a Via based SBC.
> > > >#
> > > ># versio 0.08
> > > ># 2005.8.13
> > > >#
> > > ># Heath Holcomb (heath at bulah.com)
> > > ># Ned Ludd (original commands posted)
> > > ># Lloyd Sargent (contributor)
> > > ># Yuri Vasilevski (contributor)
> > > ># Mike George (contributor)
> > > ># Kammi Cazze (contributor)
> > > ># Marius Schaefer (contributor)
> > > >#
> > > ># Definitions and Terms
> > > ># system_rootfs = your regular rootfs, development computer
> > > ># development_rootfs = what you use to build the embedded_rootfs
> > > ># embedded_rootfs = rootfs you deploy to the target system
> > > ># SBC = single board computer (here it's an x86 based)
> > > >#
> > > ># References
> > > ># http://www.gentoo.org/doc/en/handbook/index.xml
> > > ># http://www.epiawiki.org
> > > ># http://epia.kalf.org
> > > ># Gentoo embedded mailing list ([email protected])
> > > >#
> > > >#
> > > ># Overview of process (steps)
> > > ># 1 - Prepare the development_rootfs from your system_rootfs
> > > ># 2 - Build the development_rootfs
> > > ># 3 - Build the embedded_rootfs
> > > ># 4 - Build and install non-system programs to the embedded_rootfs
> > > ># 5 - Build and install a kernel to the embedded_rootfs
> > > ># 6 - Deploy embedded_rootfs to target
> > > >#
> > > >#------------------------------------------------------------
> > > --------------------
> > > >
> > > >#----- Step 1 - Prepare the development_rootfs from your
> > > system_rootfs
> > > >-------
> > > >
> > > ># You must be root.
> > > >su -
> > > >cd /opt
> > > >
> > > ># Create the development_rootfs directory.
> > > ># I use i586 because of target is a Geode processor.
> > > >mkdir -p /opt/i586-gentoo-uclibc-linux/usr/portage
> > > >
> > > ># Download the latest stage 1 tarball.
> > > >wget \
> > > >http://mirror.usu.edu/mirrors/gentoo/experimental/x86/embedde
> > > d/stages/\
> > > >stage1-x86-uclibc-2005.0.tar.bz2
> > > >
> > > ># Untar the stage to the development_rootfs.
> > > >tar -xvjpf stage1-x86-uclibc-2005.0.tar.bz2 -C
> > > >/opt/i586-gentoo-uclibc-linux/
> > > >
> > > ># Mount the proc and portage directories to your 
development_rootfs.
> > > ># Makes your system_rootfs's proc and portage directory
> > > available from
> > > >inside
> > > ># of your development_rootfs (after chrooting).
> > > >mount --bind /proc /opt/i586-gentoo-uclibc-linux/proc/
> > > >mount --bind /usr/portage /opt/i586-gentoo-uclibc-linux/usr/portage
> > > >
> > > ># Copy over DNS information to the development_rootfs.
> > > >cp /etc/resolv.conf /opt/i586-gentoo-uclibc-linux/etc/resolv.conf
> > > >
> > > ># Chroot into the development_rootfs.
> > > >chroot /opt/i586-gentoo-uclibc-linux /bin/bash --login
> > > >
> > > >
> > > >#----- Step 2 - Build the development_rootfs
> > > >---------------------------------
> > > >
> > > ># Create new environment and load variables into memory.
> > > >env-update
> > > >source /etc/profile
> > > >
> > > ># Modify make.conf file to your liking/needs.
> > > >nano -w /etc/make.conf
> > > ># This is for my target, Geode x86 processor.
> > > >/*
> > > >USE="bitmap-fonts minimal truetype-fonts mmx"
> > > >CHOST="i586-gentoo-linux-uclibc"
> > > >CFLAGS="-march=i586 -Os -pipe -fomit-frame-pointer -mmmx"
> > > >CXXFLAGS="${CFLAGS}"
> > > >FEATURES="buildpkg"
> > > >
> > > >VIDEO_CARDS="chips"
> > > >UCLIBC_CPU="586MMX"
> > > >*/
> > >
> > > As it is a x86 howto, here are the possible values for UCLIBC_CPU:
> > >
> > > 386, 486, ELAN, 586, 586MMX, 686, PENTIUMII,
> > > PENTIUMIII,PENTIUM4, K6, K7,
> > > CRUSOE, WINCHIPC6, WINCHIP2, CYRIXIII, NEHEMIAH.
> > >
> > > For people with VIA boards, take CYRIXIII or NEHEMIAH.
> >
> >Is this setting used for both the development and the embedded machine?
> >
> >I'm developing on a Pentium4, but I'm deploying to a VIA board
> >(CytrixIII).
> >
> 
> I guess it will be effective for your develop environment AND embedded 
> machine.
> 
> As first we emerge uclibc with the FEATURES="buildpkg" and the we deploy 

> those binaries to the embedded_rootfs with ROOT=/embedded_rootfs emerge 
-K 
> uclibc
> 
> Can someone confirm this?

As the development machine will be usually more powerfull than the target 
machine, I think, it should be set to the target hardware.


For the HowTO IMHO it should be set to something common like 386 or 486 as 
default. Something every CPU can handle.

Marius

> 
> > >
> > > >
> > > ># Set profile to use 2.6 kernel.
> > > ># The current stage uses 2.4 by default, and for most cases
> > > you are going
> > > ># to want a 2.6.x kernel.
> > > >cd /etc/
> > > >unlink make.profile
> > > >ln -s ../usr/portage/profiles/uclibc/x86 make.profile
> > > >
> > > ># Start the bootstrap script.
> > > >cd /usr/portage/scripts
> > > >./bootstrap.sh -p -v
> > > >./bootstrap.sh
> > > >
> > > ># Workaround - bootstraping
> > > ># Failure compiling uclibc (gcc-config error: Could not
> > > run/locate "gcc")?
> > > ># If you get a failure while bootstrap is compileing uclibc
> > > here are the
> > > >steps
> > > ># to work around the problem.
> > > >gcc-config 1
> > > >source /etc/profile
> > > >./bootstrap.sh
> > > >
> > > ># Emerge the system ebuild for the development_rootfs.
> > > >emerge -e system
> > > >
> > > ># Workaround - emerge system
> > > ># During emerge -e system, python-fchksum failes complaing about
> > > ># gcc-config error: Could not run/locate
> > > "i386-gentoo-linux-uclibc-gcc"
> > > ># The following commands work around this problem.
> > > >emerge python
> > > >emerge -e system
> > >
> > > I still had to do
> > >
> > > USE="-sandbox" emerge -e system
> > >
> > > to work around the bug with groff.
> > >
> > > >
> > > >#----- Step 3 - Build the embedded_rootfs
> > > >------------------------------------
> > > >
> > > ># Create the embedded_rootfs directory.
> > > >mkdir /embedded_rootfs
> > > >
> > > ># Emerge baselayout-lite into embedded_rootfs.
> > > ># This gives your system a basic file structure.
> > > ># 1.0_pre1 is the only one that is stable, right?
> > > >cd /usr/portage/sys-apps/baselayout-lite/
> > > >ROOT=/embedded_rootfs emerge baselayout-lite-1.0_pre1.ebuild
> > > >
> > > ># Workaround - baselayout-lite
> > > ># Baselayout-lite is still beta, so a few fixes are needed.
> > > ># There needs to be a directory "log" in /var.
> > > ># Inittab calls for /usr/bin/tail, but it needs to /usr/bin.
> > > >mkdir /embedded_rootfs/var/log
> > > >nano -w /embedded_rootfs/etc/inittab
> > > >/*
> > > >#tty3::respawn:/usr/bin/tail -f /var/log/messages
> > > >tty3::respawn:/bin/tail -f /var/log/messages
> > > >*/
> > > >
> > > ># Emerge uclibc into the embedded_rootfs.
> > > ># Use the -K option because we don't get the extra files
> > > created by the
> > > ># build/emerge process into our embedded rootfs which needs to be 
as
> > > ># small as possible.
> > > >ROOT=/embedded_rootfs emerge -K uclibc
> > > >
> > > ># Emerge busybox into the embedded_rootfs.
> > > ># First you must emerge it into your development_rootfs.
> > > ># This does not create the symlinks in our development
> > > embedded rootfs.
> > > >emerge busybox
> > > >ROOT=/embedded_rootfs emerge -K busybox
> > >
> > > Busybox is emerged with emerge -e system. Should we emerge
> > > busybox again?
> > >
> > > >
> > > ># Create the symlinks for busybox in the embedded_rootfs.
> > > >mkdir /embedded_rootfs/proc
> > > >mount -o bind /proc/ /embedded_rootfs/proc/
> > > >chroot /embedded_rootfs /bin/busybox --install -s
> > > >umount /embedded_rootfs/proc
> > > >
> > > ># Set time zone in your embedded_rootfs.
> > > ># See http://leaf.sourceforge.net/doc/guide/buci-tz.html for 
details.
> > > ># For central standard time in the US, use "CST6CDT".
> > > >nano -w /embedded_rootfs/etc/TZ
> > > >/*
> > > >CST6CDT
> > > >*/
> > > >
> > > ># Install a boot loader (usually grub or lilo).
> > > ># Once you copy/deploy your embedded_rootfs to your target
> > > SBC you will
> > > ># have to run grub on the command line to write to the
> > > master boot record
> > > ># (MBR).
> > > ># For some reason not all of /boot/grub is copied over to the
> > > ># embedded_rootfs, so a extra manual copy step is needed.
> > > ># The --nodeps gets rip of the run time need of ncurses.
> > > >emerge --nodeps grub
> > > >ROOT=/embedded_rootfs emerge -K --nodeps grub
> > > >cp -R /boot/grub /embedded_rootfs/boot/
> > > >
> > > ># Modify your boot configure file.
> > > ># The example below is for a gurb, for a boot partition on
> > > /dev/hda1 and
> > > >only
> > > ># one partition on the target SBC system.
> > > >nano -w /embedded_rootfs/boot/grub/grub.conf
> > > >/*
> > > >default 0
> > > >timeout 10
> > > >splashimage=(hd0,0)/boot/grub/splash.xpm.gz
> > > >
> > > >title=Linux 2.6.x
> > > >root (hd0,0)
> > > >kernel /vmlinuz-2.6.x root=/dev/hda1 vga=792
> > > >*/
> > > >
> > > ># Set root password for the embedded_rootfs
> > > >chroot /embedded_rootfs
> > > >passwd
> > > >rm /embedded_rootfs/etc/passwd-
> > > >exit
> > >
> > > Can you please check this again? See my previous post.
> > >
> > > >
> > > ># Modify fstab.
> > > ># Below is mine, yours may vary.
> > > >nano -w /embedded_rootfs/etc/fstab
> > > >/*
> > > >/dev/hda1      /      reiserfs
> > > defaults   0 0
> > > >none         /proc      proc
> > > defaults     0 0
> > > >none         /sys      sysfs
> > > defaults   0 0
> > > >none         /dev/shm   tmpfs   defaults   0 0
> > > >*/
> > > >
> > > ># Clean up the embedded_rootfs.
> > > ># Don't know why these files are there in the first place,
> > > so if anyone
> > > ># can tell me why.....
> > > >rm -R /embedded_rootfs/var/db/pkg/*
> > > >rm -R /embedded_rootfs/var/lib/portage/
> > > >
> > > >#---- Step 4 - Build and install non-system programs to the
> > > embedded_rootfs
> > > >--
> > > >
> > > ># Emerge other software you need for you embedded target.
> > > ># This is very wildly depending on your needs.
> > > ># Also your proprietary application will be done here.
> > > >emerge foo*
> > > >ROOT=/embedded_rootfs emerge -K foo*
> > > >
> > > >
> > > >#---- Step 5 - Build and install a kernel to the embedded_rootfs
> > > >-------------
> > > >
> > > ># Install a kernel into embedded_rootfs.
> > > ># First we will emerge it into our development_rootfs, then
> > > configure and
> > > ># build it.
> > > >emerge vanilla-sources
> > > >cd /usr/src/
> > > >cd linux
> > > >make menuconfig
> > > ># Configure your kernel for your TARGET SBC here.  I HIGHLY
> > > suggest you
> > > ># configure the kernel to compile everything into the
> > > kernel, and nothing
> > > ># as a module.
> > > >make
> > > >ROOT=/embedded_rootfs make modules_install
> > > >cp /usr/src/linux/arch/i386/boot/bzImage
> > > >/embedded_rootfs/boot/vmlinuz-2.6.x
> > > >
> > > ># A few notes on compiling your kernel.
> > > ># If deploying to Compact Flash/DiskOnChip/SD use ext2, as
> > > the journaling
> > > ># filing systems "write" to much for a flash device.
> > > ># If deploying to a hard drive use a journaling filing
> > > system, such as
> > > ># ext3 or reiserfs.
> > > >
> > > >
> > > >#---- Step 6 - Deploy embedded_rootfs to target
> > > >------------------------------
> > > >
> > > ># Prepare a Gentoo (or any Linux distro) system on the
> > > target SBC using a
> > > ># harddrive.  This is known as the target development rootfs.
> > > ># We will create a partition (/embedded_rootfs) that will
> > > server as our
> > > ># "test" partition to deploy our embedded_rootfs that we
> > > generate on our
> > > ># development_system.
> > > >#
> > > ># I use the following partitions to speed development (yours
> > > may vary):
> > > ># /dev/hda1 - /embedded_rootfs - 1 GB
> > > ># /dev/hda2 - /boot - 100 MB
> > > ># /dev/hda3 - swap - (size varies, 512 MB is a good number)
> > > ># /dev/hda4 - / - (what is left, at least 1.5 GB per 2005.0
> > > install guide
> > > >specs)
> > > >#
> > > ># Copy over your embedded_rootfs from you development system
> > > to your target
> > > ># system and the directory /embedded_rootfs.  This needs to
> > > be done via NFS
> > > >as
> > > ># need to preserve the permissions.
> > > >#
> > > >#The following commands are done from the
> > > ># target development rootfs.
> > > >mount -t reiserfs /dev/hda1 /mnt/embedded_rootfs
> > > >mount -t nfs\
> > > >192.168.0.10:/opt/i586-gentoo-uclibc-linux/embedded_rootfs\
> > > >/mnt/nfs_embedded_rootfs
> > > >cp -adpR /mnt/nfs_embedded_rootfs/* /mnt/embedded_rootfs
> > > >
> > > >
> > > ># Modify your target system's gurb.conf (or lilo.conf) for
> > > allow you to
> > > >boot
> > > ># to the embedded_rootfs partition.
> > > >#
> > > ># Reboot, and if all goes well you'll be greeted with a login 
prompt.
> > > >#
> > > ># Fin.
> > > >
> > > >
> > > >--
> > > >heath holcomb
> > > >liquidcable at bulah.com
> > > >www.bulah.com
> > > >
> > > >--
> > > >[email protected] mailing list
> > > >
> > >
> > > Pierre Cassimans
> > >
> > >
> > > --
> > > [email protected] mailing list
> > >
> > >
> > >
> >
> >Marcel Romijn
> >
> >--
> >[email protected] mailing list
> >
> 
> 
> -- 
> [email protected] mailing list
> 

-- 
[email protected] mailing list

Reply via email to