Loading Makefile 0 → 100644 +206 −0 Original line number Diff line number Diff line # Makefile for user-mode-linux with a simple busybox/uClibc root filesystem # # Copyright (C) 2001 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 2001 by Alcove, Julien Gaulmin <julien.gaulmin@fr.alcove.com> # Copyright (C) 2001 by Jon Nelson <jnelson@boa.org> # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU Library General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) any # later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more # details. # # You should have received a copy of the GNU Library General Public License # along with this program; if not, write to the Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Known problems : # - genext2fs: couldn't allocate a block (no free space) # As genext2fs allocate only one group of blocks, the FS size # is limited to 8Mb. # Update this stuff by hand : ARCH = i386 # If you are running a cross compiler, you may want to set this # to something more interesting, like "arm-linux-". #CROSS = $(ARCH)-linux- #IMAGE_SIZE=8192 # Max size #IMAGE_INODES=500 IMAGE_SIZE=550 # library is 550K IMAGE_INODES=300 LINUX_SOURCE=linux-2.4.14.tar.bz2 USERMODELINUX_PATCH=uml-patch-2.4.14-6.bz2 UCLIBC_SOURCE=uClibc-snapshot.tar.gz LINUX_URI=http://www.kernel.org/pub/linux/kernel/v2.4 USERMODELINUX_URI=http://prdownloads.sourceforge.net/user-mode-linux UCLIBC_URI=http://uclibc.org/downloads/ # Don't alter below this line unless you (think) you know # what you are doing! Danger, Danger! .SUFFIXES: # Delete the default suffixes .SUFFIXES: .c .o .h # Define our suffix list # Directories BASE_DIR=${shell pwd} TARGET_DIR=$(BASE_DIR)/root STAGING_DIR=$(BASE_DIR)/staging_dir SOURCE_DIR=$(BASE_DIR)/sources LINUX_DIR=$(BASE_DIR)/linux UCLIBC_DIR=$(BASE_DIR)/uClibc GENEXT2FS_DIR=$(BASE_DIR)/genext2fs TARGET_CC=$(STAGING_DIR)/bin/gcc TARGET_CC1=$(STAGING_DIR)/usr/bin/$(ARCH)-uclibc-gcc TARGET_CROSS=$(STAGING_DIR)/usr/bin/$(ARCH)-uclibc- TARGET_PATH=$(STAGING_DIR)/usr/bin:$(STAGING_DIR)/bin:/bin:/sbin:/usr/bin:/usr/sbin LINUX=$(BASE_DIR)/UMlinux IMAGE=$(BASE_DIR)/root_fs KCONFIG=$(SOURCE_DIR)/linux-uml.config all: world #So what shall we build today? TARGETS= -include busybox.mk -include boa.mk world: $(TARGETS) $(GENEXT2FS_DIR)/genext2fs $(TARGET_DIR) $(GENEXT2FS_DIR)/genext2fs \ -b `echo $(IMAGE_SIZE) | bc` \ -i `echo $(IMAGE_INODES) | bc` \ -d $(TARGET_DIR) \ -D $(SOURCE_DIR)/device_table.txt root_fs $(STAGING_DIR): rm -rf $(STAGING_DIR) mkdir $(STAGING_DIR) $(TARGET_DIR): rm -rf $(TARGET_DIR) tar -xf $(SOURCE_DIR)/skel.tar # The kernel $(SOURCE_DIR)/$(LINUX_SOURCE): while [ ! -f $(SOURCE_DIR)/$(LINUX_SOURCE) ] ; do \ wget -P $(SOURCE_DIR) --passive $(LINUX_URI)/$(LINUX_SOURCE); \ done $(LINUX_DIR)/.unpacked: $(SOURCE_DIR)/$(LINUX_SOURCE) bunzip2 -c $(SOURCE_DIR)/$(LINUX_SOURCE) | tar -xv touch $(LINUX_DIR)/.unpacked $(SOURCE_DIR)/$(USERMODELINUX_PATCH): while [ ! -f $(SOURCE_DIR)/$(USERMODELINUX_PATCH) ] ; do \ wget -P $(SOURCE_DIR) --passive $(USERMODELINUX_URI)/$(USERMODELINUX_PATCH); \ done $(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked $(SOURCE_DIR)/$(USERMODELINUX_PATCH) bzcat $(SOURCE_DIR)/$(USERMODELINUX_PATCH) | patch -d $(LINUX_DIR) -p1 touch $(LINUX_DIR)/.patched $(LINUX_DIR)/.um: $(LINUX_DIR)/.patched sed -e 's/^ARCH :=.*/ARCH=um/g' < $(LINUX_DIR)/Makefile > $(LINUX_DIR)/Makefile.new && mv -f $(LINUX_DIR)/Makefile.new $(LINUX_DIR)/Makefile touch $(LINUX_DIR)/.um $(LINUX_DIR)/.configdone: $(LINUX_DIR)/.um cp -f $(KCONFIG) $(LINUX_DIR)/.config make -C $(LINUX_DIR) oldconfig menuconfig touch $(LINUX_DIR)/.configdone $(LINUX_DIR)/.dep: $(LINUX_DIR)/.configdone make -C $(LINUX_DIR) dep touch $(LINUX_DIR)/.dep $(LINUX_DIR)/linux: $(LINUX_DIR)/.dep (cd $(LINUX_DIR); make linux) $(LINUX): $(LINUX_DIR)/linux ln -sf $(LINUX_DIR)/linux $(LINUX) # uClibc $(SOURCE_DIR)/$(UCLIBC_SOURCE): while [ ! -f $(SOURCE_DIR)/$(UCLIBC_SOURCE) ] ; do \ wget -P $(SOURCE_DIR) --passive $(UCLIBC_URI)/$(UCLIBC_SOURCE) ; \ done; $(UCLIBC_DIR)/Config: $(SOURCE_DIR)/$(UCLIBC_SOURCE) tar -xzf $(SOURCE_DIR)/$(UCLIBC_SOURCE) for p in `find $(SOURCE_DIR) -name uClibc-*.patch | sort -g`;do \ patch -p0 < $$p ; \ done awk 'BEGIN { FS=" ="; REG="DODEBUG|DOLFS|INCLUDE_RPC|DOPIC";} \ { if ($$0 ~ "^" REG) { print $$1 " = false" } else { print $$0 } }' < \ $(UCLIBC_DIR)/extra/Configs/Config.$(ARCH) > $(UCLIBC_DIR)/Config; $(UCLIBC_DIR)/lib/libc.a: $(LINUX) $(UCLIBC_DIR)/Config $(MAKE) CROSS=$(CROSS) \ DEVEL_PREFIX=$(STAGING_DIR) \ SYSTEM_DEVEL_PREFIX=$(STAGING_DIR)/usr \ SHARED_LIB_LOADER_PATH=/lib \ KERNEL_SOURCE=$(LINUX_DIR) \ -C $(UCLIBC_DIR) uclibc: $(UCLIBC_DIR)/lib/libc.a $(STAGING_DIR) $(TARGET_DIR) @A=`cksum $(STAGING_DIR)/lib/libuClibc-0.9.5.so 2>/dev/null | awk '{ print $$1 }'`; \ B=`cksum $(UCLIBC_DIR)/lib/libuClibc-0.9.5.so 2>/dev/null | awk '{ print $$1 }'`; \ if [ "$$A" != "$$B" ] ; then \ set -x; \ $(MAKE) \ DEVEL_PREFIX=$(STAGING_DIR) \ SYSTEM_DEVEL_PREFIX=$(STAGING_DIR)/usr \ SHARED_LIB_LOADER_PATH=$(STAGING_DIR)/lib \ -C $(UCLIBC_DIR) install; \ fi; @A=`cksum $(TARGET_DIR)/lib/libuClibc-0.9.5.so 2>/dev/null | awk '{ print $$1 }'`; \ B=`cksum $(UCLIBC_DIR)/lib/libuClibc-0.9.5.so 2>/dev/null | awk '{ print $$1 }'`; \ if [ "$$A" != "$$B" ] ; then \ set -x; \ $(MAKE) \ PREFIX=$(TARGET_DIR) \ DEVEL_PREFIX=/ \ SYSTEM_DEVEL_PREFIX=/usr \ SHARED_LIB_LOADER_PATH=/lib \ -C $(UCLIBC_DIR) install_runtime; \ fi # genext2fs $(GENEXT2FS_DIR)/genext2fs: $(MAKE) -C $(GENEXT2FS_DIR) # others clean: $(TARGETS_CLEAN) make -C $(GENEXT2FS_DIR) clean @if [ -d $(UCLIBC_DIR) ] ; then \ make -C $(UCLIBC_DIR) clean; \ fi; @if [ -d $(LINUX_DIR) ] ; then \ make -C $(UCLIBC_DIR) clean; \ fi; rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE) rm -f *~ mrproper: $(TARGETS_MRPROPER) rm -rf $(UCLIBC_DIR); rm -rf $(LINUX_DIR); rm -f root_fs $(LINUX) make -C $(GENEXT2FS_DIR) clean rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE) rm -f *~ distclean: mrproper $(TARGETS_DISTCLEAN) rm -f $(SOURCE_DIR)/$(UCLIBC_SOURCE) rm -f $(SOURCE_DIR)/$(USERMODELINUX_PATCH) rm -f $(SOURCE_DIR)/$(LINUX_SOURCE) .PHONY: uclibc $(TARGETS) world test clean mrproper distclean README 0 → 100644 +28 −0 Original line number Diff line number Diff line To build and use the buildroot stuff, do the following: 1) run 'make' 2) wait while it compiles 3) run './UMlinux' to test out your root filesystem using User Mode Linux. You do not need to be root to build or run this system. Each Virtual Terminal will be opened in its own window. You must be running X and have xterm installed for this to work -- otherwise you see a few errors on bootup as it tries to launch xterms. It will still work on a console, but you will not have access to the other Virtual Terminals. Also, you the uClibc and busybox source trees that are downloaded are fully set up for anonymous CVS access. You may need to set up your system for anonymous CVS access by running the following command: cvs -d:pserver:anonymous@busybox.net:/var/cvs login Then just hit Enter when it prompts you for a password. You only need to do this once. Then, whenever you want to update your system, just go into the busybox or uClibc directory and run 'cvs update'. Have fun! -Erik Please feed suggestions, bug reports, insults, and bribes back to: Erik Andersen <andersen@codepoet.org> boa.mk 0 → 100644 +78 −0 Original line number Diff line number Diff line # TARGETS += boa TARGETS_CLEAN += boa_clean TARGETS_MRPROPER += boa_mrproper TARGETS_DISTCLEAN += boa_distclean # Don't alter below this line unless you (think) you know # what you are doing! Danger, Danger! BOA_DIR=$(BASE_DIR)/${shell basename $(BOA_SOURCE) .tar.gz} BOA_WORKDIR=$(BASE_DIR)/boa_workdir BOA_URI=http://www.boa.org BOA_SOURCE=boa-0.94.12pre1.tar.gz IMAGE_SIZE += +100 $(SOURCE_DIR)/$(BOA_SOURCE): while [ ! -f $(SOURCE_DIR)/$(BOA_SOURCE) ] ; do \ wget -P $(SOURCE_DIR) --passive-ftp $(BOA_URI)/$(BOA_SOURCE); \ done $(BOA_DIR)/.unpacked: $(SOURCE_DIR)/$(BOA_SOURCE) tar -xzf $(SOURCE_DIR)/$(BOA_SOURCE) touch $(BOA_DIR)/.unpacked $(BOA_WORKDIR)/Makefile: uclibc $(BOA_DIR)/.unpacked mkdir -p $(BOA_WORKDIR) if [ -f $(SOURCE_DIR)/boa-config.site-$(ARCH) ]; then \ (cd $(BOA_WORKDIR) && CONFIG_SITE=$(SOURCE_DIR)/boa-config.site-$(ARCH) CC=$(TARGET_CC) $(BOA_DIR)/src/configure); \ else \ (cd $(BOA_WORKDIR) && CC=$(TARGET_CC) $(BOA_DIR)/src/configure); \ fi $(BOA_WORKDIR)/.built: $(BOA_WORKDIR)/Makefile touch $(BOA_WORKDIR)/.depend make VPATH=$(BOA_DIR)/src/ -C $(BOA_WORKDIR) (cd $(BOA_WORKDIR) && strip --strip-all boa boa_indexer) touch $(BOA_WORKDIR)/.built boa_install_dirs = /usr/sbin /etc/boa /usr/lib/boa /var/www /usr/lib/cgi-bin TARGET_DIRS = $(foreach dir,$(boa_install_dirs),$(TARGET_DIR)/$(dir)) $(TARGET_DIRS): mkdir -p $@ boa: $(BOA_WORKDIR)/.built $(TARGET_DIRS) @A=`cksum $(TARGET_DIR)/usr/sbin/boa 2>/dev/null | awk '{ print $$1 }'`; \ B=`cksum $(BOA_WORKDIR)/boa 2>/dev/null | awk '{ print $$1 }'`; \ if [ "$$A" != "$$B" ] ; then \ cp -f $(BOA_WORKDIR)/boa $(TARGET_DIR)/usr/sbin/boa ; \ fi; @A=`cksum $(TARGET_DIR)/usr/lib/boa/boa_indexer 2>/dev/null | awk '{ print $$1 }'`; \ B=`cksum $(BOA_WORKDIR)/boa_indexer 2>/dev/null | awk '{ print $$1 }'`; \ if [ "$$A" != "$$B" ] ; then \ cp -f $(BOA_WORKDIR)/boa_indexer $(TARGET_DIR)/usr/lib/boa/boa_indexer ; \ fi; @A=`cksum $(TARGET_DIR)/etc/boa/boa.conf 2>/dev/null | awk '{ print $$1 }'`; \ B=`cksum $(SOURCE_DIR)/boa.conf 2>/dev/null | awk '{ print $$1 }'`; \ if [ "$$A" != "$$B" ] ; then \ cp -f $(SOURCE_DIR)/boa.conf $(TARGET_DIR)/etc/boa ; \ fi; @A=`cksum $(TARGET_DIR)/etc/mime.types 2>/dev/null | awk '{ print $$1 }'`; \ B=`cksum $(SOURCE_DIR)/mime.types 2>/dev/null | awk '{ print $$1 }'`; \ if [ "$$A" != "$$B" ] ; then \ cp -f $(SOURCE_DIR)/mime.types $(TARGET_DIR)/etc/mime.types ; \ fi; boa_clean: @if [ -d $(BOA_WORKDIR)/Makefile ] ; then \ make -C $(BOA_WORKDIR) clean ; \ fi; boa_mrproper: rm -rf $(BOA_DIR) $(BOA_WORKDIR) boa_distclean: boa_mrproper rm -f $(SOURCE_DIR)/$(BOA_SOURCE) busybox.mk 0 → 100644 +63 −0 Original line number Diff line number Diff line TARGETS += busybox TARGETS_CLEAN += busybox_clean TARGETS_MRPROPER += busybox_mrproper TARGETS_DISTCLEAN += busybox_distclean # Don't alter below this line unless you (think) you know # what you are doing! Danger, Danger! BUSYBOX_DIR=$(BASE_DIR)/${shell basename $(BUSYBOX_SOURCE) .tar.gz} BUSYBOX_WORKDIR=$(BASE_DIR)/busybox_workdir BUSYBOX_URI=http://busybox.net/downloads/ BUSYBOX_SOURCE=busybox-0.60.2.tar.gz IMAGE_SIZE += +500 $(SOURCE_DIR)/$(BUSYBOX_SOURCE): while [ ! -f $(SOURCE_DIR)/$(BUSYBOX_SOURCE) ] ; do \ wget -P $(SOURCE_DIR) --passive $(BUSYBOX_URI)/$(BUSYBOX_SOURCE) ; \ done $(BUSYBOX_DIR)/.unpacked: $(SOURCE_DIR)/$(BUSYBOX_SOURCE) tar -xzf $(SOURCE_DIR)/$(BUSYBOX_SOURCE) touch $(BUSYBOX_DIR)/.unpacked $(BUSYBOX_WORKDIR)/.config: $(BUSYBOX_DIR)/.unpacked rm -rf $(BUSYBOX_WORKDIR) mkdir -p $(BUSYBOX_WORKDIR) (cd $(BUSYBOX_WORKDIR) && sh $(BUSYBOX_DIR)/pristine_setup.sh) @perl -i -p \ -e 's|//(#define\s+BB_)(?!FEATURE)|$$1|;' \ -e 's|//(#define\s+BB_FEATURE_VERBOSE_USAGE)|$$1|;' \ -e 's|//(#define\s+BB_FEATURE_NEW_MODULE_INTERFACE)|$$1|;' \ -e 's|//(#define\s+BB_FEATURE_COMMAND_USERNAME_COMPLETION)|$$1|;' \ -e 's|//(#define\s+BB_FEATURE_SH_FANCY_PROMPT)|$$1|;' \ -e 's|//(#define\s+BB_FEATURE_INSMOD_VERSION_CHECKING)|$$1|;' \ -e 's|//(#define\s+BB_FEATURE_IFCONFIG)|$$1|;' \ -e 's|//(#define\s+BB_FEATURE_DEVFS)|$$1|;' \ $(BUSYBOX_WORKDIR)/Config.h touch $(BUSYBOX_WORKDIR)/.config $(BUSYBOX_WORKDIR)/busybox: uclibc $(BUSYBOX_WORKDIR)/.config make CROSS="$(TARGET_CROSS)" -C $(BUSYBOX_WORKDIR) $(TARGET_DIR)/bin/busybox: $(BUSYBOX_WORKDIR)/busybox @A=`cksum $(TARGET_DIR)/bin/busybox 2>/dev/null | awk '{ print $$1 }'`; \ B=`cksum $(BUSYBOX_WORKDIR)/busybox 2>/dev/null | awk '{ print $$1 }'`; \ if [ "$$A" != "$$B" ] ; then \ make CROSS="$(TARGET_CROSS)" PREFIX=$(TARGET_DIR) \ -C $(BUSYBOX_WORKDIR) install; \ fi; busybox: uclibc $(TARGET_DIR)/bin/busybox busybox_clean: @if [ -d $(BUSYBOX_WORKDIR)/Makefile ] ; then \ make -C $(BUSYBOX_WORKDIR) clean ; \ fi; busybox_mrproper: rm -rf $(BUSYBOX_DIR) $(BUSYBOX_WORKDIR) busybox_distclean: busybox_mrproper rm -f $(SOURCE_DIR)/$(BUSYBOX_SOURCE) sources/boa-config.site-i386 0 → 100644 +1 −0 Original line number Diff line number Diff line ac_cv_func_setvbuf_reversed=no Loading
Makefile 0 → 100644 +206 −0 Original line number Diff line number Diff line # Makefile for user-mode-linux with a simple busybox/uClibc root filesystem # # Copyright (C) 2001 by Erik Andersen <andersen@codepoet.org> # Copyright (C) 2001 by Alcove, Julien Gaulmin <julien.gaulmin@fr.alcove.com> # Copyright (C) 2001 by Jon Nelson <jnelson@boa.org> # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU Library General Public License as published by the Free # Software Foundation; either version 2 of the License, or (at your option) any # later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more # details. # # You should have received a copy of the GNU Library General Public License # along with this program; if not, write to the Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Known problems : # - genext2fs: couldn't allocate a block (no free space) # As genext2fs allocate only one group of blocks, the FS size # is limited to 8Mb. # Update this stuff by hand : ARCH = i386 # If you are running a cross compiler, you may want to set this # to something more interesting, like "arm-linux-". #CROSS = $(ARCH)-linux- #IMAGE_SIZE=8192 # Max size #IMAGE_INODES=500 IMAGE_SIZE=550 # library is 550K IMAGE_INODES=300 LINUX_SOURCE=linux-2.4.14.tar.bz2 USERMODELINUX_PATCH=uml-patch-2.4.14-6.bz2 UCLIBC_SOURCE=uClibc-snapshot.tar.gz LINUX_URI=http://www.kernel.org/pub/linux/kernel/v2.4 USERMODELINUX_URI=http://prdownloads.sourceforge.net/user-mode-linux UCLIBC_URI=http://uclibc.org/downloads/ # Don't alter below this line unless you (think) you know # what you are doing! Danger, Danger! .SUFFIXES: # Delete the default suffixes .SUFFIXES: .c .o .h # Define our suffix list # Directories BASE_DIR=${shell pwd} TARGET_DIR=$(BASE_DIR)/root STAGING_DIR=$(BASE_DIR)/staging_dir SOURCE_DIR=$(BASE_DIR)/sources LINUX_DIR=$(BASE_DIR)/linux UCLIBC_DIR=$(BASE_DIR)/uClibc GENEXT2FS_DIR=$(BASE_DIR)/genext2fs TARGET_CC=$(STAGING_DIR)/bin/gcc TARGET_CC1=$(STAGING_DIR)/usr/bin/$(ARCH)-uclibc-gcc TARGET_CROSS=$(STAGING_DIR)/usr/bin/$(ARCH)-uclibc- TARGET_PATH=$(STAGING_DIR)/usr/bin:$(STAGING_DIR)/bin:/bin:/sbin:/usr/bin:/usr/sbin LINUX=$(BASE_DIR)/UMlinux IMAGE=$(BASE_DIR)/root_fs KCONFIG=$(SOURCE_DIR)/linux-uml.config all: world #So what shall we build today? TARGETS= -include busybox.mk -include boa.mk world: $(TARGETS) $(GENEXT2FS_DIR)/genext2fs $(TARGET_DIR) $(GENEXT2FS_DIR)/genext2fs \ -b `echo $(IMAGE_SIZE) | bc` \ -i `echo $(IMAGE_INODES) | bc` \ -d $(TARGET_DIR) \ -D $(SOURCE_DIR)/device_table.txt root_fs $(STAGING_DIR): rm -rf $(STAGING_DIR) mkdir $(STAGING_DIR) $(TARGET_DIR): rm -rf $(TARGET_DIR) tar -xf $(SOURCE_DIR)/skel.tar # The kernel $(SOURCE_DIR)/$(LINUX_SOURCE): while [ ! -f $(SOURCE_DIR)/$(LINUX_SOURCE) ] ; do \ wget -P $(SOURCE_DIR) --passive $(LINUX_URI)/$(LINUX_SOURCE); \ done $(LINUX_DIR)/.unpacked: $(SOURCE_DIR)/$(LINUX_SOURCE) bunzip2 -c $(SOURCE_DIR)/$(LINUX_SOURCE) | tar -xv touch $(LINUX_DIR)/.unpacked $(SOURCE_DIR)/$(USERMODELINUX_PATCH): while [ ! -f $(SOURCE_DIR)/$(USERMODELINUX_PATCH) ] ; do \ wget -P $(SOURCE_DIR) --passive $(USERMODELINUX_URI)/$(USERMODELINUX_PATCH); \ done $(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked $(SOURCE_DIR)/$(USERMODELINUX_PATCH) bzcat $(SOURCE_DIR)/$(USERMODELINUX_PATCH) | patch -d $(LINUX_DIR) -p1 touch $(LINUX_DIR)/.patched $(LINUX_DIR)/.um: $(LINUX_DIR)/.patched sed -e 's/^ARCH :=.*/ARCH=um/g' < $(LINUX_DIR)/Makefile > $(LINUX_DIR)/Makefile.new && mv -f $(LINUX_DIR)/Makefile.new $(LINUX_DIR)/Makefile touch $(LINUX_DIR)/.um $(LINUX_DIR)/.configdone: $(LINUX_DIR)/.um cp -f $(KCONFIG) $(LINUX_DIR)/.config make -C $(LINUX_DIR) oldconfig menuconfig touch $(LINUX_DIR)/.configdone $(LINUX_DIR)/.dep: $(LINUX_DIR)/.configdone make -C $(LINUX_DIR) dep touch $(LINUX_DIR)/.dep $(LINUX_DIR)/linux: $(LINUX_DIR)/.dep (cd $(LINUX_DIR); make linux) $(LINUX): $(LINUX_DIR)/linux ln -sf $(LINUX_DIR)/linux $(LINUX) # uClibc $(SOURCE_DIR)/$(UCLIBC_SOURCE): while [ ! -f $(SOURCE_DIR)/$(UCLIBC_SOURCE) ] ; do \ wget -P $(SOURCE_DIR) --passive $(UCLIBC_URI)/$(UCLIBC_SOURCE) ; \ done; $(UCLIBC_DIR)/Config: $(SOURCE_DIR)/$(UCLIBC_SOURCE) tar -xzf $(SOURCE_DIR)/$(UCLIBC_SOURCE) for p in `find $(SOURCE_DIR) -name uClibc-*.patch | sort -g`;do \ patch -p0 < $$p ; \ done awk 'BEGIN { FS=" ="; REG="DODEBUG|DOLFS|INCLUDE_RPC|DOPIC";} \ { if ($$0 ~ "^" REG) { print $$1 " = false" } else { print $$0 } }' < \ $(UCLIBC_DIR)/extra/Configs/Config.$(ARCH) > $(UCLIBC_DIR)/Config; $(UCLIBC_DIR)/lib/libc.a: $(LINUX) $(UCLIBC_DIR)/Config $(MAKE) CROSS=$(CROSS) \ DEVEL_PREFIX=$(STAGING_DIR) \ SYSTEM_DEVEL_PREFIX=$(STAGING_DIR)/usr \ SHARED_LIB_LOADER_PATH=/lib \ KERNEL_SOURCE=$(LINUX_DIR) \ -C $(UCLIBC_DIR) uclibc: $(UCLIBC_DIR)/lib/libc.a $(STAGING_DIR) $(TARGET_DIR) @A=`cksum $(STAGING_DIR)/lib/libuClibc-0.9.5.so 2>/dev/null | awk '{ print $$1 }'`; \ B=`cksum $(UCLIBC_DIR)/lib/libuClibc-0.9.5.so 2>/dev/null | awk '{ print $$1 }'`; \ if [ "$$A" != "$$B" ] ; then \ set -x; \ $(MAKE) \ DEVEL_PREFIX=$(STAGING_DIR) \ SYSTEM_DEVEL_PREFIX=$(STAGING_DIR)/usr \ SHARED_LIB_LOADER_PATH=$(STAGING_DIR)/lib \ -C $(UCLIBC_DIR) install; \ fi; @A=`cksum $(TARGET_DIR)/lib/libuClibc-0.9.5.so 2>/dev/null | awk '{ print $$1 }'`; \ B=`cksum $(UCLIBC_DIR)/lib/libuClibc-0.9.5.so 2>/dev/null | awk '{ print $$1 }'`; \ if [ "$$A" != "$$B" ] ; then \ set -x; \ $(MAKE) \ PREFIX=$(TARGET_DIR) \ DEVEL_PREFIX=/ \ SYSTEM_DEVEL_PREFIX=/usr \ SHARED_LIB_LOADER_PATH=/lib \ -C $(UCLIBC_DIR) install_runtime; \ fi # genext2fs $(GENEXT2FS_DIR)/genext2fs: $(MAKE) -C $(GENEXT2FS_DIR) # others clean: $(TARGETS_CLEAN) make -C $(GENEXT2FS_DIR) clean @if [ -d $(UCLIBC_DIR) ] ; then \ make -C $(UCLIBC_DIR) clean; \ fi; @if [ -d $(LINUX_DIR) ] ; then \ make -C $(UCLIBC_DIR) clean; \ fi; rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE) rm -f *~ mrproper: $(TARGETS_MRPROPER) rm -rf $(UCLIBC_DIR); rm -rf $(LINUX_DIR); rm -f root_fs $(LINUX) make -C $(GENEXT2FS_DIR) clean rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE) rm -f *~ distclean: mrproper $(TARGETS_DISTCLEAN) rm -f $(SOURCE_DIR)/$(UCLIBC_SOURCE) rm -f $(SOURCE_DIR)/$(USERMODELINUX_PATCH) rm -f $(SOURCE_DIR)/$(LINUX_SOURCE) .PHONY: uclibc $(TARGETS) world test clean mrproper distclean
README 0 → 100644 +28 −0 Original line number Diff line number Diff line To build and use the buildroot stuff, do the following: 1) run 'make' 2) wait while it compiles 3) run './UMlinux' to test out your root filesystem using User Mode Linux. You do not need to be root to build or run this system. Each Virtual Terminal will be opened in its own window. You must be running X and have xterm installed for this to work -- otherwise you see a few errors on bootup as it tries to launch xterms. It will still work on a console, but you will not have access to the other Virtual Terminals. Also, you the uClibc and busybox source trees that are downloaded are fully set up for anonymous CVS access. You may need to set up your system for anonymous CVS access by running the following command: cvs -d:pserver:anonymous@busybox.net:/var/cvs login Then just hit Enter when it prompts you for a password. You only need to do this once. Then, whenever you want to update your system, just go into the busybox or uClibc directory and run 'cvs update'. Have fun! -Erik Please feed suggestions, bug reports, insults, and bribes back to: Erik Andersen <andersen@codepoet.org>
boa.mk 0 → 100644 +78 −0 Original line number Diff line number Diff line # TARGETS += boa TARGETS_CLEAN += boa_clean TARGETS_MRPROPER += boa_mrproper TARGETS_DISTCLEAN += boa_distclean # Don't alter below this line unless you (think) you know # what you are doing! Danger, Danger! BOA_DIR=$(BASE_DIR)/${shell basename $(BOA_SOURCE) .tar.gz} BOA_WORKDIR=$(BASE_DIR)/boa_workdir BOA_URI=http://www.boa.org BOA_SOURCE=boa-0.94.12pre1.tar.gz IMAGE_SIZE += +100 $(SOURCE_DIR)/$(BOA_SOURCE): while [ ! -f $(SOURCE_DIR)/$(BOA_SOURCE) ] ; do \ wget -P $(SOURCE_DIR) --passive-ftp $(BOA_URI)/$(BOA_SOURCE); \ done $(BOA_DIR)/.unpacked: $(SOURCE_DIR)/$(BOA_SOURCE) tar -xzf $(SOURCE_DIR)/$(BOA_SOURCE) touch $(BOA_DIR)/.unpacked $(BOA_WORKDIR)/Makefile: uclibc $(BOA_DIR)/.unpacked mkdir -p $(BOA_WORKDIR) if [ -f $(SOURCE_DIR)/boa-config.site-$(ARCH) ]; then \ (cd $(BOA_WORKDIR) && CONFIG_SITE=$(SOURCE_DIR)/boa-config.site-$(ARCH) CC=$(TARGET_CC) $(BOA_DIR)/src/configure); \ else \ (cd $(BOA_WORKDIR) && CC=$(TARGET_CC) $(BOA_DIR)/src/configure); \ fi $(BOA_WORKDIR)/.built: $(BOA_WORKDIR)/Makefile touch $(BOA_WORKDIR)/.depend make VPATH=$(BOA_DIR)/src/ -C $(BOA_WORKDIR) (cd $(BOA_WORKDIR) && strip --strip-all boa boa_indexer) touch $(BOA_WORKDIR)/.built boa_install_dirs = /usr/sbin /etc/boa /usr/lib/boa /var/www /usr/lib/cgi-bin TARGET_DIRS = $(foreach dir,$(boa_install_dirs),$(TARGET_DIR)/$(dir)) $(TARGET_DIRS): mkdir -p $@ boa: $(BOA_WORKDIR)/.built $(TARGET_DIRS) @A=`cksum $(TARGET_DIR)/usr/sbin/boa 2>/dev/null | awk '{ print $$1 }'`; \ B=`cksum $(BOA_WORKDIR)/boa 2>/dev/null | awk '{ print $$1 }'`; \ if [ "$$A" != "$$B" ] ; then \ cp -f $(BOA_WORKDIR)/boa $(TARGET_DIR)/usr/sbin/boa ; \ fi; @A=`cksum $(TARGET_DIR)/usr/lib/boa/boa_indexer 2>/dev/null | awk '{ print $$1 }'`; \ B=`cksum $(BOA_WORKDIR)/boa_indexer 2>/dev/null | awk '{ print $$1 }'`; \ if [ "$$A" != "$$B" ] ; then \ cp -f $(BOA_WORKDIR)/boa_indexer $(TARGET_DIR)/usr/lib/boa/boa_indexer ; \ fi; @A=`cksum $(TARGET_DIR)/etc/boa/boa.conf 2>/dev/null | awk '{ print $$1 }'`; \ B=`cksum $(SOURCE_DIR)/boa.conf 2>/dev/null | awk '{ print $$1 }'`; \ if [ "$$A" != "$$B" ] ; then \ cp -f $(SOURCE_DIR)/boa.conf $(TARGET_DIR)/etc/boa ; \ fi; @A=`cksum $(TARGET_DIR)/etc/mime.types 2>/dev/null | awk '{ print $$1 }'`; \ B=`cksum $(SOURCE_DIR)/mime.types 2>/dev/null | awk '{ print $$1 }'`; \ if [ "$$A" != "$$B" ] ; then \ cp -f $(SOURCE_DIR)/mime.types $(TARGET_DIR)/etc/mime.types ; \ fi; boa_clean: @if [ -d $(BOA_WORKDIR)/Makefile ] ; then \ make -C $(BOA_WORKDIR) clean ; \ fi; boa_mrproper: rm -rf $(BOA_DIR) $(BOA_WORKDIR) boa_distclean: boa_mrproper rm -f $(SOURCE_DIR)/$(BOA_SOURCE)
busybox.mk 0 → 100644 +63 −0 Original line number Diff line number Diff line TARGETS += busybox TARGETS_CLEAN += busybox_clean TARGETS_MRPROPER += busybox_mrproper TARGETS_DISTCLEAN += busybox_distclean # Don't alter below this line unless you (think) you know # what you are doing! Danger, Danger! BUSYBOX_DIR=$(BASE_DIR)/${shell basename $(BUSYBOX_SOURCE) .tar.gz} BUSYBOX_WORKDIR=$(BASE_DIR)/busybox_workdir BUSYBOX_URI=http://busybox.net/downloads/ BUSYBOX_SOURCE=busybox-0.60.2.tar.gz IMAGE_SIZE += +500 $(SOURCE_DIR)/$(BUSYBOX_SOURCE): while [ ! -f $(SOURCE_DIR)/$(BUSYBOX_SOURCE) ] ; do \ wget -P $(SOURCE_DIR) --passive $(BUSYBOX_URI)/$(BUSYBOX_SOURCE) ; \ done $(BUSYBOX_DIR)/.unpacked: $(SOURCE_DIR)/$(BUSYBOX_SOURCE) tar -xzf $(SOURCE_DIR)/$(BUSYBOX_SOURCE) touch $(BUSYBOX_DIR)/.unpacked $(BUSYBOX_WORKDIR)/.config: $(BUSYBOX_DIR)/.unpacked rm -rf $(BUSYBOX_WORKDIR) mkdir -p $(BUSYBOX_WORKDIR) (cd $(BUSYBOX_WORKDIR) && sh $(BUSYBOX_DIR)/pristine_setup.sh) @perl -i -p \ -e 's|//(#define\s+BB_)(?!FEATURE)|$$1|;' \ -e 's|//(#define\s+BB_FEATURE_VERBOSE_USAGE)|$$1|;' \ -e 's|//(#define\s+BB_FEATURE_NEW_MODULE_INTERFACE)|$$1|;' \ -e 's|//(#define\s+BB_FEATURE_COMMAND_USERNAME_COMPLETION)|$$1|;' \ -e 's|//(#define\s+BB_FEATURE_SH_FANCY_PROMPT)|$$1|;' \ -e 's|//(#define\s+BB_FEATURE_INSMOD_VERSION_CHECKING)|$$1|;' \ -e 's|//(#define\s+BB_FEATURE_IFCONFIG)|$$1|;' \ -e 's|//(#define\s+BB_FEATURE_DEVFS)|$$1|;' \ $(BUSYBOX_WORKDIR)/Config.h touch $(BUSYBOX_WORKDIR)/.config $(BUSYBOX_WORKDIR)/busybox: uclibc $(BUSYBOX_WORKDIR)/.config make CROSS="$(TARGET_CROSS)" -C $(BUSYBOX_WORKDIR) $(TARGET_DIR)/bin/busybox: $(BUSYBOX_WORKDIR)/busybox @A=`cksum $(TARGET_DIR)/bin/busybox 2>/dev/null | awk '{ print $$1 }'`; \ B=`cksum $(BUSYBOX_WORKDIR)/busybox 2>/dev/null | awk '{ print $$1 }'`; \ if [ "$$A" != "$$B" ] ; then \ make CROSS="$(TARGET_CROSS)" PREFIX=$(TARGET_DIR) \ -C $(BUSYBOX_WORKDIR) install; \ fi; busybox: uclibc $(TARGET_DIR)/bin/busybox busybox_clean: @if [ -d $(BUSYBOX_WORKDIR)/Makefile ] ; then \ make -C $(BUSYBOX_WORKDIR) clean ; \ fi; busybox_mrproper: rm -rf $(BUSYBOX_DIR) $(BUSYBOX_WORKDIR) busybox_distclean: busybox_mrproper rm -f $(SOURCE_DIR)/$(BUSYBOX_SOURCE)
sources/boa-config.site-i386 0 → 100644 +1 −0 Original line number Diff line number Diff line ac_cv_func_setvbuf_reversed=no