diff options
27 files changed, 1793 insertions, 573 deletions
diff --git a/.cvsignore b/.cvsignore new file mode 100644 index 000000000..9171c4979 --- /dev/null +++ b/.cvsignore @@ -0,0 +1,2 @@ +UMlinux +root_fs @@ -1,218 +1,133 @@ -# Makefile for user-mode-linux with a simple busybox/uClibc root filesystem +# Makefile for 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> +# Copyright (C) 2001-2002 by Erik Andersen <andersen@codepoet.org> +# Copyright (C) 2002 by Tim Riker <Tim@Rikers.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 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. +# 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 +# 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 +############################################################# +# +# EDIT this stuff to suit your system and preferences +# +# Use := when possible to get precomputation, thereby  +# speeding up the build process. +# +############################################################# -LINUX_SOURCE=linux-2.4.17.tar.bz2 -LINUX_URI=http://www.kernel.org/pub/linux/kernel/v2.4 +# What sortof target system shall we compile this for? +ARCH:=i386 +#ARCH:=arm +#ARCH:=whatever -USERMODELINUX_PATCH=uml-patch-2.4.17-3.bz2 -USERMODELINUX_URI=http://prdownloads.sourceforge.net/user-mode-linux +# Enable this to use the uClibc daily snapshot instead of a released +# version.  Daily snapshots may contain new features and bugfixes. Or +# they may not even compile at all, depending on what Erik is doing... +USE_UCLIBC_SNAPSHOT:=true -UCLIBC_SOURCE=uClibc-snapshot.tar.gz -UCLIBC_URI=http://www.uclibc.org/downloads/ +# Enable large file (files > 2 GB) support +BUILD_WITH_LARGEFILE:=false -# Don't alter below this line unless you (think) you know -# what you are doing! Danger, Danger! +############################################################# +# +# The list of stuff to build for the target filesystem +# +############################################################# +TARGETS:=user-mode-linux uclibc busybox tinylogin -.SUFFIXES:            # Delete the default suffixes -.SUFFIXES: .c .o .h   # Define our suffix list +# Pick your root filesystem type. +TARGETS+=ext2root -# 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 +############################################################# +# +# You should probably leave this stuff alone unless you know  +# what you are doing. +# +############################################################# +BASE_DIR:=${shell pwd} +HOSTCC:=gcc +LINUX_KERNEL=$(BASE_DIR)/UMlinux +SOURCE_DIR:=$(BASE_DIR)/sources +DL_DIR:=$(SOURCE_DIR)/dl +PATCH_DIR=$(SOURCE_DIR)/patches +BUILD_DIR:=$(BASE_DIR)/build +TARGET_DIR:=$(BUILD_DIR)/root +STAGING_DIR:=$(BUILD_DIR)/staging_dir +TARGET_CC:=$(STAGING_DIR)/bin/gcc +TARGET_CROSS:=$(STAGING_DIR)/usr/bin/$(ARCH)-uclibc- +TARGET_CC1:=$(TARGET_CROSS)gcc +TARGET_PATH:=$(STAGING_DIR)/usr/bin:$(STAGING_DIR)/bin:/bin:/sbin:/usr/bin:/usr/sbin +STRIP:=$(TARGET_CROSS)strip --remove-section=.comment --remove-section=.note +IMAGE:=$(BASE_DIR)/root_fs +ifneq ($(strip $(ARCH)),i386) +CROSS:=$(ARCH)-linux- +endif -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 +all:   world -LINUX=$(BASE_DIR)/UMlinux -IMAGE=$(BASE_DIR)/root_fs +TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS)) +TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS)) -KCONFIG=$(SOURCE_DIR)/linux-uml.config +world: $(DL_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) $(TARGETS) -all:   world +.PHONY: all world clean dirclean distclean $(TARGETS) $(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) -#So what shall we build today? -TARGETS= +include make/*.mk --include busybox.mk --include boa.mk +############################################################# +# +# staging and target directories do NOT list these as  +# dependancies anywhere else +# +############################################################# +$(DL_DIR): +	mkdir $(DL_DIR) -world:	$(TARGETS) root_fs $(LINUX) +$(BUILD_DIR): +	mkdir $(BUILD_DIR) -root_fs:	$(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) -$(STAGING_DIR)/.target_dir_exists: +$(TARGET_DIR):  	rm -rf $(TARGET_DIR) -	tar -xf $(SOURCE_DIR)/skel.tar -	cp -a target_skeleton/* $(TARGET_DIR)/ +	zcat $(SOURCE_DIR)/skel.tar.gz | tar -C $(BUILD_DIR) -xf - +	cp -a $(SOURCE_DIR)/target_skeleton/* $(TARGET_DIR)/  	-find $(TARGET_DIR) -type d -name CVS -exec rm -rf {} \; > /dev/null 2>&1 -	touch $(STAGING_DIR)/.target_dir_exists - -# 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) -	rm -rf $(LINUX_DIR) # Keeps old versions from messing things up -	bzip2 -dc $(SOURCE_DIR)/$(LINUX_SOURCE) | tar -xvf - -	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) -	# This step cannot gracefully recover from interruption -	@if [ -f $(LINUX_DIR)/.started_patch ]; then \ -		echo "Something went wrong patching the kernel."; \ -		echo "Please rm -rf the kernel directory (\"$(LINUX_DIR)\") and type \"make\" again."; \ -		exit 1; \ -	fi -	touch $(LINUX_DIR)/.started_patch -	bzcat $(SOURCE_DIR)/$(USERMODELINUX_PATCH) | patch -d $(LINUX_DIR) -p1 -	cp -f $(KCONFIG) $(LINUX_DIR)/.config -	mv $(LINUX_DIR)/.started_patch $(LINUX_DIR)/.patched # Hah! Atomic - -$(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 -	make -C $(LINUX_DIR) oldconfig -	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 -	make -C $(LINUX_DIR) 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) -	rm -rf $(UCLIBC_DIR) # Make sure no previous version interferes here -	gzip -d -c $(SOURCE_DIR)/$(UCLIBC_SOURCE) | tar -xvf - -	# The next step patches uClibc -	# Place patches in the source directory, named uClibc-*.patch -	for p in `find $(SOURCE_DIR) -name uClibc-*.patch | sort -g`;do \ -		patch -p0 < $$p ; \ -	done -	# Finally, patch the Config file to our liking -	# uClibc-Config.awk should be pretty staightforward -	awk -f $(SOURCE_DIR)/uClibc-Config.awk < \ -		$(UCLIBC_DIR)/extra/Configs/Config.$(ARCH) > \ -		$(UCLIBC_DIR)/Config - -$(UCLIBC_DIR)/lib/libc.a:	$(LINUX_DIR)/.dep $(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) - -$(TARGET_CC):	$(UCLIBC_DIR)/lib/libc.a -	$(MAKE) CROSS=$(CROSS) \ -	DEVEL_PREFIX=$(STAGING_DIR) \ -	SYSTEM_DEVEL_PREFIX=$(STAGING_DIR)/usr \ -	SHARED_LIB_LOADER_PATH=$(STAGING_DIR)/lib \ -	-C $(UCLIBC_DIR) install - -$(UCLIBC_DIR)/.installed_runtime:	$(STAGING_DIR)/.target_dir_exists $(TARGET_CC) -	$(MAKE) CROSS=$(CROSS) \ -	PREFIX=$(TARGET_DIR) \ -	DEVEL_PREFIX=/ \ -	SYSTEM_DEVEL_PREFIX=/usr \ -	SHARED_LIB_LOADER_PATH=/lib \ -	-C $(UCLIBC_DIR) install_runtime -	touch $(UCLIBC_DIR)/.installed_runtime - -uclibc:	$(TARGET_CC) $(UCLIBC_DIR)/.installed_runtime - -# 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 $(LINUX_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 uclibc-build uclibc-runtime $(TARGETS) world test clean mrproper distclean + + +############################################################# +# +# Cleanup and misc junk +# +############################################################# +clean: $(TARGETS_CLEAN) +	rm -rf $(TARGET_DIR) $(STAGING_DIR) $(IMAGE) + +dirclean: $(TARGETS_DIRCLEAN) +	rm -rf $(TARGET_DIR) $(STAGING_DIR) $(IMAGE) + +distclean: +	rm -rf $(DL_DIR) $(BUILD_DIR) $(LINUX_KERNEL) $(IMAGE) + +sourceball:  +	rm -rf $(BUILD_DIR) +	set -e; \ +	cd ..; \ +	rm -f buildroot.tar.bz2; \ +	tar -cvf buildroot.tar buildroot; \ +	bzip2 -9 buildroot.tar; \ diff --git a/busybox.mk b/busybox.mk deleted file mode 100644 index 061e94d48..000000000 --- a/busybox.mk +++ /dev/null @@ -1,62 +0,0 @@ -TARGETS += busybox -TARGETS_CLEAN += busybox_clean -TARGETS_MRPROPER += busybox_mrproper -TARGETS_DISTCLEAN += busybox_distclean - -BUSYBOX_VERSION=0.60.2 - -# Don't alter below this line unless you (think) you know -# what you are doing! Danger, Danger! - -BUSYBOX_URI=http://www.busybox.net/downloads/ -BUSYBOX_SOURCE=busybox-$(BUSYBOX_VERSION).tar.gz -BUSYBOX_DIR=$(BASE_DIR)/${shell basename $(BUSYBOX_SOURCE) .tar.gz} -BUSYBOX_WORKDIR=$(BASE_DIR)/busybox_workdir - -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) -	rm -rf $(BUSYBOX_DIR) # Make sure no older version interferes -	gzip -d -c $(SOURCE_DIR)/$(BUSYBOX_SOURCE) | tar -xvf - -	touch $(BUSYBOX_DIR)/.unpacked -	 -$(BUSYBOX_WORKDIR)/.config:	$(BUSYBOX_DIR)/.unpacked -	rm -rf $(BUSYBOX_WORKDIR) # Make sure no half-configured busybox interferes -	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)/.built:	$(TARGET_CC) $(BUSYBOX_WORKDIR)/.config -	make CROSS="$(TARGET_CROSS)" -C $(BUSYBOX_WORKDIR) -	touch $(BUSYBOX_WORKDIR)/.built - -$(TARGET_DIR)/bin/busybox:	$(BUSYBOX_WORKDIR)/.built -	make PREFIX=$(TARGET_DIR) -C $(BUSYBOX_WORKDIR) install - -busybox: $(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) diff --git a/make/busybox.mk b/make/busybox.mk new file mode 100644 index 000000000..179a5d74d --- /dev/null +++ b/make/busybox.mk @@ -0,0 +1,47 @@ +############################################################# +# +# busybox +# +############################################################# +USE_BUSYBOX_SNAPSHOT=true +ifeq ($(USE_BUSYBOX_SNAPSHOT),true) +# Be aware that this changes daily.... +BUSYBOX_DIR:=$(BUILD_DIR)/busybox +BUSYBOX_SOURCE=busybox-snapshot.tar.bz2 +BUSYBOX_SITE:=http://www.busybox.net/downloads/snapshots +UNZIP=bzcat +else +BUSYBOX_DIR:=$(BUILD_DIR)/busybox-0.60.2 +BUSYBOX_SOURCE:=busybox-0.60.2.tar.gz +BUSYBOX_SITE:=http://www.busybox.net/downloads +UNZIP=zcat +endif +BUSYBOX_PATCH:=$(SOURCE_DIR)/busybox.patch + + +$(DL_DIR)/$(BUSYBOX_SOURCE): +	 wget -P $(DL_DIR) --passive-ftp $(BUSYBOX_SITE)/$(BUSYBOX_SOURCE) + +busybox-source: $(DL_DIR)/$(BUSYBOX_SOURCE) $(BUSYBOX_PATCH) + +$(BUSYBOX_DIR)/Config.h: $(DL_DIR)/$(BUSYBOX_SOURCE) $(BUSYBOX_PATCH) +	$(UNZIP) $(DL_DIR)/$(BUSYBOX_SOURCE) | tar -C $(BUILD_DIR) -xvf - +	cat $(BUSYBOX_PATCH) | patch -d $(BUSYBOX_DIR) -p1 +ifeq ($(strip $(BUILD_WITH_LARGEFILE)),true) +	perl -i -p -e "s/^DOLFS.*/DOLFS=true/;" $(BUSYBOX_DIR)/Makefile +endif + +$(BUSYBOX_DIR)/busybox: $(BUSYBOX_DIR)/Config.h +	make CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" -C $(BUSYBOX_DIR) + +$(TARGET_DIR)/bin/busybox: $(BUSYBOX_DIR)/busybox +	make CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" -C $(BUSYBOX_DIR) install + +busybox: uclibc $(TARGET_DIR)/bin/busybox + +busybox-clean: +	rm -f $(TARGET_DIR)/bin/busybox +	-make -C $(BUSYBOX_DIR) clean + +busybox-dirclean: +	rm -rf $(BUSYBOX_DIR) diff --git a/make/ext2root.mk b/make/ext2root.mk new file mode 100644 index 000000000..37a9da2c0 --- /dev/null +++ b/make/ext2root.mk @@ -0,0 +1,53 @@ +############################################################# +# +# genext2fs to build to target ext2 filesystems +# +############################################################# +GENEXT2_DIR=$(BUILD_DIR)/genext2fs-1.3.orig +GENEXT2_SOURCE=genext2fs_1.3.orig.tar.gz +GENEXT2_SITE=http://ftp.debian.org/debian/pool/main/g/genext2fs +GENEXT2_PATCH=$(SOURCE_DIR)/genext2fs.patch + +$(DL_DIR)/$(GENEXT2_SOURCE): +	wget -P $(DL_DIR) --passive-ftp $(GENEXT2_SITE)/$(GENEXT2_SOURCE) + +$(GENEXT2_DIR): $(DL_DIR)/$(GENEXT2_SOURCE) $(GENEXT2_PATCH) +	zcat $(DL_DIR)/$(GENEXT2_SOURCE) | tar -C $(BUILD_DIR) -xvf - +	cat $(GENEXT2_PATCH) | patch -p1 -d $(GENEXT2_DIR) + +$(GENEXT2_DIR)/genext2fs: $(GENEXT2_DIR) +	$(MAKE) CFLAGS="-Wall -O2 -D_FILE_OFFSET_BITS=64 -D__USE_FILE_OFFSET64" -C $(GENEXT2_DIR); +	touch -c $(GENEXT2_DIR)/genext2fs + +genext2fs: $(GENEXT2_DIR)/genext2fs + + + +############################################################# +# +# Build the ext2 root filesystem image +# +# Known problems : +#  - genext2fs: couldn't allocate a block (no free space) +#   +#    Since genext2fs allocates only one group of blocks, the FS  +#    size is limited to a maximum of 8 Mb. +# +############################################################# +# FIXME -- calculate these numbers... +SIZE=4000 +INODES=1000 + +ext2root: genext2fs #$(shell find $(TARGET_DIR) -type f) +	-@find $(TARGET_DIR)/lib -type f -name \*.so\* | xargs $(STRIP) --strip-unneeded 2>/dev/null || true; +	-@find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIP) 2>/dev/null || true; +	$(GENEXT2_DIR)/genext2fs -i $(INODES) -b $(SIZE) -d $(TARGET_DIR) -D $(SOURCE_DIR)/device_table.txt $(IMAGE) + +ext2root-source: $(DL_DIR)/$(GENEXT2_SOURCE) + +ext2root-clean: +	-make -C $(GENEXT2_DIR) clean + +ext2root-dirclean: +	rm -rf $(GENEXT2_DIR) + diff --git a/make/tinylogin.mk b/make/tinylogin.mk new file mode 100644 index 000000000..653f37921 --- /dev/null +++ b/make/tinylogin.mk @@ -0,0 +1,38 @@ +############################################################# +# +# tinylogin +# +############################################################# +TINYLOGIN_DIR:=$(BUILD_DIR)/tinylogin-1.00 +# FIXME - this changes daily. we should use a stable tarball and cvs up if desired +#TINYLOGIN_SOURCE=tinylogin-snapshot.tar.bz2 +TINYLOGIN_SOURCE:=tinylogin-1.00.tar.bz2 +TINYLOGIN_SITE:=http://tinylogin.busybox.net/downloads + +$(DL_DIR)/$(TINYLOGIN_SOURCE): +	wget -P $(DL_DIR) --passive-ftp $(TINYLOGIN_SITE)/$(TINYLOGIN_SOURCE) + +tinylogin-source: $(DL_DIR)/$(TINYLOGIN_SOURCE) + +$(TINYLOGIN_DIR)/Config.h: $(DL_DIR)/$(TINYLOGIN_SOURCE) +	bzcat $(DL_DIR)/$(TINYLOGIN_SOURCE) | tar -C $(BUILD_DIR) -xvf - +	perl -i -p -e "s/\`id -u\` -ne 0/0 == 1/;" \ +		-e "s/4755 --owner=root --group=root/755/" \ +		$(TINYLOGIN_DIR)/install.sh +	# date test this one +	touch $(TINYLOGIN_DIR)/Config.h + +$(TINYLOGIN_DIR)/tinylogin: $(TINYLOGIN_DIR)/Config.h +	make CROSS="$(TARGET_CROSS)" -C $(TINYLOGIN_DIR) + +$(TARGET_DIR)/bin/tinylogin: $(TINYLOGIN_DIR)/tinylogin +	make CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" -C $(TINYLOGIN_DIR) install + +tinylogin: uclibc $(TARGET_DIR)/bin/tinylogin + +tinylogin-clean: +	rm -f $(TARGET_DIR)/bin/tinylogin +	-make -C $(TINYLOGIN_DIR) clean + +tinylogin-dirclean: +	rm -rf $(TINYLOGIN_DIR) diff --git a/make/uclibc.mk b/make/uclibc.mk new file mode 100644 index 000000000..3b3b16de2 --- /dev/null +++ b/make/uclibc.mk @@ -0,0 +1,75 @@ +############################################################# +# +# uClibc (the C library) +# +############################################################# + +ifeq ($(USE_UCLIBC_SNAPSHOT),true) +# Be aware that this changes daily.... +UCLIBC_DIR=$(BUILD_DIR)/uClibc +UCLIBC_SOURCE=uClibc-snapshot.tar.bz2 +else +UCLIBC_DIR:=$(BUILD_DIR)/uClibc-0.9.11 +UCLIBC_SOURCE:=uClibc-0.9.11.tar.bz2 +endif +#UCLIBC_URI:=http://www.uclibc.org/downloads +UCLIBC_URI:=http://de.busybox.net/downloads/uClibc +ifeq ($(strip $(BUILD_WITH_LARGEFILE)),true) +LARGEFILE=true +else +LARGEFILE=false +endif +ifneq ($(CROSS),) +CROSSARG:=--cross="$(CROSS)" +endif + +$(DL_DIR)/$(UCLIBC_SOURCE): +	wget -P $(DL_DIR) --passive-ftp $(UCLIBC_URI)/$(UCLIBC_SOURCE) + +uclibc-source: $(DL_DIR)/$(UCLIBC_SOURCE) + +$(UCLIBC_DIR)/.unpacked: $(DL_DIR)/$(UCLIBC_SOURCE) +	rm -rf $(UCLIBC_DIR) +	bzcat $(DL_DIR)/$(UCLIBC_SOURCE) | tar -C $(BUILD_DIR) -xvf -  +	touch $(UCLIBC_DIR)/.unpacked + +$(UCLIBC_DIR)/.configured: $(UCLIBC_DIR)/.unpacked +	$(UCLIBC_DIR)/extra/Configs/uClibc_config_fix.pl \ +		--arch=$(ARCH) \ +		$(CROSSARG) --c99_math=true \ +		--devel_prefix=$(STAGING_DIR) \ +		--float=true \ +		--kernel_dir=$(LINUX_DIR) \ +		--large_file=$(LARGEFILE) \ +		--ldso_path="/lib" \ +		--long_long=true \ +		--rpc_support=true \ +		--shadow=true \ +		--shared_support=true \ +		--threads=true \ +		--debug=false \ +		--file=$(UCLIBC_DIR)/extra/Configs/Config.$(ARCH) \ +		> $(UCLIBC_DIR)/Config;  +	perl -i -p -e 's,SYSTEM_DEVEL_PREFIX.*,SYSTEM_DEVEL_PREFIX=$(STAGING_DIR)/usr,g' $(UCLIBC_DIR)/Config + +	touch $(UCLIBC_DIR)/.configured + +$(UCLIBC_DIR)/lib/libc.a: $(UCLIBC_DIR)/.configured +	$(MAKE) -C $(UCLIBC_DIR) + +$(STAGING_DIR)/lib/libc.a: $(UCLIBC_DIR)/lib/libc.a +	$(MAKE) -C $(UCLIBC_DIR) install + +$(TARGET_DIR)/lib/libc.so.0: $(STAGING_DIR)/lib/libc.a +	$(MAKE) -C $(UCLIBC_DIR) DEVEL_PREFIX=$(TARGET_DIR) \ +		SYSTEM_DEVEL_PREFIX=$(TARGET_DIR)/usr install_runtime install_utils + +uclibc: $(LINUX_KERNEL) $(TARGET_DIR)/lib/libc.so.0 + +uclibc-clean: +	rm -f $(TARGET_DIR)/lib/libc.so.0 +	-make -C $(UCLIBC_DIR) clean +	rm -f $(UCLIBC_DIR)/Config + +uclibc-dirclean: +	rm -rf $(UCLIBC_DIR) diff --git a/make/user-mode-linux.mk b/make/user-mode-linux.mk new file mode 100644 index 000000000..930e24915 --- /dev/null +++ b/make/user-mode-linux.mk @@ -0,0 +1,54 @@ +############################################################# +# +# Linux kernel targets +# +############################################################# +UMLINUX_DIR=$(BUILD_DIR)/linux +UMLINUX_SOURCE=linux-2.4.18.tar.bz2 +UMLINUX_SITE=http://ftp.us.kernel.org/pub/linux/kernel/v2.4 +UMLINUX_PATCH_1:=uml-patch-2.4.18-19.bz2 +UMLINUX_PATCH_1_SITE:=http://prdownloads.sourceforge.net/user-mode-linux +UMLINUX_KCONFIG=$(SOURCE_DIR)/linux-uml.config + +$(DL_DIR)/$(UMLINUX_SOURCE): +	wget -P $(DL_DIR) --passive-ftp $(UMLINUX_SITE)/$(UMLINUX_SOURCE) + +$(DL_DIR)/$(UMLINUX_PATCH_1): +	wget -P $(DL_DIR) --passive-ftp $(UMLINUX_PATCH_1_SITE)/$(UMLINUX_PATCH_1) + +user-mode-linux-source: $(DL_DIR)/$(UMLINUX_SOURCE) $(DL_DIR)/$(UMLINUX_PATCH_1) + +$(UMLINUX_DIR)/.unpacked: $(DL_DIR)/$(UMLINUX_SOURCE) $(DL_DIR)/$(UMLINUX_PATCH_1) +	bzcat $(DL_DIR)/$(UMLINUX_SOURCE) | tar -C $(BUILD_DIR) -xvf - +	touch $(UMLINUX_DIR)/.unpacked + +$(UMLINUX_DIR)/.patched: $(UMLINUX_DIR)/.unpacked +	bzcat $(DL_DIR)/$(UMLINUX_PATCH_1) | patch -d $(UMLINUX_DIR) -p1 +	touch $(UMLINUX_DIR)/.patched + +$(UMLINUX_DIR)/.set_arch: $(UMLINUX_DIR)/.patched +	perl -i -p -e "s/^ARCH :=.*/ARCH:=um/g;" $(UMLINUX_DIR)/Makefile +	touch $(UMLINUX_DIR)/.set_arch + +$(UMLINUX_DIR)/.config: $(UMLINUX_DIR)/.set_arch +	cp $(UMLINUX_KCONFIG) $(UMLINUX_DIR)/.config +	make -C $(UMLINUX_DIR) oldconfig +	touch -c $(UMLINUX_DIR)/.config + +$(UMLINUX_DIR)/linux: $(UMLINUX_DIR)/.config +	make -C $(UMLINUX_DIR) dep +	make -C $(UMLINUX_DIR) linux + +$(LINUX_KERNEL): $(UMLINUX_DIR)/linux +	cp -fa $(UMLINUX_DIR)/linux $(LINUX_KERNEL) + +user-mode-linux: $(LINUX_KERNEL) + +# Renamed so it is not cleaned by default on a make clean +user-mode-linux_clean: clean +	rm -f $(LINUX_KERNEL) +	-make -C $(UMLINUX_DIR) clean + +user-mode-linux-dirclean: +	rm -rf $(UMLINUX_DIR) + diff --git a/sources/busybox.patch b/sources/busybox.patch new file mode 100644 index 000000000..2ad7bf018 --- /dev/null +++ b/sources/busybox.patch @@ -0,0 +1,209 @@ +--- busybox/Config.h	6 Apr 2002 04:22:15 -0000	1.116 ++++ busybox/Config.h	26 Apr 2002 10:54:28 -0000 +@@ -18,9 +18,9 @@ + #define BB_CHROOT + #define BB_CHVT + #define BB_CLEAR +-//#define BB_CMP ++#define BB_CMP + #define BB_CP +-//#define BB_CPIO ++#define BB_CPIO + #define BB_CUT + #define BB_DATE + //#define BB_DC +@@ -29,7 +29,7 @@ + #define BB_DF + #define BB_DIRNAME + #define BB_DMESG +-//#define BB_DOS2UNIX ++#define BB_DOS2UNIX + //#define BB_DPKG + //#define BB_DPKG_DEB + //#define BB_DUTMP +@@ -37,13 +37,13 @@ + //#define BB_DUMPKMAP + #define BB_ECHO + #define BB_ENV +-//#define BB_EXPR +-//#define BB_FBSET ++#define BB_EXPR ++#define BB_FBSET + //#define BB_FDFLUSH + #define BB_FIND + #define BB_FREE +-//#define BB_FREERAMDISK +-//#define BB_FSCK_MINIX ++#define BB_FREERAMDISK ++#define BB_FSCK_MINIX + //#define BB_GETOPT + #define BB_GREP + #define BB_GUNZIP +@@ -51,12 +51,12 @@ + #define BB_HALT + #define BB_HEAD + //#define BB_HOSTID +-//#define BB_HOSTNAME ++#define BB_HOSTNAME + //#define BB_HUSH + #define BB_ID +-//#define BB_IFCONFIG ++#define BB_IFCONFIG + #define BB_INIT +-//#define BB_INSMOD ++#define BB_INSMOD + #define BB_KILL + #define BB_KILLALL + #define BB_KLOGD +@@ -72,10 +72,10 @@ + #define BB_LS + #define BB_LSMOD + //#define BB_MAKEDEVS +-//#define BB_MD5SUM ++#define BB_MD5SUM + #define BB_MKDIR + //#define BB_MKFIFO +-//#define BB_MKFS_MINIX ++#define BB_MKFS_MINIX + #define BB_MKNOD + #define BB_MKSWAP + //#define BB_MKTEMP +@@ -85,24 +85,24 @@ + //#define BB_MSH + //#define BB_MT + #define BB_MV +-//#define BB_NC +-//#define BB_NSLOOKUP ++#define BB_NC ++#define BB_NSLOOKUP + #define BB_PIDOF +-//#define BB_PING +-//#define BB_PIVOT_ROOT ++#define BB_PING ++#define BB_PIVOT_ROOT + #define BB_POWEROFF + //#define BB_PRINTF + #define BB_PS + #define BB_PWD + //#define BB_RDATE +-//#define BB_READLINK ++#define BB_READLINK + #define BB_REBOOT + //#define BB_RENICE + #define BB_RESET + #define BB_RM + #define BB_RMDIR +-//#define BB_RMMOD +-//#define BB_ROUTE ++#define BB_RMMOD ++#define BB_ROUTE + //#define BB_RPM2CPIO + #define BB_SED + //#define BB_SETKEYCODES +@@ -114,29 +114,29 @@ + #define BB_SYSLOGD + #define BB_TAIL + #define BB_TAR +-//#define BB_TEE +-//#define BB_TEST +-//#define BB_TELNET ++#define BB_TEE ++#define BB_TEST ++#define BB_TELNET + //#define BB_TFTP +-//#define BB_TIME ++#define BB_TIME + #define BB_TOUCH +-//#define BB_TR +-//#define BB_TRACEROUTE ++#define BB_TR ++#define BB_TRACEROUTE + #define BB_TRUE_FALSE + #define BB_TTY +-//#define BB_UNIX2DOS ++#define BB_UNIX2DOS + //#define BB_UUENCODE + //#define BB_UUDECODE + #define BB_UMOUNT + #define BB_UNIQ + #define BB_UNAME +-//#define BB_UPDATE ++#define BB_UPDATE + #define BB_UPTIME + //#define BB_USLEEP +-//#define BB_VI ++#define BB_VI + //#define BB_WATCHDOG + #define BB_WC +-//#define BB_WGET ++#define BB_WGET + #define BB_WHICH + #define BB_WHOAMI + #define BB_XARGS +@@ -217,16 +217,16 @@ + #define BB_FEATURE_USE_INITTAB + // + //Enable init being called as /linuxrc +-#define BB_FEATURE_LINUXRC ++//#define BB_FEATURE_LINUXRC + // + //Have init enable core dumping for child processes (for debugging only)  + //#define BB_FEATURE_INIT_COREDUMPS + // + //Make sure nothing is printed to the console on boot +-//#define BB_FEATURE_EXTRA_QUIET ++#define BB_FEATURE_EXTRA_QUIET + // + // enable syslogd -R remotehost +-#define BB_FEATURE_REMOTE_LOG ++//#define BB_FEATURE_REMOTE_LOG + // + // enable syslogd -C + //#define BB_FEATURE_IPC_SYSLOG +@@ -308,13 +308,13 @@ + #define BB_FEATURE_ASH_JOB_CONTROL + // + //Turn on extra fbset options +-//#define BB_FEATURE_FBSET_FANCY ++#define BB_FEATURE_FBSET_FANCY + // + //Turn on fbset readmode support +-//#define BB_FEATURE_FBSET_READMODE ++#define BB_FEATURE_FBSET_READMODE + // + // Support insmod/lsmod/rmmod for post 2.1 kernels +-//#define BB_FEATURE_NEW_MODULE_INTERFACE ++#define BB_FEATURE_NEW_MODULE_INTERFACE + // + // Support insmod/lsmod/rmmod for pre 2.1 kernels + //#define BB_FEATURE_OLD_MODULE_INTERFACE +@@ -332,16 +332,16 @@ + //#define BB_FEATURE_MINIX2 + // + // Enable ifconfig status reporting output -- this feature adds 7k. +-//#define BB_FEATURE_IFCONFIG_STATUS ++#define BB_FEATURE_IFCONFIG_STATUS + // + // Enable ifconfig slip-specific options "keepalive" and "outfill" +-//#define BB_FEATURE_IFCONFIG_SLIP ++#define BB_FEATURE_IFCONFIG_SLIP + // + // Enable ifconfig options "mem_start", "io_addr", and "irq". +-//#define BB_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ ++#define BB_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ + // + // Enable ifconfig option "hw".  Currently works for only with "ether". +-//#define BB_FEATURE_IFCONFIG_HW ++#define BB_FEATURE_IFCONFIG_HW + // + // Allows "broadcast +" to set broadcast automatically based on hostaddr + // and netmask, at a cost of about 100 bytes of code (i386). +@@ -379,7 +379,7 @@ + #define BB_FEATURE_FIND_NEWER + // + // Support for the -A -B and -C context flags in grep +-//#define BB_FEATURE_GREP_CONTEXT ++#define BB_FEATURE_GREP_CONTEXT + // + // Support for the EGREP applet (alias to the grep applet) + //#define BB_FEATURE_GREP_EGREP_ALIAS diff --git a/sources/device_table.txt b/sources/device_table.txt index f0edd20ec..f4a3e9b76 100644 --- a/sources/device_table.txt +++ b/sources/device_table.txt @@ -1,6 +1,14 @@  # device list table  #<name>		<type>	<mode>	<uid>	<gid>	<major>	<minor>	<start>	<inc>	<count>  /dev		d	755	0	0	-	-	-	-	- +/dev/pts	d	755	0	0	-	-	-	-	- + +# Fixme -- add support for type 'f' +#/bin/tinylogin	f	4755	0	0	-	-	-	-	- +#/etc/shadow	f	600	0	0	-	-	-	-	- +#/etc/shadow	f	600	0	0	-	-	-	-	- + +# Normal stuff  /dev/mem	c	640	0	0	1	1	0	0	-  /dev/kmem	c	640	0	0	1	2	0	0	-  /dev/null	c	640	0	0	1	3	0	0	- @@ -13,53 +21,57 @@  /dev/ram	b	640	0	0	1	1	0	0	-  /dev/ram	b	640	0	0	1	0	0	1	4  /dev/loop	b	640	0	0	7	0	0	1	2 -/dev/ttyS	c	640	0	0	4	64	0	1	4 -# -# +#/dev/ttyS	c	640	0	0	4	64	0	1	4  #/dev/psaux	c	640	0	0	10	1	0	0	-  #/dev/rtc	c	640	0	0	10	135	0	0	-  #/dev/fd	b	640	0	0	2	0	0	0	1  # +# Raid device directories +/dev/cciss	d	755	0	0	-	-	-	-	- +/dev/ida	d	755	0	0	-	-	-	-	- +/dev/rd		d	755	0	0	-	-	-	-	- +#  # IDE Devices  /dev/hda	b	640	0	0	3	0	0	0	- -/dev/hda	b	640	0	0	3	1	1	1	1 +/dev/hda	b	640	0	0	3	1	1	1	15  /dev/hdb	b	640	0	0	3	64	0	0	- -/dev/hdb	b	640	0	0	3	65	1	1	1 -#/dev/hdc	b	640	0	0	22	0	0	0	- -#/dev/hdc	b	640	0	0	22	1	1	1	1 -#/dev/hdd	b	640	0	0	22	64	0	0	- -#/dev/hdd	b	640	0	0	22	65	1	1	1 -#/dev/hde	b	640	0	0	33	0	0	0	- -#/dev/hde	b	640	0	0	33	1	1	1	1 -#/dev/hdf	b	640	0	0	33	64	0	0	- -#/dev/hdf	b	640	0	0	33	65	1	1	1 -#/dev/hdg	b	640	0	0	34	0	0	0	- -#/dev/hdg	b	640	0	0	34	1	1	1	1 -#/dev/hdh	b	640	0	0	34	64	0	0	- -#/dev/hdh	b	640	0	0	34	65	1	1	1 +/dev/hdb	b	640	0	0	3	65	1	1	15 +/dev/hdc	b	640	0	0	22	0	0	0	- +/dev/hdc	b	640	0	0	22	1	1	1	15 +/dev/hdd	b	640	0	0	22	64	0	0	- +/dev/hdd	b	640	0	0	22	65	1	1	15 +/dev/hde	b	640	0	0	33	0	0	0	- +/dev/hde	b	640	0	0	33	1	1	1	15 +/dev/hdf	b	640	0	0	33	64	0	0	- +/dev/hdf	b	640	0	0	33	65	1	1	15 +/dev/hdg	b	640	0	0	34	0	0	0	- +/dev/hdg	b	640	0	0	34	1	1	1	15 +/dev/hdh	b	640	0	0	34	64	0	0	- +/dev/hdh	b	640	0	0	34	65	1	1	15  # SCSI Devices -#/dev/sda	b	640	0	0	8	0	0	0	- -#/dev/sda	b	640	0	0	8	1	1	1	1 -#/dev/sdb	b	640	0	0	8	16	0	0	- -#/dev/sdb	b	640	0	0	8	17	1	1	1 -#/dev/sdc	b	640	0	0	8	32	0	0	- -#/dev/sdc	b	640	0	0	8	33	1	1	1 -#/dev/sdd	b	640	0	0	8	48	0	0	- -#/dev/sdd	b	640	0	0	8	49	1	1	1 -#/dev/sde	b	640	0	0	8	64	0	0	- -#/dev/sde	b	640	0	0	8	65	1	1	1 -#/dev/sdf	b	640	0	0	8	80	0	0	- -#/dev/sdf	b	640	0	0	8	81	1	1	1 -#/dev/sdg	b	640	0	0	8	96	0	0	- -#/dev/sdg	b	640	0	0	8	97	1	1	1 -#/dev/sdh	b	640	0	0	8	112	0	0	- -#/dev/sdh	b	640	0	0	8	113	1	1	1 -#/dev/sg		c	640	0	0	21	0	0	1	1 -#/dev/scd	b	640	0	0	11	0	0	1	1 -#/dev/st		b	640	0	0	9	0	1	1	4 -#/dev/st	b	640	0	0	9	32	1	1	4 -#/dev/st	b	640	0	0	9	64	1	1	4 -#/dev/st	b	640	0	0	9	96	1	1	4 +/dev/sda	b	640	0	0	8	0	0	0	- +/dev/sda	b	640	0	0	8	1	1	1	15 +/dev/sdb	b	640	0	0	8	16	0	0	- +/dev/sdb	b	640	0	0	8	17	1	1	15 +/dev/sdc	b	640	0	0	8	32	0	0	- +/dev/sdc	b	640	0	0	8	33	1	1	15 +/dev/sdd	b	640	0	0	8	48	0	0	- +/dev/sdd	b	640	0	0	8	49	1	1	15 +/dev/sde	b	640	0	0	8	64	0	0	- +/dev/sde	b	640	0	0	8	65	1	1	15 +/dev/sdf	b	640	0	0	8	80	0	0	- +/dev/sdf	b	640	0	0	8	81	1	1	15 +/dev/sdg	b	640	0	0	8	96	0	0	- +/dev/sdg	b	640	0	0	8	97	1	1	15 +/dev/sdh	b	640	0	0	8	112	0	0	- +/dev/sdh	b	640	0	0	8	113	1	1	15 +/dev/sg		c	640	0	0	21	0	0	1	15 +/dev/scd	b	640	0	0	11	0	0	1	15 +/dev/st		c	640	0	0	9	0	0	1	8 +/dev/nst	c	640	0	0	9	128	0	1	8 +#/dev/st	c	640	0	0	9	32	1	1	4 +#/dev/st	c	640	0	0	9	64	1	1	4 +#/dev/st	c	640	0	0	9	96	1	1	4  # All the proprietary cdrom devices in the world  #/dev/aztcd	b	640	0	0	29	0	0	0	-  #/dev/bpcd	b	640	0	0	41	0	0	0	- diff --git a/sources/genext2fs.patch b/sources/genext2fs.patch new file mode 100644 index 000000000..008a24b85 --- /dev/null +++ b/sources/genext2fs.patch @@ -0,0 +1,800 @@ +diff -urN genext2fs-1.3.orig/Makefile genext2fs/Makefile +--- genext2fs-1.3.orig/Makefile	Wed Dec 31 17:00:00 1969 ++++ genext2fs/Makefile	Fri Sep 28 15:48:58 2001 +@@ -0,0 +1,19 @@ ++CC=gcc ++CFLAGS=-Wall -O2 ++ ++SRC=genext2fs.c ++OBJS=$(patsubst %.c,%.o, $(SRC)) ++ ++ ++all: genext2fs ++ ++genext2fs: $(OBJS) ++	$(CC) $(CFLAGS) -o $@ $(OBJS) -o $@ ++ ++$(OBJS): %.o : %.c ++	$(CC) $(CFLAGS) -c $< -o $@ ++ ++$(OBJS): Makefile ++ ++clean: ++	rm -f *.o *.a core genext2fs +diff -urN genext2fs-1.3.orig/dev.txt genext2fs/dev.txt +--- genext2fs-1.3.orig/dev.txt	Thu Sep 28 09:03:19 2000 ++++ genext2fs/dev.txt	Wed Dec 31 17:00:00 1969 +@@ -1,94 +0,0 @@ +-drwx		/dev +-crw-	10,190	/dev/lcd +-crw-	10,191	/dev/splc781 +-crw-	4,0	/dev/console +-crw-	5,64	/dev/cua0 +-crw-	5,65	/dev/cua1 +-crw-	5,66	/dev/cua2 +-crw-	5,70	/dev/cua6 +-crw-	5,71	/dev/cua7 +-crw-	5,72	/dev/cua8 +-crw-	5,73	/dev/cua9 +-crw-	29,0	/dev/fb0 +-crw-	29,32	/dev/fb1 +-crw-	1,2	/dev/kmem +-crw-	1,1	/dev/mem +-crw-	1,3	/dev/null +-crw-	2,2	/dev/ptyp2 +-crw-	2,3	/dev/ptyp3 +-crw-	2,5	/dev/ptyp5 +-crw-	2,4	/dev/ptyp4 +-crw-	10,178	/dev/triokb +-crw-	2,0	/dev/ptyp0 +-crw-	2,6	/dev/ptyp6 +-crw-	2,7	/dev/ptyp7 +-crw-	2,8	/dev/ptyp8 +-crw-	2,9	/dev/ptyp9 +-crw-	2,10	/dev/ptypa +-crw-	2,11	/dev/ptypb +-crw-	2,12	/dev/ptypc +-crw-	2,13	/dev/ptypd +-crw-	2,14	/dev/ptype +-crw-	2,15	/dev/ptypf +-brw-	1,0	/dev/ram0 +-brw-	1,1	/dev/ram1 +-brw-	1,2	/dev/ram2 +-brw-	1,3	/dev/ram3 +-br--	31,0	/dev/rom0 +-brw-	31,1	/dev/rom1 +-brw-	31,2	/dev/rom2 +-brw-	31,3	/dev/rom3 +-crw-	5,0	/dev/tty +-crw-	4,0	/dev/tty0 +-crwx	4,1	/dev/tty1 +-crwx	4,2	/dev/tty2 +-crwx	4,3	/dev/tty3 +-crwx	4,4	/dev/tty4 +-crw-	4,5	/dev/tty5 +-crwx	4,6	/dev/tty6 +-crw-	4,7	/dev/tty7 +-crw-	4,8	/dev/tty8 +-crw-	4,9	/dev/tty9 +-crw-	4,64	/dev/ttyS0 +-crw-	4,65	/dev/ttyS1 +-crw-	4,66	/dev/ttyS2 +-crw-	4,67	/dev/ttyS3 +-crw-	4,68	/dev/ttyS4 +-crw-	4,69	/dev/ttyS5 +-crw-	4,70	/dev/ttyS6 +-crw-	4,71	/dev/ttyS7 +-crw-	4,72	/dev/ttyS8 +-crw-	4,73	/dev/ttyS9 +-crw-	3,0	/dev/ttyp0 +-crw-	3,1	/dev/ttyp1 +-crw-	3,2	/dev/ttyp2 +-crw-	3,3	/dev/ttyp3 +-crw-	3,4	/dev/ttyp4 +-crw-	3,5	/dev/ttyp5 +-crw-	3,6	/dev/ttyp6 +-crw-	3,7	/dev/ttyp7 +-crw-	3,8	/dev/ttyp8 +-crw-	3,9	/dev/ttyp9 +-crw-	3,10	/dev/ttypa +-crw-	3,11	/dev/ttypb +-crw-	3,12	/dev/ttypc +-crw-	3,13	/dev/ttypd +-crw-	3,14	/dev/ttype +-crw-	3,15	/dev/ttypf +-crw-	1,5	/dev/zero +-crwx	10,111	/dev/dtedrv +-crwx	4,110	/dev/ttyM +-crw-	77,1	/dev/tssnd +-crw-	77,2	/dev/tstone +-crw-	2,1	/dev/ptyp1 +-crwx	10,180	/dev/triohook +-crw-	90,0	/dev/mtd0 +-brw-	44,0	/dev/ftl0 +-crw-	10,175	/dev/tporta +-crw-	10,176	/dev/tportb +-crwx	10,100	/dev/softmodem +-crwx	10,101	/dev/softmodem_signals +-crwx	10,181	/dev/triovoice +-crw-	5,67	/dev/cua3 +-crw-	5,68	/dev/cua4 +-crw-	5,69	/dev/cua5 +diff -urN genext2fs-1.3.orig/device_table.txt genext2fs/device_table.txt +--- genext2fs-1.3.orig/device_table.txt	Wed Dec 31 17:00:00 1969 ++++ genext2fs/device_table.txt	Fri Mar 15 02:14:39 2002 +@@ -0,0 +1,78 @@ ++# device list table ++#<name>		<type>	<mode>	<uid>	<gid>	<major>	<minor>	<start>	<inc>	<count> ++/dev		d	755	0	0	-	-	-	-	- ++# ++# Normal stuff ++/dev/mem	c	640	0	0	1	1	0	0	- ++/dev/kmem	c	640	0	0	1	2	0	0	- ++/dev/null	c	640	0	0	1	3	0	0	- ++/dev/zero	c	640	0	0	1	5	0	0	- ++/dev/random	c	640	0	0	1	8	0	0	- ++/dev/urandom	c	640	0	0	1	9	0	0	- ++/dev/tty	c	640	0	0	5	0	0	0	- ++/dev/tty	c	640	0	0	4	0	0	1	6 ++/dev/console	c	640	0	0	5	1	0	0	- ++/dev/ram	b	640	0	0	1	1	0	0	- ++/dev/ram	b	640	0	0	1	0	0	1	4 ++/dev/loop	b	640	0	0	7	0	0	1	2 ++#/dev/ttyS	c	640	0	0	4	64	0	1	4 ++#/dev/psaux	c	640	0	0	10	1	0	0	- ++#/dev/rtc	c	640	0	0	10	135	0	0	- ++#/dev/fd	b	640	0	0	2	0	0	0	1 ++# ++# Raid device directories ++#/dev/cciss	d	755	0	0	-	-	-	-	- ++#/dev/ida	d	755	0	0	-	-	-	-	- ++#/dev/rd		d	755	0	0	-	-	-	-	- ++# ++# IDE Devices ++/dev/hda	b	640	0	0	3	0	0	0	- ++/dev/hda	b	640	0	0	3	1	1	1	15 ++/dev/hdb	b	640	0	0	3	64	0	0	- ++/dev/hdb	b	640	0	0	3	65	1	1	15 ++/dev/hdc	b	640	0	0	22	0	0	0	- ++/dev/hdc	b	640	0	0	22	1	1	1	15 ++/dev/hdd	b	640	0	0	22	64	0	0	- ++/dev/hdd	b	640	0	0	22	65	1	1	15 ++#/dev/hde	b	640	0	0	33	0	0	0	- ++#/dev/hde	b	640	0	0	33	1	1	1	15 ++#/dev/hdf	b	640	0	0	33	64	0	0	- ++#/dev/hdf	b	640	0	0	33	65	1	1	15 ++#/dev/hdg	b	640	0	0	34	0	0	0	- ++#/dev/hdg	b	640	0	0	34	1	1	1	15 ++#/dev/hdh	b	640	0	0	34	64	0	0	- ++#/dev/hdh	b	640	0	0	34	65	1	1	15 ++# SCSI Devices ++#/dev/sda	b	640	0	0	8	0	0	0	- ++#/dev/sda	b	640	0	0	8	1	1	1	15 ++#/dev/sdb	b	640	0	0	8	16	0	0	- ++#/dev/sdb	b	640	0	0	8	17	1	1	15 ++#/dev/sdc	b	640	0	0	8	32	0	0	- ++#/dev/sdc	b	640	0	0	8	33	1	1	15 ++#/dev/sdd	b	640	0	0	8	48	0	0	- ++#/dev/sdd	b	640	0	0	8	49	1	1	15 ++#/dev/sde	b	640	0	0	8	64	0	0	- ++#/dev/sde	b	640	0	0	8	65	1	1	15 ++#/dev/sdf	b	640	0	0	8	80	0	0	- ++#/dev/sdf	b	640	0	0	8	81	1	1	15 ++#/dev/sdg	b	640	0	0	8	96	0	0	- ++#/dev/sdg	b	640	0	0	8	97	1	1	15 ++#/dev/sdh	b	640	0	0	8	112	0	0	- ++#/dev/sdh	b	640	0	0	8	113	1	1	15 ++#/dev/sg		c	640	0	0	21	0	0	1	15 ++#/dev/scd	b	640	0	0	11	0	0	1	15 ++#/dev/st		c	640	0	0	9	0	0	1	15 ++# All the proprietary cdrom devices in the world ++#/dev/aztcd	b	640	0	0	29	0	0	0	- ++#/dev/bpcd	b	640	0	0	41	0	0	0	- ++#/dev/capi20	c	640	0	0	68	0	0	1	2 ++#/dev/cdu31a	b	640	0	0	15	0	0	0	- ++#/dev/cdu535	b	640	0	0	24	0	0	0	- ++#/dev/cm206cd	b	640	0	0	32	0	0	0	- ++#/dev/sjcd	b	640	0	0	18	0	0	0	- ++#/dev/sonycd	b	640	0	0	15	0	0	0	- ++#/dev/gscd	b	640	0	0	16	0	0	0	- ++#/dev/sbpcd	b	640	0	0	25	0	0	0	- ++#/dev/sbpcd	b	640	0	0	25	0	0	1	4 ++#/dev/mcd	b	640	0	0	23	0	0	0	- ++#/dev/optcd	b	640	0	0	17	0	0	0	- +diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs/genext2fs.c +--- genext2fs-1.3.orig/genext2fs.c	Fri Mar 15 02:26:01 2002 ++++ genext2fs/genext2fs.c	Fri Mar 15 02:25:46 2002 +@@ -26,6 +26,10 @@ + // 			Bugfix: getcwd values for Solaris	xavier.gueguen@col.bsf.alcatel.fr + // 			Bugfix: ANSI scanf for non-GNU C	xavier.gueguen@col.bsf.alcatel.fr + // 	28 Jun 2001	Bugfix: getcwd differs for Solaris/GNU	mike@sowbug.com ++// 	19 Jun 2001	Erik Andersen <andersee@debian.org> added  ++// 	                    the -n (nosquash) option. ++// 	03 Mar 2002	Erik Andersen <andersee@debian.org> added  ++// 	                    mkfs.jffs2 compatible device table support +  +  + // `genext2fs' is a mean to generate an ext2 filesystem +@@ -33,10 +37,6 @@ + // the image file to copy files on it. It doesn't even require + // you to be the superuser to make device nodes. + // +-// Warning ! `genext2fs' has been designed for embedded +-// systems. As such, it will generate a filesystem for single-user +-// usage: all files/directories/etc... will belong to UID/GID 0 +-// + // Example usage: + // + // # genext2fs -b 1440 -d srcdir /dev/fd0 +@@ -45,28 +45,24 @@ + // a new ext2 filesystem image. You can then mount the floppy as + // usual. + // +-// # genext2fs -b 1024 -d builddir -f devices.txt flashdisk.img ++// # genext2fs -b 1024 -d builddir -D device_table.txt flashdisk.img + // + // This one would build a filesystem from all the files in builddir, +-// then would read a devices list and make apropriate nodes. The +-// format for the device list is: +-// +-// drwx            /dev +-// crw-    10,190  /dev/lcd +-// brw-    1,0     /dev/ram0 +-//  +-// This device list builds the /dev directory, a character device +-// node /dev/lcd (major 10, minor 190) and a block device node +-// /dev/ram0 (major 1, minor 0) +- ++// then would read a devices table  and make apropriate nodes. The ++// format for the device list is illustrared in the device_table.txt ++// file which in included with the source +  ++#define _GNU_SOURCE + #include <stdio.h> + #include <stdlib.h> + #include <string.h> + #include <dirent.h> + #include <stdarg.h> ++#include <time.h> + #include <unistd.h> + #include <sys/stat.h> ++#include <ctype.h> ++#include <fcntl.h> +  +  +  +@@ -390,6 +386,7 @@ + #undef utdecl32 +  + char * argv0; ++int nosquash = 0; +  + // error (un)handling + inline void errexit(const char *fmt, ...) +@@ -663,14 +660,27 @@ + } +  + // link an entry (inode #) to a directory +-void add2dir(filesystem *fs, uint32 dnod, uint32 nod, const char* name) ++void add2dir(filesystem *fs, uint32 dnod, uint32 nod, const char* name, uint32 mode, uid_t uid, gid_t gid, time_t ctime) + { + 	blockwalker bw; + 	uint32 bk; + 	uint8 *b; + 	directory *d; + 	int reclen, nlen; +-	if((get_nod(fs, dnod)->i_mode & FM_IFMT) != FM_IFDIR) ++	inode *node; ++	inode *pnode; ++ ++	if (nosquash == 0) { ++	    /* Ok, squash everything */ ++	    uid = 0; ++	    gid = 0; ++	    if(!S_ISDIR(mode)) ++		mode &= ~(S_IWGRP | S_IWOTH);  ++	    mode &= ~(S_ISUID | S_ISGID);  ++	} ++	pnode = get_nod(fs, dnod); ++ ++	if(!S_ISDIR(pnode->i_mode)) + 		errexit("can't add '%s' to a non-directory", name); + 	if(!*name) + 		errexit("bad name '%s' (not meaningful)", name); +@@ -691,9 +701,16 @@ + 			if((!d->d_inode) && (d->d_rec_len >= reclen)) + 			{ + 				d->d_inode = nod; +-				get_nod(fs, nod)->i_links_count++; ++				node = get_nod(fs, nod); ++				node->i_links_count++; + 				d->d_name_len = nlen; + 				strncpy(d->d_name, name, nlen); ++				node->i_mode = mode; ++				node->i_uid = uid; ++				node->i_gid = gid; ++				node->i_atime = ctime; ++				node->i_ctime = ctime; ++				node->i_mtime = ctime; + 				return; + 			} + 			// if entry with enough room (last one?), shrink it & use it +@@ -705,9 +722,16 @@ + 				d = (directory*) (((int8*)d) + d->d_rec_len); + 				d->d_rec_len = reclen; + 				d->d_inode = nod; +-				get_nod(fs, nod)->i_links_count++; ++				node = get_nod(fs, nod); ++				node->i_links_count++; + 				d->d_name_len = nlen; + 				strncpy(d->d_name, name, nlen); ++				node->i_mode = mode; ++				node->i_uid = uid; ++				node->i_gid = gid; ++				node->i_atime = ctime; ++				node->i_ctime = ctime; ++				node->i_mtime = ctime; + 				return; + 			} + 		} +@@ -716,10 +740,17 @@ + 	b = get_workblk(); + 	d = (directory*)b; + 	d->d_inode = nod; +-	get_nod(fs, nod)->i_links_count++; ++	node = get_nod(fs, nod); ++	node->i_links_count++; + 	d->d_rec_len = BLOCKSIZE; + 	d->d_name_len = nlen; + 	strncpy(d->d_name, name, nlen); ++	node->i_mode = mode; ++	node->i_uid = uid; ++	node->i_gid = gid; ++	node->i_atime = ctime; ++	node->i_ctime = ctime; ++	node->i_mtime = ctime; + 	extend_blk(fs, dnod, b, 1); + 	get_nod(fs, dnod)->i_size += BLOCKSIZE; + 	free_workblk(b); +@@ -770,27 +801,29 @@ + } +  + // make a full-fledged directory (i.e. with "." & "..") +-uint32 mkdir_fs(filesystem *fs, uint32 parent_nod, const char *name, uint32 mode) ++uint32 mkdir_fs(filesystem *fs, uint32 parent_nod, const char *name, uint32 mode, uid_t uid, gid_t gid, time_t ctime) + { + 	uint32 nod; + 	if((nod = find_dir(fs, parent_nod, name))) + 		return nod; +        	nod = alloc_nod(fs); +-	get_nod(fs, nod)->i_mode = FM_IFDIR | mode; +-	add2dir(fs, parent_nod, nod, name); +-	add2dir(fs, nod, nod, "."); +-	add2dir(fs, nod, parent_nod, ".."); ++	if (!(mode & FM_IFDIR)) ++	    mode |= FM_IFDIR; ++	add2dir(fs, parent_nod, nod, name, mode, uid, gid, ctime); ++	add2dir(fs, nod, nod, ".", mode, uid, gid, ctime); ++	add2dir(fs, nod, parent_nod, "..", mode, uid, gid, ctime); + 	fs->gd.bg_used_dirs_count++; + 	return nod; + } +  + // make a symlink +-uint32 mklink_fs(filesystem *fs, uint32 parent_nod, const char *name, size_t size, uint8 * b) ++uint32 mklink_fs(filesystem *fs, uint32 parent_nod, const char *name, size_t size, uint8 * b, uid_t uid, gid_t gid, time_t ctime) + { ++	uint32 mode; + 	uint32 nod = alloc_nod(fs); +-	get_nod(fs, nod)->i_mode = FM_IFLNK | FM_IRWXU | FM_IRWXG | FM_IRWXO; ++	mode = FM_IFLNK | FM_IRWXU | FM_IRWXG | FM_IRWXO;  + 	get_nod(fs, nod)->i_size = size; +-	add2dir(fs, parent_nod, nod, name); ++	add2dir(fs, parent_nod, nod, name, mode, uid, gid, ctime); + 	if(size <= 4 * (EXT2_TIND_BLOCK+1)) + 	{ + 		strncpy((char*)get_nod(fs, nod)->i_block, (char*)b, size); +@@ -801,13 +834,13 @@ + } +  + // make a file from a FILE* +-uint32 mkfile_fs(filesystem *fs, uint32 parent_nod, const char *name, uint32 mode, size_t size, FILE *f) ++uint32 mkfile_fs(filesystem *fs, uint32 parent_nod, const char *name, uint32 mode, size_t size, FILE *f, uid_t uid, gid_t gid, time_t ctime) + { + 	uint8 * b; + 	uint32 nod = alloc_nod(fs); +-	get_nod(fs, nod)->i_mode = FM_IFREG | mode; ++	mode |= FM_IFREG; + 	get_nod(fs, nod)->i_size = size; +-	add2dir(fs, parent_nod, nod, name); ++	add2dir(fs, parent_nod, nod, name, mode, uid, gid, ctime); + 	if(!(b = (uint8*)malloc(rndup(size, BLOCKSIZE)))) + 		errexit("not enough mem to read file '%s'", name); + 	memset(b, 0,rndup(size, BLOCKSIZE)); +@@ -824,6 +857,8 @@ + uint32 get_mode(struct stat *st) + { + 	uint32 mode = 0; ++	if (nosquash == 1) ++	    return st->st_mode; + 	if(st->st_mode & S_IRUSR) + 		mode |= FM_IRUSR | FM_IRGRP | FM_IROTH; + 	if(st->st_mode & S_IWUSR) +@@ -833,19 +868,6 @@ + 	return mode; + } +  +-// retrieves a mode info from a string +-uint32 get_modestr(const char *p) +-{ +-	uint32 mode = 0; +-	if(p[0] == 'r') +-		mode |= FM_IRUSR | FM_IRGRP | FM_IROTH; +-	if(p[1] == 'w') +-		mode |= FM_IWUSR | FM_IWGRP | FM_IWOTH; +-	if(p[2] == 'x' || p[2] == 's') +-		mode |= FM_IXUSR | FM_IXGRP | FM_IXOTH; +-	return mode; +-} +- + // basename of a path - free me + char * basename(const char * fullpath) + { +@@ -864,66 +886,6 @@ + 	return n; + } +  +-// adds entries to the filesystem from a text file +-void add2fs_from_file(filesystem *fs, uint32 this_nod, FILE * fh) +-{ +-	uint32 mode; +-	uint32 nod, nod2; +-	char cmod[11], *path, *name, *dir; +-	int major, minor; +-	while(fscanf(fh, "%10s", cmod)) +-	{ +-		if(feof(fh)) +-			break; +-		mode = get_modestr(cmod + 1); +-		switch(*cmod) +-		{ +-			case 'd': +-				fscanf(fh, "%" SCANF_PREFIX "s\n", SCANF_STRING(path)); +-				break; +-			case 'c': +-				mode |= FM_IFCHR; +-				fscanf(fh, "%i, %i %" SCANF_PREFIX "s\n", &major, &minor, SCANF_STRING(path)); +-				break; +-			case 'b': +-				mode |= FM_IFBLK; +-				fscanf(fh, "%i, %i %" SCANF_PREFIX "s\n", &major, &minor, SCANF_STRING(path)); +-				break; +-			case '#': +-				while(fgetc(fh) != '\n'); +-				continue; +-			default: +-				errexit("malformed text input file"); +-		} +-		name = basename(path); +-		dir = dirname(path); +-		free(path); +-		if(!(nod = find_path(fs, this_nod, dir))) +-			errexit("can't find directory '%s' to create '%s''", dir, name); +-		free(dir); +-		if((!strcmp(name, ".")) || (!strcmp(name, ".."))) +-		{ +-			free(name); +-			continue; +-		} +-		switch(*cmod) +-		{ +-			case 'd': +-				mkdir_fs(fs, nod, name, mode); +-				break; +-			case 'c': +-			case 'b': +-				nod2 = alloc_nod(fs); +-				get_nod(fs, nod2)->i_mode = mode; +-				((uint8*)get_nod(fs, nod2)->i_block)[0] = minor; +-				((uint8*)get_nod(fs, nod2)->i_block)[1] = major; +-				add2dir(fs, nod, nod2, name); +-				break; +-		} +-		free(name); +-	} +-} +- + // adds a tree of entries to the filesystem from current dir + void add2fs_from_dir(filesystem *fs, uint32 this_nod) + { +@@ -948,24 +910,24 @@ + 				get_nod(fs, nod)->i_mode = (((st.st_mode & S_IFMT) == S_IFCHR) ? FM_IFCHR : FM_IFBLK) | get_mode(&st); + 				((uint8*)get_nod(fs, nod)->i_block)[0] = (st.st_rdev & 0xff); + 				((uint8*)get_nod(fs, nod)->i_block)[1] = (st.st_rdev >> 8); +-				add2dir(fs, this_nod, nod, dent->d_name); ++				add2dir(fs, this_nod, nod, dent->d_name, st.st_mode, st.st_uid, st.st_gid, st.st_ctime); + 				break; + 			case S_IFLNK: + 				if(!(b = (uint8*)malloc(rndup(st.st_size, BLOCKSIZE)))) + 					errexit("out of memory"); + 				if(readlink(dent->d_name, (char*)b, st.st_size) < 0) + 					pexit(dent->d_name); +-				mklink_fs(fs, this_nod, dent->d_name, st.st_size, b); ++				mklink_fs(fs, this_nod, dent->d_name, st.st_size, b, st.st_uid, st.st_gid, st.st_ctime); + 				free(b); + 				break; + 			case S_IFREG: + 				if(!(fh = fopen(dent->d_name, "r"))) + 					pexit(dent->d_name); +-				mkfile_fs(fs, this_nod, dent->d_name, get_mode(&st), st.st_size, fh); ++				mkfile_fs(fs, this_nod, dent->d_name, st.st_mode, st.st_size, fh, st.st_uid, st.st_gid, st.st_ctime); + 				fclose(fh); + 				break; + 			case S_IFDIR: +-				nod = mkdir_fs(fs, this_nod, dent->d_name, get_mode(&st)); ++				nod = mkdir_fs(fs, this_nod, dent->d_name, st.st_mode, st.st_uid, st.st_gid, st.st_ctime); + 				if(chdir(dent->d_name) < 0) + 					pexit(dent->d_name); + 				add2fs_from_dir(fs, nod); +@@ -983,7 +945,7 @@ + { + 	int i; + 	int nblk = nod->i_blocks / INOBLK; +-	if((nod->i_size && !nblk) || (nod->i_mode & (FM_IFBLK | FM_IFCHR))) ++	if(nod->i_size && !nblk) + 		for(i = 0; i <= EXT2_TIND_BLOCK; i++) + 			nod->i_block[i] = swab32(nod->i_block[i]); + 	if(nblk <= EXT2_IND_BLOCK) +@@ -1004,7 +966,7 @@ + { + 	int i; + 	int nblk = nod->i_blocks / INOBLK; +-	if((nod->i_size && !nblk) || (nod->i_mode & (FM_IFBLK | FM_IFCHR))) ++	if(nod->i_size && !nblk) + 		for(i = 0; i <= EXT2_TIND_BLOCK; i++) + 			nod->i_block[i] = swab32(nod->i_block[i]); + 	if(nblk <= EXT2_IND_BLOCK) +@@ -1147,7 +1109,7 @@ + 	// make lost+found directory and reserve blocks + 	if(fs->sb.s_r_blocks_count) + 	{ +-		nod = mkdir_fs(fs, EXT2_ROOT_INO, "lost+found", FM_IRWXU | FM_IRWXG | FM_IRWXO); ++		nod = mkdir_fs(fs, EXT2_ROOT_INO, "lost+found", S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH, 0, 0, time(NULL)); + 		memset(b, 0, BLOCKSIZE); + 		((directory*)b)->d_rec_len = BLOCKSIZE; + 		for(i = 1; i < fs->sb.s_r_blocks_count; i++) +@@ -1472,6 +1434,150 @@ + 		swap_badfs(fs); + } +  ++char *simple_ltoa(unsigned long i) ++{ ++    /* 21 digits plus null terminator, good for 64-bit or smaller ints */ ++    static char local[21]; ++    char *p = local; ++    *p-- = '\0'; ++    do { ++	*p-- = '0' + i % 10; ++	i /= 10; ++    } while (i > 0); ++    return p + 1; ++} ++ ++//# device list table ++//# <path>	<type> <mode>	<uid>	<gid>	<major>	<minor>	<start>	<inc>	<count> ++///dev/mem	c	640	0	0	1	1	0	0	- ++static int interpret_table_entry(filesystem *fs, char *line) ++{ ++	int status; ++	char type, *path; ++	uint32 nod, nod2; ++	char *name, *dir; ++	unsigned long uid=0, gid=0, mode=755; ++	unsigned long major=0, minor=0, start=0, increment=1, count=0; ++ ++	status = sscanf(line, "%" SCANF_PREFIX "s %c %lo %lu %lu %lu %lu %lu %lu %lu",  ++		    SCANF_STRING(path), &type, &mode, &uid, &gid, &major, &minor,  ++		    &start, &increment, &count);  ++	if (status<0) ++		return status; ++	 ++	name = basename(path); ++	dir = dirname(path); ++	free(path); ++	if(!(nod = find_path(fs, EXT2_ROOT_INO, dir))) ++		errexit("can't find directory '%s' to create '%s''", dir, name); ++	free(dir); ++	if((!strcmp(name, ".")) || (!strcmp(name, ".."))) ++	{ ++		free(name); ++		return 1; ++	} ++	 ++	switch(type) ++	{ ++		case 'd': ++			mkdir_fs(fs, nod, name, mode|FM_IFDIR, uid, gid, time(NULL)); ++			break; ++		case 'c': ++		case 'b': ++			mode|= (type=='c')? FM_IFCHR : FM_IFBLK; ++			if (count > 0) { ++			    int i, last; ++			    char buf[80]; ++			    last = start+(count*increment); ++			    for(i = start; i<last; i++) { ++				nod2 = alloc_nod(fs); ++				((uint8*)get_nod(fs, nod2)->i_block)[0] = minor+(i*increment-start); ++				((uint8*)get_nod(fs, nod2)->i_block)[1] = major; ++				strncpy(buf, name, sizeof(buf)-1); ++				strncat(buf, simple_ltoa(i*increment), sizeof(buf)-1); ++				buf[79]='\0'; ++				//fprintf(stderr, "start=%ld, i=%d adding '%s'(%ld, %ld)\n", start, i, buf, major, minor+(i*increment-start)); ++				add2dir(fs, nod, nod2, buf, mode, uid, gid, time(NULL)); ++			    } ++			} ++			else { ++			    nod2 = alloc_nod(fs); ++			    ((uint8*)get_nod(fs, nod2)->i_block)[0] = minor; ++			    ((uint8*)get_nod(fs, nod2)->i_block)[1] = major; ++			    add2dir(fs, nod, nod2, name, mode, uid, gid, time(NULL)); ++			} ++			break; ++		default: ++			fprintf(stderr,"%s: Type '%c' is not supported\n", path, type); ++ ++	} ++	free(name); ++	return 0; ++} ++ ++int parse_device_table(filesystem *fs, char *filename) ++{ ++	FILE *file; ++	char *line; ++	int status = 0; ++	size_t length = 0; ++	struct stat statbuf; ++ ++	if (!filename) { ++		fprintf(stderr, "No filename specified.\n"); ++		return(1); ++	} ++	if (!(file = fopen(filename, "r"))) { ++		perror(filename); ++		return(1); ++	} ++	if (fstat(fileno(file), &statbuf) < 0) { ++		perror(filename); ++		return(1); ++	} ++ ++	if (statbuf.st_size < 10) { ++		fprintf(stderr, "%s: not a proper device table file\n", filename); ++		return(1); ++	} ++ ++	/* Looks ok so far.  The general plan now is to read in one ++	 * line at a time, check for leading comment delimiters ('#'), ++	 * then try and parse the line as a device table.  If we fail ++	 * to parse things, try and help the poor fool to fix their ++	 * device table with a useful error msg... */ ++	line = NULL; ++	while (getline(&line, &length, file) != -1) { ++		/* First trim off any whitespace */ ++		int len = strlen(line); ++		/* trim trailing whitespace */ ++		while ( len > 0 && isspace(line[len-1])) ++		    line[--len]='\0'; ++		/* trim leading whitespace */ ++		memmove(line, &line[strspn(line, " \n\r\t\v")], len); ++ ++		/* If this is NOT a comment line, try to interpret it */ ++		if (length && *line!='#') { ++			if (interpret_table_entry(fs, line)) ++				status=1; ++		} ++ ++		free(line); ++		line = NULL; ++	} ++ ++ ++	return status; ++} ++ ++/* ++Local Variables: ++c-file-style: "linux" ++c-basic-offset: 4 ++tab-width: 4 ++End: ++*/ ++ + void showhelp(void) + { + 	fprintf(stderr, "Usage: %s [options] image\n" +@@ -1485,6 +1591,8 @@ + 	"  -g path                 Generate a block map file for this path\n" + 	"  -e value                Fill unallocated blocks with value\n" + 	"  -z                      Make files with holes\n" ++	"  -n                      Do not squash permissions and owners.  By default everythig is\n" ++	"                              owned by root.  This perserves file permissions and owners.\n" + 	"  -v                      Print resulting filesystem structure\n" + 	"  -h                      Show this help\n\n" + 	"Example of spec file:\n" +@@ -1520,22 +1628,21 @@ + 	int bigendian = !*(char*)&endian; + 	filesystem *fs; + 	int i; +-	int c; ++	char c; ++	char * devtable = NULL; +  + 	argv0 = argv[0]; +-	if(argc <= 1) +-	{ +-		showhelp(); +-		exit(1); +-	} +-	while((c = getopt(argc, argv, "x:f:d:b:i:r:g:e:zvh")) != EOF) ++	while((c = getopt(argc, argv, "D:x:f:d:b:i:r:g:e:zvhn")) != EOF) + 		switch(c) + 		{ + 			case 'x': + 				fsin = optarg; + 				break; +-			case 'd': ++			case 'D': + 			case 'f': ++				devtable = optarg; ++				break; ++			case 'd': + 				dopt[didx++] = optarg; + 				break; + 			case 'b': +@@ -1556,6 +1663,9 @@ + 			case 'z': + 				holes = 1; + 				break; ++			case 'n': ++				nosquash = 1; ++				break; + 			case 'v': + 				verbose = 1; + 				break; +@@ -1595,17 +1705,10 @@ + 	for(i = 0; i < didx; i++) + 	{ + 		struct stat st; +-		FILE *fh; + 		char *pdir; + 		stat(dopt[i], &st); + 		switch(st.st_mode & S_IFMT) + 		{ +-			case S_IFREG: +-				if(!(fh = fopen(dopt[i], "r"))) +-					pexit(dopt[i]); +-				add2fs_from_file(fs, EXT2_ROOT_INO, fh); +-				fclose(fh); +-				break; + 			case S_IFDIR: + 				if(!(pdir = getcwd(0, GETCWD_SIZE))) + 					pexit(dopt[i]); +@@ -1617,13 +1720,15 @@ + 				free(pdir); + 				break; + 			default: +-				errexit("%s in neither a file nor a directory", dopt[i]); ++				errexit("%s must be a directory", dopt[i]); + 		} + 	} + 	if(emptyval) + 		for(i = 1; i < fs->sb.s_blocks_count; i++) + 			if(!allocated(fs->bbm, i)) + 				memset(get_blk(fs, i), emptyval, BLOCKSIZE); ++	if(devtable) ++	    parse_device_table(fs, devtable); + 	if(verbose) + 		print_fs(fs); + 	for(i = 0; i < gidx; i++) diff --git a/sources/linux-uml.config b/sources/linux-uml.config index 3a358048b..02b1e511c 100644 --- a/sources/linux-uml.config +++ b/sources/linux-uml.config @@ -31,6 +31,11 @@ CONFIG_HOSTFS=y  CONFIG_MCONSOLE=y  CONFIG_MAGIC_SYSRQ=y  # CONFIG_HOST_2G_2G is not set +# CONFIG_UML_SMP is not set +# CONFIG_SMP is not set +CONFIG_CON_ZERO_CHAN="fd:0,fd:1" +CONFIG_CON_CHAN="xterm" +CONFIG_SSL_CHAN="pty"  #  # Loadable module support @@ -49,6 +54,15 @@ CONFIG_BLK_DEV_RAM=y  CONFIG_BLK_DEV_RAM_SIZE=4096  CONFIG_BLK_DEV_INITRD=y  # CONFIG_MMAPPER is not set +# CONFIG_UML_SOUND is not set +# CONFIG_SOUND is not set +# CONFIG_HOSTAUDIO is not set +CONFIG_FD_CHAN=y +CONFIG_NULL_CHAN=y +CONFIG_PORT_CHAN=y +CONFIG_PTY_CHAN=y +CONFIG_TTY_CHAN=y +CONFIG_XTERM_CHAN=y  #  # Networking options @@ -283,6 +297,7 @@ CONFIG_NLS_CODEPAGE_932=m  CONFIG_NLS_CODEPAGE_949=m  CONFIG_NLS_CODEPAGE_874=m  CONFIG_NLS_ISO8859_8=m +# CONFIG_NLS_CODEPAGE_1250 is not set  CONFIG_NLS_CODEPAGE_1251=m  CONFIG_NLS_ISO8859_1=y  CONFIG_NLS_ISO8859_2=m @@ -300,6 +315,23 @@ CONFIG_NLS_KOI8_U=m  CONFIG_NLS_UTF8=m  # +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set +# CONFIG_BLK_DEV_MD is not set +# CONFIG_MD_LINEAR is not set +# CONFIG_MD_RAID0 is not set +# CONFIG_MD_RAID1 is not set +# CONFIG_MD_RAID5 is not set +# CONFIG_MD_MULTIPATH is not set +# CONFIG_BLK_DEV_LVM is not set + +# +# Memory Technology Devices (MTD) +# +# CONFIG_MTD is not set + +#  # Kernel hacking  #  # CONFIG_DEBUG_SLAB is not set diff --git a/sources/skel.tar b/sources/skel.tar Binary files differdeleted file mode 100644 index 592d85e37..000000000 --- a/sources/skel.tar +++ /dev/null diff --git a/sources/skel.tar.gz b/sources/skel.tar.gz Binary files differnew file mode 100644 index 000000000..b351737c8 --- /dev/null +++ b/sources/skel.tar.gz diff --git a/sources/target_skeleton/etc/group b/sources/target_skeleton/etc/group index becc56cb4..a21ef0f76 100644 --- a/sources/target_skeleton/etc/group +++ b/sources/target_skeleton/etc/group @@ -1,18 +1,10 @@  root:x:0: -wheel:x:10: -bin:x:1:bin,daemon -daemon:x:2:bin,daemon -sys:x:3:bin,adm -adm:x:4:adm,daemon +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4:  tty:x:5:  disk:x:6: -lp:x:7:daemon,lp -mem:x:8: -kmem:x:9: -operator:x:11: -uucp:x:14:uucp -dip:x:40: -utmp:x:45: -www:x:63: -nobody:x:65534: -users:x:100: +utmp:x:43: +staff:x:50: +default:x:1000: diff --git a/sources/target_skeleton/etc/init.d/S05ramdisk1 b/sources/target_skeleton/etc/init.d/S05ramdisk1 deleted file mode 100755 index b8a6d70ad..000000000 --- a/sources/target_skeleton/etc/init.d/S05ramdisk1 +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/sh - -# Build a ramdisk to overlay on /dev so we can scribble on it -# all we want without needing rw access to the underlying filesystem - -SIZE=140 -INODES=1000 - -echo -n "Building device ramdisk: " - -/bin/umount /dev/ram1 >/dev/null 2>&1 - -/bin/dd if=/dev/zero of=/dev/ram1 bs=1k count=$SIZE >/dev/null 2>&1 -if [ $? != 0 ] ; then -	echo "failed." -	exit 1; -fi - -/sbin/mkfs.minix -n30 -i$INODES /dev/ram1 $SIZE >/dev/null 2>&1 -if [ $? != 0 ] ; then -	echo "failed." -	exit 1; -fi - -/bin/mount /dev/ram1 /mnt -t minix -o rw >/dev/null 2>&1 -if [ $? != 0 ] ; then -	echo "failed." -	exit 1; -fi - -/bin/cp -a /dev/* /mnt >/dev/null 2>&1 -if [ $? != 0 ] ; then -	echo "failed." -	exit 1; -fi - -/bin/umount /mnt >/dev/null 2>&1 -if [ $? != 0 ] ; then -	echo "failed." -	exit 1; -fi - -/bin/mount /dev/ram1 /dev -t minix -o rw >/dev/null 2>&1 -if [ $? != 0 ] ; then -	echo "failed." -	exit 1; -else -	echo "done."  -fi - -exit 0 diff --git a/sources/target_skeleton/etc/init.d/S20syslogd b/sources/target_skeleton/etc/init.d/S20syslogd deleted file mode 100755 index a88a6ff07..000000000 --- a/sources/target_skeleton/etc/init.d/S20syslogd +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -echo -n "Starting system log daemon: " -# start syslogging -/sbin/syslogd -m 0 -echo "ok" - - diff --git a/sources/target_skeleton/etc/init.d/S50hostname b/sources/target_skeleton/etc/init.d/S50hostname deleted file mode 100755 index 7437bc2de..000000000 --- a/sources/target_skeleton/etc/init.d/S50hostname +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -hostname tester.dev.null diff --git a/sources/target_skeleton/etc/init.d/S50networking b/sources/target_skeleton/etc/init.d/S50networking new file mode 100755 index 000000000..7104f3321 --- /dev/null +++ b/sources/target_skeleton/etc/init.d/S50networking @@ -0,0 +1,7 @@ +#!/bin/sh + +# start lo all the time +ifconfig lo 127.0.0.1 up +route add -net 127.0.0.0 netmask 255.0.0.0 lo + +hostname dev.null diff --git a/sources/target_skeleton/etc/inittab b/sources/target_skeleton/etc/inittab index f159816da..2e91bd1e6 100644 --- a/sources/target_skeleton/etc/inittab +++ b/sources/target_skeleton/etc/inittab @@ -16,15 +16,17 @@  # main rc script  ::sysinit:/etc/init.d/rcS -# main setup program -::respawn:-/bin/sh +# Set up a couple of getty's +tty1::respawn:/sbin/getty 38400 tty1 +tty2::respawn:/sbin/getty 38400 tty2 -# convenience shell -tty2::askfirst:-/bin/sh +# Put a getty on the serial port +#ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 -# set up stuff for logging -null::sysinit:/bin/dmesg > /dev/tty4 +# Logging junk +tty2::once:/bin/touch /var/log/messages  tty3::respawn:/usr/bin/tail -f /var/log/messages +tty4::once:/bin/dmesg  tty4::respawn:/usr/bin/tail -f /proc/kmsg  # Stuff to do for the 3-finger salute diff --git a/sources/target_skeleton/etc/passwd b/sources/target_skeleton/etc/passwd index 397ed3521..e7e879813 100644 --- a/sources/target_skeleton/etc/passwd +++ b/sources/target_skeleton/etc/passwd @@ -1,11 +1,12 @@ -root:x:0:0:root:/root:/bin/ash -bin:x:1:1:bin:/bin:/bin/sh -daemon:x:2:2:daemon:/usr/sbin:/bin/sh -adm:x:3:4:adm:/adm:/bin/sh -lp:x:4:7:lp:/var/spool/lpd:/bin/sh -sync:x:5:0:sync:/bin:/bin/sync -shutdown:x:6:11:shutdown:/sbin:/sbin/shutdown -halt:x:7:0:halt:/sbin:/sbin/halt -uucp:x:10:14:uucp:/var/spool/uucp:/bin/sh -operator:x:11:0:Operator:/var:/bin/sh +root:x:0:0:root:/root:/bin/sh +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:100:sync:/bin:/bin/sync +mail:x:8:8:mail:/var/spool/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +operator:x:37:37:Operator:/var:/bin/sh  nobody:x:65534:65534:nobody:/home:/bin/sh +default:x:1000:1000:Default non-root user:/home/default:/bin/sh diff --git a/sources/target_skeleton/etc/profile b/sources/target_skeleton/etc/profile index 8797092a9..66ef8fedf 100644 --- a/sources/target_skeleton/etc/profile +++ b/sources/target_skeleton/etc/profile @@ -1,3 +1,4 @@ +PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin  alias ll='ls -l'  echo " " diff --git a/sources/target_skeleton/etc/protocols b/sources/target_skeleton/etc/protocols index c8e983b72..b175544a4 100644 --- a/sources/target_skeleton/etc/protocols +++ b/sources/target_skeleton/etc/protocols @@ -1,21 +1,31 @@ -# protocols     This file describes the various protocols that are -#               available from the TCP/IP subsystem.  It should be -#               consulted instead of using the numbers in the ARPA -#               include files, or, worse, just guessing them. +# /etc/protocols: +# $Id: protocols,v 1.2 2002/04/26 11:45:52 andersen Exp $  # -# Version:      @(#)/etc/protocols      2.00    04/30/93 +# Internet (IP) protocols  # -# Author:       Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org> +#	from: @(#)protocols	5.1 (Berkeley) 4/17/89  # +# Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992). -ip      0       IP      # internet protocol, pseudo protocol number -icmp    1       ICMP    # internet control message protocol -igmp    2       IGMP    # internet group multicast protocol -ggp     3       GGP     # gateway-gateway protocol -tcp     6       TCP     # transmission control protocol -pup     12      PUP     # PARC universal packet protocol -udp     17      UDP     # user datagram protocol -idp     22      IDP     # WhatsThis? -raw     255     RAW     # RAW IP interface - -# End of protocols. +ip	0	IP		# internet protocol, pseudo protocol number +icmp	1	ICMP		# internet control message protocol +igmp	2	IGMP		# Internet Group Management +ggp	3	GGP		# gateway-gateway protocol +ipencap	4	IP-ENCAP	# IP encapsulated in IP (officially ``IP'') +st	5	ST		# ST datagram mode +tcp	6	TCP		# transmission control protocol +egp	8	EGP		# exterior gateway protocol +pup	12	PUP		# PARC universal packet protocol +udp	17	UDP		# user datagram protocol +hmp	20	HMP		# host monitoring protocol +xns-idp	22	XNS-IDP		# Xerox NS IDP +rdp	27	RDP		# "reliable datagram" protocol +iso-tp4	29	ISO-TP4		# ISO Transport Protocol class 4 +xtp	36	XTP		# Xpress Tranfer Protocol +ddp	37	DDP		# Datagram Delivery Protocol +idpr-cmtp	39	IDPR-CMTP	# IDPR Control Message Transport +rspf	73	RSPF		#Radio Shortest Path First. +vmtp	81	VMTP		# Versatile Message Transport +ospf	89	OSPFIGP		# Open Shortest Path First IGP +ipip	94	IPIP		# Yet Another IP encapsulation +encap	98	ENCAP		# Yet Another IP encapsulation diff --git a/sources/target_skeleton/etc/services b/sources/target_skeleton/etc/services index a030ff539..49d6e4c7c 100644 --- a/sources/target_skeleton/etc/services +++ b/sources/target_skeleton/etc/services @@ -1,147 +1,172 @@ -#       $NetBSD: services,v 1.18 1996/03/26 00:07:58 mrg Exp $ +# /etc/services: +# $Id: services,v 1.2 2002/04/26 11:45:52 andersen Exp $  #  # Network services, Internet style  #  # Note that it is presently the policy of IANA to assign a single well-known  # port number for both TCP and UDP; hence, most entries here have two entries  # even if the protocol doesn't support UDP operations. -# Updated from RFC 1340, ``Assigned Numbers'' (July 1992).  Not all ports +# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports  # are included, only the more common ones. -# -#       from: @(#)services      5.8 (Berkeley) 5/9/91 -# -tcpmux          1/tcp           # TCP port service multiplexer -echo            7/tcp -echo            7/udp -discard         9/tcp           sink null -discard         9/udp           sink null -systat          11/tcp          users -daytime         13/tcp -daytime         13/udp -netstat         15/tcp -qotd            17/tcp          quote -msp             18/tcp          # message send protocol -msp             18/udp          # message send protocol -chargen         19/tcp          ttytst source -chargen         19/udp          ttytst source -ftp-data        20/tcp          # default ftp data port -ftp             21/tcp -ssh             22/tcp -ssh             22/udp -telnet          23/tcp + +tcpmux		1/tcp				# TCP port service multiplexer +echo		7/tcp +echo		7/udp +discard		9/tcp		sink null +discard		9/udp		sink null +systat		11/tcp		users +daytime		13/tcp +daytime		13/udp +netstat		15/tcp +qotd		17/tcp		quote +msp		18/tcp				# message send protocol +msp		18/udp				# message send protocol +chargen		19/tcp		ttytst source +chargen		19/udp		ttytst source +ftp-data	20/tcp +ftp		21/tcp +fsp		21/udp		fspd +ssh		22/tcp				# SSH Remote Login Protocol +ssh		22/udp				# SSH Remote Login Protocol +telnet		23/tcp  # 24 - private -smtp            25/tcp          mail +smtp		25/tcp		mail  # 26 - unassigned -time            37/tcp          timserver -time            37/udp          timserver -rlp             39/udp          resource        # resource location -nameserver      42/tcp          name            # IEN 116 -whois           43/tcp          nicname -domain          53/tcp          nameserver      # name-domain server -domain          53/udp          nameserver -mtp             57/tcp                          # deprecated -bootps          67/tcp          # BOOTP server -bootps          67/udp -bootpc          68/tcp          # BOOTP client -bootpc          68/udp -tftp            69/udp -gopher          70/tcp          # Internet Gopher -gopher          70/udp -rje             77/tcp          netrjs -finger          79/tcp -www             80/tcp          http    # WorldWideWeb HTTP -www             80/udp                  # HyperText Transfer Protocol -link            87/tcp          ttylink -kerberos        88/tcp          krb5    # Kerberos v5 -kerberos        88/udp -supdup          95/tcp +time		37/tcp		timserver +time		37/udp		timserver +rlp		39/udp		resource	# resource location +nameserver	42/tcp		name		# IEN 116 +whois		43/tcp		nicname +re-mail-ck	50/tcp				# Remote Mail Checking Protocol +re-mail-ck	50/udp				# Remote Mail Checking Protocol +domain		53/tcp		nameserver	# name-domain server +domain		53/udp		nameserver +mtp		57/tcp				# deprecated +bootps		67/tcp				# BOOTP server +bootps		67/udp +bootpc		68/tcp				# BOOTP client +bootpc		68/udp +tftp		69/udp +gopher		70/tcp				# Internet Gopher +gopher		70/udp +rje		77/tcp		netrjs +finger		79/tcp +www		80/tcp		http		# WorldWideWeb HTTP +www		80/udp				# HyperText Transfer Protocol +link		87/tcp		ttylink +kerberos	88/tcp		kerberos5 krb5	# Kerberos v5 +kerberos	88/udp		kerberos5 krb5	# Kerberos v5 +supdup		95/tcp  # 100 - reserved -hostnames       101/tcp         hostname        # usually from sri-nic -iso-tsap        102/tcp         tsap            # part of ISODE. -csnet-ns        105/tcp         cso-ns  # also used by CSO name server -csnet-ns        105/udp         cso-ns -rtelnet         107/tcp         # Remote Telnet -rtelnet         107/udp -pop2            109/tcp         pop-2 postoffice        # POP version 2 -pop2            109/udp -pop3            110/tcp         pop-3 # POP version 3 -pop3            110/udp -sunrpc          111/tcp -sunrpc          111/udp -auth            113/tcp         authentication tap ident -sftp            115/tcp -uucp-path       117/tcp -nntp            119/tcp         readnews untp   # USENET News Transfer Protocol -ntp             123/tcp -ntp             123/udp                         # Network Time Protocol -netbios-ns      137/tcp                         # NETBIOS Name Service -netbios-ns      137/udp -netbios-dgm     138/tcp                         # NETBIOS Datagram Service -netbios-dgm     138/udp -netbios-ssn     139/tcp                         # NETBIOS session service -netbios-ssn     139/udp -imap2           143/tcp         imap            # Interim Mail Access Proto v2 -imap2           143/udp -snmp            161/udp                         # Simple Net Mgmt Proto -snmp-trap       162/udp         snmptrap        # Traps for SNMP -cmip-man        163/tcp                         # ISO mgmt over IP (CMOT) -cmip-man        163/udp -cmip-agent      164/tcp -cmip-agent      164/udp -xdmcp           177/tcp                         # X Display Mgr. Control Proto -xdmcp           177/udp -nextstep        178/tcp         NeXTStep NextStep       # NeXTStep window -nextstep        178/udp         NeXTStep NextStep       # server -bgp             179/tcp                         # Border Gateway Proto. -bgp             179/udp -prospero        191/tcp                         # Cliff Neuman's Prospero -prospero        191/udp -irc             194/tcp                         # Internet Relay Chat -irc             194/udp -smux            199/tcp                         # SNMP Unix Multiplexer -smux            199/udp -at-rtmp         201/tcp                         # AppleTalk routing -at-rtmp         201/udp -at-nbp          202/tcp                         # AppleTalk name binding -at-nbp          202/udp -at-echo         204/tcp                         # AppleTalk echo -at-echo         204/udp -at-zis          206/tcp                         # AppleTalk zone information -at-zis          206/udp -z3950           210/tcp         wais            # NISO Z39.50 database -z3950           210/udp         wais -ipx             213/tcp                         # IPX -ipx             213/udp -imap3           220/tcp                         # Interactive Mail Access -imap3           220/udp                         # Protocol v3 -ulistserv       372/tcp                         # UNIX Listserv -ulistserv       372/udp +hostnames	101/tcp		hostname	# usually from sri-nic +iso-tsap	102/tcp		tsap		# part of ISODE. +csnet-ns	105/tcp		cso-ns		# also used by CSO name server +csnet-ns	105/udp		cso-ns +# unfortunately the poppassd (Eudora) uses a port which has already +# been assigned to a different service. We list the poppassd as an +# alias here. This should work for programs asking for this service. +# (due to a bug in inetd the 3com-tsmux line is disabled) +#3com-tsmux	106/tcp		poppassd +#3com-tsmux	106/udp		poppassd +rtelnet		107/tcp				# Remote Telnet +rtelnet		107/udp +pop-2		109/tcp		postoffice	# POP version 2 +pop-2		109/udp +pop-3		110/tcp				# POP version 3 +pop-3		110/udp +sunrpc		111/tcp		portmapper	# RPC 4.0 portmapper TCP +sunrpc		111/udp		portmapper	# RPC 4.0 portmapper UDP +auth		113/tcp		authentication tap ident +sftp		115/tcp +uucp-path	117/tcp +nntp		119/tcp		readnews untp	# USENET News Transfer Protocol +ntp		123/tcp +ntp		123/udp				# Network Time Protocol +netbios-ns	137/tcp				# NETBIOS Name Service +netbios-ns	137/udp +netbios-dgm	138/tcp				# NETBIOS Datagram Service +netbios-dgm	138/udp +netbios-ssn	139/tcp				# NETBIOS session service +netbios-ssn	139/udp +imap2		143/tcp				# Interim Mail Access Proto v2 +imap2		143/udp +snmp		161/udp				# Simple Net Mgmt Proto +snmp-trap	162/udp		snmptrap	# Traps for SNMP +cmip-man	163/tcp				# ISO mgmt over IP (CMOT) +cmip-man	163/udp +cmip-agent	164/tcp +cmip-agent	164/udp +xdmcp		177/tcp				# X Display Mgr. Control Proto +xdmcp		177/udp +nextstep	178/tcp		NeXTStep NextStep	# NeXTStep window +nextstep	178/udp		NeXTStep NextStep	# server +bgp		179/tcp				# Border Gateway Proto. +bgp		179/udp +prospero	191/tcp				# Cliff Neuman's Prospero +prospero	191/udp +irc		194/tcp				# Internet Relay Chat +irc		194/udp +smux		199/tcp				# SNMP Unix Multiplexer +smux		199/udp +at-rtmp		201/tcp				# AppleTalk routing +at-rtmp		201/udp +at-nbp		202/tcp				# AppleTalk name binding +at-nbp		202/udp +at-echo		204/tcp				# AppleTalk echo +at-echo		204/udp +at-zis		206/tcp				# AppleTalk zone information +at-zis		206/udp +qmtp		209/tcp				# The Quick Mail Transfer Protocol +qmtp		209/udp				# The Quick Mail Transfer Protocol +z3950		210/tcp		wais		# NISO Z39.50 database +z3950		210/udp		wais +ipx		213/tcp				# IPX +ipx		213/udp +imap3		220/tcp				# Interactive Mail Access +imap3		220/udp				# Protocol v3 +ulistserv	372/tcp				# UNIX Listserv +ulistserv	372/udp +https		443/tcp				# MCom +https		443/udp				# MCom +snpp		444/tcp				# Simple Network Paging Protocol +snpp		444/udp				# Simple Network Paging Protocol +saft		487/tcp				# Simple Asynchronous File Transfer +saft		487/udp				# Simple Asynchronous File Transfer +npmp-local	610/tcp		dqs313_qmaster	# npmp-local / DQS +npmp-local	610/udp		dqs313_qmaster	# npmp-local / DQS +npmp-gui	611/tcp		dqs313_execd	# npmp-gui / DQS +npmp-gui	611/udp		dqs313_execd	# npmp-gui / DQS +hmmp-ind	612/tcp		dqs313_intercell# HMMP Indication / DQS +hmmp-ind	612/udp		dqs313_intercell# HMMP Indication / DQS  #  # UNIX specific services  # -exec            512/tcp -biff            512/udp         comsat -login           513/tcp -who             513/udp         whod -shell           514/tcp         cmd             # no passwords used -syslog          514/udp -printer         515/tcp         spooler         # line printer spooler -talk            517/udp -ntalk           518/udp -route           520/udp         router routed   # RIP -timed           525/udp         timeserver -tempo           526/tcp         newdate -courier         530/tcp         rpc -conference      531/tcp         chat -netnews         532/tcp         readnews -netwall         533/udp                         # -for emergency broadcasts -uucp            540/tcp         uucpd           # uucp daemon -remotefs        556/tcp         rfs_server rfs  # Brunhoff remote filesystem -# -webster         765/tcp                         # Network dictionary -webster         765/udp -# temporary entry (not officially registered by the Samba Team!) -swat            901/tcp         # Samba Web Administration Tool +exec		512/tcp +biff		512/udp		comsat +login		513/tcp +who		513/udp		whod +shell		514/tcp		cmd		# no passwords used +syslog		514/udp +printer		515/tcp		spooler		# line printer spooler +talk		517/udp +ntalk		518/udp +route		520/udp		router routed	# RIP +timed		525/udp		timeserver +tempo		526/tcp		newdate +courier		530/tcp		rpc +conference	531/tcp		chat +netnews		532/tcp		readnews +netwall		533/udp				# -for emergency broadcasts +uucp		540/tcp		uucpd		# uucp daemon +afpovertcp	548/tcp				# AFP over TCP +afpovertcp	548/udp				# AFP over TCP +remotefs	556/tcp		rfs_server rfs	# Brunhoff remote filesystem +klogin		543/tcp				# Kerberized `rlogin' (v5) +kshell		544/tcp		krcmd		# Kerberized `rsh' (v5) +kerberos-adm	749/tcp				# Kerberos `kadmin' (v5) +# +webster		765/tcp				# Network dictionary +webster		765/udp  #  # From ``Assigned Numbers'':  # @@ -157,37 +182,116 @@ swat            901/tcp         # Samba Web Administration Tool  #> does register or list uses of these ports as a convienence to the  #> community.  # -ingreslock      1524/tcp -ingreslock      1524/udp -prospero-np     1525/tcp                # Prospero non-privileged -prospero-np     1525/udp -rfe             5002/tcp                # Radio Free Ethernet -rfe             5002/udp                # Actually uses UDP only +ingreslock	1524/tcp +ingreslock	1524/udp +prospero-np	1525/tcp			# Prospero non-privileged +prospero-np	1525/udp +datametrics	1645/tcp	old-radius	# datametrics / old radius entry +datametrics	1645/udp	old-radius	# datametrics / old radius entry +sa-msg-port	1646/tcp	old-radacct	# sa-msg-port / old radacct entry +sa-msg-port	1646/udp	old-radacct	# sa-msg-port / old radacct entry +radius		1812/tcp			# Radius +radius		1812/udp			# Radius +radacct		1813/tcp			# Radius Accounting +radacct		1813/udp			# Radius Accounting +cvspserver	2401/tcp			# CVS client/server operations +cvspserver	2401/udp			# CVS client/server operations +mysql		3306/tcp			# MySQL +mysql		3306/udp			# MySQL +rfe		5002/tcp			# Radio Free Ethernet +rfe		5002/udp			# Actually uses UDP only +cfengine	5308/tcp			# CFengine +cfengine	5308/udp			# CFengine +bbs		7000/tcp			# BBS service  #  #  # Kerberos (Project Athena/MIT) services -# Note that these are for Kerberos v4, and are unofficial. -# -klogin          543/tcp                 # Kerberos `rlogin' -kshell          544/tcp         krcmd   # Kerberos `rsh' -kerberos-adm    749/tcp                 # Kerberos `kadmin' (v5) -kerberos4       750/udp         kdc     # Kerberos (server) udp -kerberos4       750/tcp         kdc     # Kerberos (server) tcp -kerberos-master 751/udp                 # Kerberos admin server udp -kerberos-master 751/tcp                 # Kerberos admin server tcp -krbupdate       760/tcp         kreg    # BSD Kerberos registration -kpasswd         761/tcp         kpwd    # BSD Kerberos `passwd' -eklogin         2105/tcp                # Kerberos encrypted `rlogin' +# Note that these are for Kerberos v4, and are unofficial.  Sites running +# v4 should uncomment these and comment out the v5 entries above. +# +kerberos4	750/udp		kerberos-iv kdc	# Kerberos (server) udp +kerberos4	750/tcp		kerberos-iv kdc	# Kerberos (server) tcp +kerberos_master	751/udp				# Kerberos authentication +kerberos_master	751/tcp				# Kerberos authentication +passwd_server	752/udp				# Kerberos passwd server +krb_prop	754/tcp				# Kerberos slave propagation +krbupdate	760/tcp		kreg		# Kerberos registration +kpasswd		761/tcp		kpwd		# Kerberos "passwd" +kpop		1109/tcp			# Pop with Kerberos +knetd		2053/tcp			# Kerberos de-multiplexor +zephyr-srv	2102/udp			# Zephyr server +zephyr-clt	2103/udp			# Zephyr serv-hm connection +zephyr-hm	2104/udp			# Zephyr hostmanager +eklogin		2105/tcp			# Kerberos encrypted rlogin  #  # Unofficial but necessary (for NetBSD) services  # -supfilesrv      871/tcp                 # SUP server -supfiledbg      1127/tcp                # SUP debugging +supfilesrv	871/tcp				# SUP server +supfiledbg	1127/tcp			# SUP debugging +# +# Datagram Delivery Protocol services  # -# AppleTalk DDP entries (DDP: Datagram Delivery Protocol) +rtmp		1/ddp				# Routing Table Maintenance Protocol +nbp		2/ddp				# Name Binding Protocol +echo		4/ddp				# AppleTalk Echo Protocol +zip		6/ddp				# Zone Information Protocol  # -rtmp            1/ddp                   # Routing Table Maintenance Protocol -nbp             2/ddp                   # Name Binding Protocol -echo            4/ddp                   # AppleTalk Echo Protocol -zip             6/ddp                   # Zone Information Protocol +# Services added for the Debian GNU/Linux distribution +poppassd	106/tcp				# Eudora +poppassd	106/udp				# Eudora +mailq		174/tcp				# Mailer transport queue for Zmailer +mailq		174/tcp				# Mailer transport queue for Zmailer +omirr		808/tcp		omirrd		# online mirror +omirr		808/udp		omirrd		# online mirror +rmtcfg		1236/tcp			# Gracilis Packeten remote config server +xtel		1313/tcp			# french minitel +coda_opcons	1355/udp			# Coda opcons            (Coda fs) +coda_venus	1363/udp			# Coda venus             (Coda fs) +coda_auth	1357/udp			# Coda auth              (Coda fs) +coda_udpsrv	1359/udp			# Coda udpsrv            (Coda fs) +coda_filesrv	1361/udp			# Coda filesrv           (Coda fs) +codacon		1423/tcp	venus.cmu	# Coda Console           (Coda fs) +coda_aux1	1431/tcp			# coda auxiliary service (Coda fs) +coda_aux1	1431/udp			# coda auxiliary service (Coda fs) +coda_aux2	1433/tcp			# coda auxiliary service (Coda fs) +coda_aux2	1433/udp			# coda auxiliary service (Coda fs) +coda_aux3	1435/tcp			# coda auxiliary service (Coda fs) +coda_aux3	1435/udp			# coda auxiliary service (Coda fs) +cfinger		2003/tcp			# GNU Finger +afbackup	2988/tcp			# Afbackup system +afbackup	2988/udp			# Afbackup system +icp		3130/tcp			# Internet Cache Protocol (Squid) +icp		3130/udp			# Internet Cache Protocol (Squid) +postgres	5432/tcp			# POSTGRES +postgres	5432/udp			# POSTGRES +fax		4557/tcp			# FAX transmission service        (old) +hylafax		4559/tcp			# HylaFAX client-server protocol  (new) +noclog		5354/tcp			# noclogd with TCP (nocol) +noclog		5354/udp			# noclogd with UDP (nocol) +hostmon		5355/tcp			# hostmon uses TCP (nocol) +hostmon		5355/udp			# hostmon uses TCP (nocol) +ircd		6667/tcp			# Internet Relay Chat +ircd		6667/udp			# Internet Relay Chat +webcache	8080/tcp			# WWW caching service +webcache	8080/udp			# WWW caching service +tproxy		8081/tcp			# Transparent Proxy +tproxy		8081/udp			# Transparent Proxy +mandelspawn	9359/udp	mandelbrot	# network mandelbrot +amanda		10080/udp			# amanda backup services +amandaidx	10082/tcp			# amanda backup services +amidxtape	10083/tcp			# amanda backup services +isdnlog		20011/tcp			# isdn logging system +isdnlog		20011/udp			# isdn logging system +vboxd		20012/tcp			# voice box system +vboxd		20012/udp			# voice box system +binkp           24554/tcp			# Binkley +binkp           24554/udp			# Binkley +asp		27374/tcp			# Address Search Protocol +asp		27374/udp			# Address Search Protocol +tfido           60177/tcp			# Ifmail +tfido           60177/udp			# Ifmail +fido            60179/tcp			# Ifmail +fido            60179/udp			# Ifmail + +# Local services diff --git a/sources/target_skeleton/etc/shadow b/sources/target_skeleton/etc/shadow index d2cccb998..4941a1ac5 100644 --- a/sources/target_skeleton/etc/shadow +++ b/sources/target_skeleton/etc/shadow @@ -9,3 +9,4 @@ halt:*:10933:0:99999:7:::  uucp:*:10933:0:99999:7:::  operator:*:10933:0:99999:7:::  nobody:*:10933:0:99999:7::: +default::10933:0:99999:7::: diff --git a/sources/uClibc-Config.awk b/sources/uClibc-Config.awk deleted file mode 100644 index c265535a3..000000000 --- a/sources/uClibc-Config.awk +++ /dev/null @@ -1,11 +0,0 @@ -BEGIN { FS=" =";  -        REG1="DODEBUG|INCLUDE_RPC|DOPIC"; -        REG2="DOLFS"; -} -{   -   if ($0 ~ "^" REG1)  -     { print $1 " = false" }  -   else if ($0 ~ "^" REG2) -     { print $1 " = true" } -   else { print $0 }  -}  | 
