Thanks for taking the time to make the Gentoo formatted HowTo. I found it considerably easier to use than the ASCII format.
I've been trying this out over the week-end but from a Linux-Vserver instance based on a uclibc stage3. However when I get to emerging baselayout-lite, I get the following: QA Notice: USE Flag 'elibc_uclibc' not in IUSE for sys-apps/baselayout-lite-1.0_pre1 * Making device nodes (this could take a minute or so...) `mem-': Operation not permitted `kmem-': Operation not permitted `null-': Operation not permitted `port-': Operation not permitted `zero-': Operation not permitted `full-': Operation not permitted `random-': Operation not permitted `urandom-': Operation not permitted `tty-': Operation not permitted `ram0-': Operation not permitted `ram1-': Operation not permitted .... and several more similar lines. I'm fairly certain it's caused by the vserver environment. But is there some way around this? Regards, Philippe On Monday, 10 October 2005 20:43, Heath Holcomb wrote: > Version 0.09 > Please add, delete, modify. Thanks! > > - fixed the password problem > - wrote about the problem with kernels 2.6.11 (and latter) > - fixed typos > - added more options for UCLIBC_CPU > - added two people to contributors list > > Also I need no workarounds this time through (minus the kernel > problem). > > Still looking for feedback on the Gentooized version of the this > how-to on readability and usefullness. > http://www.bulah.com/embedded-guide.html > > Update to my website will come shortly. > http://www.bulah.com/embeddedgentoo.html > > Enjoy, > > ----------------------------------------------------------------- >--------------- # 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. # > # version 0.09 > # 2005.10.10 > # > # 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) > # Pierre Cassimans (contributor) > # Marius Schafer (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/embedded/st >ages/\ 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 > > # 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/2005.1 make.profile > > # Modify make.conf file to your liking/needs. > # This is for my target, Geode x86 processor. > # Other values for UCLIBC_CPU : > # 386, 486, ELAN, 586, 586MMX, 686, PENTIUMII, > PENTIUMIII,PENTIUM4, K6, K7 # CRUSOE, WINCHIPC6, WINCHIP2, > CYRIXIII, NEHEMIAH > nano -w /etc/make.conf > /* > 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" > */ > > # 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 > > #----- 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 > > # Required 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 > > # 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 grub, 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 /bin/sh > passwd > exit > rm /embedded_rootfs/etc/passwd- > > # 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. > # ** Warning ** > # There appears to be a bug in kernel version >2.6.12 that > prevents us # from "make menuconfig" in the chroot environment. I > don't know when it # will be fixed (I'll assume it has to do with > uclibc, right ??). # A simple work around would be to compile a > kernel outside of the # development_rootfs environment and copy > the image over to the embedded_rootfs > # boot directory. I'm leaving the how-to as is for now, because I > feel that # this "bug" be eventually be fixed upstream. > 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 grub.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
