From 08782ae7d8812933ad3f932132955ea1c0fb1e52 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Fri, 26 Apr 2002 11:45:55 +0000 Subject: [PATCH] Major rework --- .cvsignore | 2 + Makefile | 299 +++---- busybox.mk | 62 -- boa.mk => make/boa.mk | 0 make/busybox.mk | 47 + make/ext2root.mk | 53 ++ make/tinylogin.mk | 38 + make/uclibc.mk | 75 ++ make/user-mode-linux.mk | 54 ++ sources/busybox.patch | 209 +++++ sources/device_table.txt | 90 +- sources/genext2fs.patch | 800 ++++++++++++++++++ sources/linux-uml.config | 32 + sources/skel.tar | Bin 20480 -> 0 bytes sources/skel.tar.gz | Bin 0 -> 4931 bytes sources/target_skeleton/etc/group | 22 +- .../target_skeleton/etc/init.d/S05ramdisk1 | 51 -- sources/target_skeleton/etc/init.d/S20syslogd | 8 - .../target_skeleton/etc/init.d/S50hostname | 3 - .../target_skeleton/etc/init.d/S50networking | 7 + sources/target_skeleton/etc/inittab | 14 +- sources/target_skeleton/etc/passwd | 21 +- sources/target_skeleton/etc/profile | 1 + sources/target_skeleton/etc/protocols | 44 +- sources/target_skeleton/etc/services | 412 +++++---- sources/target_skeleton/etc/shadow | 1 + sources/uClibc-Config.awk | 11 - 27 files changed, 1788 insertions(+), 568 deletions(-) create mode 100644 .cvsignore delete mode 100644 busybox.mk rename boa.mk => make/boa.mk (100%) create mode 100644 make/busybox.mk create mode 100644 make/ext2root.mk create mode 100644 make/tinylogin.mk create mode 100644 make/uclibc.mk create mode 100644 make/user-mode-linux.mk create mode 100644 sources/busybox.patch create mode 100644 sources/genext2fs.patch delete mode 100644 sources/skel.tar create mode 100644 sources/skel.tar.gz delete mode 100755 sources/target_skeleton/etc/init.d/S05ramdisk1 delete mode 100755 sources/target_skeleton/etc/init.d/S20syslogd delete mode 100755 sources/target_skeleton/etc/init.d/S50hostname create mode 100755 sources/target_skeleton/etc/init.d/S50networking delete mode 100644 sources/uClibc-Config.awk diff --git a/.cvsignore b/.cvsignore new file mode 100644 index 000000000..9171c4979 --- /dev/null +++ b/.cvsignore @@ -0,0 +1,2 @@ +UMlinux +root_fs diff --git a/Makefile b/Makefile index 20c8908f1..07315405b 100644 --- a/Makefile +++ b/Makefile @@ -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 -# Copyright (C) 2001 by Alcove, Julien Gaulmin -# Copyright (C) 2001 by Jon Nelson +# Copyright (C) 2001-2002 by Erik Andersen +# Copyright (C) 2002 by Tim Riker # -# 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- +############################################################# +# +# EDIT this stuff to suit your system and preferences +# +# Use := when possible to get precomputation, thereby +# speeding up the build process. +# +############################################################# -#IMAGE_SIZE=8192 # Max size -#IMAGE_INODES=500 -IMAGE_SIZE=550 # library is 550K -IMAGE_INODES=300 +# What sortof target system shall we compile this for? +ARCH:=i386 +#ARCH:=arm +#ARCH:=whatever -LINUX_SOURCE=linux-2.4.17.tar.bz2 -LINUX_URI=http://www.kernel.org/pub/linux/kernel/v2.4 +# 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 -USERMODELINUX_PATCH=uml-patch-2.4.17-3.bz2 -USERMODELINUX_URI=http://prdownloads.sourceforge.net/user-mode-linux +# Enable large file (files > 2 GB) support +BUILD_WITH_LARGEFILE:=false -UCLIBC_SOURCE=uClibc-snapshot.tar.gz -UCLIBC_URI=http://www.uclibc.org/downloads/ +############################################################# +# +# The list of stuff to build for the target filesystem +# +############################################################# +TARGETS:=user-mode-linux uclibc busybox tinylogin -# Don't alter below this line unless you (think) you know -# what you are doing! Danger, Danger! +# Pick your root filesystem type. +TARGETS+=ext2root -.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 +############################################################# +# +# 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 all: world -#So what shall we build today? -TARGETS= +TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS)) +TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS)) --include busybox.mk --include boa.mk +world: $(DL_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) $(TARGETS) -world: $(TARGETS) root_fs $(LINUX) +.PHONY: all world clean dirclean distclean $(TARGETS) $(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) -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 +include make/*.mk -$(STAGING_DIR)/.target_dir_exists: +############################################################# +# +# staging and target directories do NOT list these as +# dependancies anywhere else +# +############################################################# +$(DL_DIR): + mkdir $(DL_DIR) + +$(BUILD_DIR): + mkdir $(BUILD_DIR) + +$(STAGING_DIR): + rm -rf $(STAGING_DIR) + mkdir $(STAGING_DIR) + +$(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 +############################################################# +# +# Cleanup and misc junk +# +############################################################# +clean: $(TARGETS_CLEAN) + rm -rf $(TARGET_DIR) $(STAGING_DIR) $(IMAGE) -$(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 +dirclean: $(TARGETS_DIRCLEAN) + rm -rf $(TARGET_DIR) $(STAGING_DIR) $(IMAGE) -$(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 +distclean: + rm -rf $(DL_DIR) $(BUILD_DIR) $(LINUX_KERNEL) $(IMAGE) -$(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 +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/boa.mk b/make/boa.mk similarity index 100% rename from boa.mk rename to make/boa.mk 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 # /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 ++# ++/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 added ++// the -n (nosquash) option. ++// 03 Mar 2002 Erik Andersen 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 + #include + #include + #include + #include ++#include + #include + #include ++#include ++#include + + + +@@ -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 ++//# ++///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; ii_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 @@ -299,6 +314,23 @@ CONFIG_NLS_KOI8_R=m 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 # diff --git a/sources/skel.tar b/sources/skel.tar deleted file mode 100644 index 592d85e37c60118984885477fac708845420a622..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI3-FBNW41jr*yg-Zpu=hH&rEAUt)b-=n|;GR@sGe(WKZGKKhU>$)>66 zE=_Phj45WaEMbgsldJXE`LF~ zA^3AgCsbABwK2=?dG`EEOf0tVO-&gzY`3=Pl`1${_ z{VQ%b*+14JKbGtK|3_UGDCGM)`SE953y2bp^Z(p1;y>nu_1p13>|YS^gWva!|1*gE zAWwiyz)<{;h5VCT$G@ylb3iZtT4}DdlD+*iyZ%%D_X!osKaPKW+@8Pb{l8{5|CfyN ze-zwzLLGk>X5TeMyWnO2hCz-1*fYozxD=HCM^pc-AjjYRne7(T=*i#3f3OHR{(|Da zAf5XTcIaE&0-zuNYyDR^`{#!0f4&HV`Z@kxdE7q!=R%uI8K&L(uZVvTSKq;o|EX=Z z=Wp#l<08BAr~JFT;?2Q~VDb z+dmuwq55wKSkJLj{9`5rYwTZA{l}AFShp$u?Z);`@qZXs-_g_j+f&7TrOfwReEtUx z0V(kR;`upkQ<%rR_^?(w|I?+m{?q6GL;mOVF2YoM8@-A@)c=V8O@nyfQ}%z}+W%Aj zj|Y7ud7A&Zz1;pKm)H33Hjm4DQxre+ zs{79lBKz;{AMp&ZU;U@w|CRRrKrS`a|7V}tXpMvYBOU?r=MV3HD!2cyss0-c@vNYM zKjIm%W&EA}+tm5()sT@9b#P=_`~{-b&tjIA6L?@ z|00EhiCB}m$))(OORfDM>epX4okad#!C%?;KZ$>25D&!twg39(gXSogR`8cL{v-ZT z)ITd^;NReFv#sH;Z2gb?|17&0jRXJoSl5Rb67OZK;190?5dV8k#=kP~M+~)A@Ry3# R|M;*;B58m$KpGfn;19*sZdqW)AsON;-yvvfx8< z%2N%_Q`x6@LzObIk|T9jgt{B$!<2CCS818*5y=n5_5o*?3%xe^<=o0e=D_Ex-|;T~ z{sI2LuS=NoHV_-AuoZPmZvNA0dZ*9QL?=Jz(;~5>k2TxpP)1` zpm&oPkYLvmRILj+qUHg^qi+oWrcbtWMR6748#N>K!k7R$&_LYa9o~Nl#$MQwtjFec@_+FdI)RWKO38gfbC?;H~O04UXX8GePB7#z1jB2>@ z5I~wi903SnFM^?QsB&sNGyw(6q)lcf#7S@sPn@mQa4KbtgV}M;`=YpYLy7n5thg*i zOBMHZ{%o>Hq;cU#hKc?~p07n9Ro+vDUq|{;0ct9FU9Zb&#!>@G!W}Kc=gCO8Y^g12 zRb_i`o6#H3J2U0bHTvGoNtV2)7NqpBo9TO2!-fx;ZhBn$+X228b|00Q zuGXbrlh&Z9lAM>%pk`-m98ET33sCtGp5uYd)$MnfznR~8jq)o7L`q^NJhiFA75w?m(u0G`k0?(^!HmHkKuNuF@T&LR|7mMom${v~!#P)>J#t9g=DN^(@!#B0b8H&WtV z?=_$Jqw09c)5b1Rw{h`VysktGRVh~Pvujf<^k4gU-HDxvzQ$|2FD%3sH9xsukbCUA zzi*$a;isGqM0p_G)XGOH-3pO$NUv0jHWT$JmsIk!I5mXEBQr;VssZrQp#A|DXAPY#OQMAXd_}{i zYmhfZ*~zF0XTfG``O(KPKJo$CxD^3XS&J_%Qz29!@oay{gA3a&Q$fe&3F+T3t6`ve z6kv<|P`}9NcKbQUNgK@(J2#0{F z)X88QI|xkx1i26P0vzyjj>dY);0)`RY+sJA?4T6~h>jVv72XGvwP>-#nS~_~?LmP% zB?qO(A-yu8uQp5DLXIcX-0`gF>|1QzLiZ`$ZHa&G)-stWb9s`KF9+CbonI3j+RZIc zTo+^+#;i?aWRYD&k9#CB#@{H8UCxKrC@`vl_VZQ%J*xYZrsLQ&8+FJHu!PZg_qJmw z4v)>h=H{#4<sl>~a=dCflob{!^)6%G`;N;gmjos`9DZ zDVK`O&+jHRa>aA5_o!X#R`{DNZyq+;sao(iX;c)SPqDhiG#dSqR2xOwh-h_q<@-Ks zQ@%>`eM@$JBaifE^}9IHWYEs6hUt9LH;Aec+yXe~Mn4%$b!k3XnaIf<5^0&p*4JbnE&m{F#VU#9 zz!ug=_H8W9eR`DjMOL+J8!7gG__UL|=`dWdV~y#_z$QCB6 zp`_jQvC2y*Al2J0%(I^ZP|I_XIdRZJYECVP>go+VSxyyq(SW4hO~1Q-ruFv0vYgJw zQl1cSoUUTVcGplm$?h6CbCM(TafZ>Pjdz;s-A$Hsbx^!-jBkr?{vWG7W3JE^zU5s<*5;%sPRdiQh{yzY8j_}}7(Zn{Bm#`P@oYqL#P5XiyD9-BC9g;bn&}iN+OvRTQ zHx1|=9rfMazCa=ehQS+lc?CcB; zy}6;F=T->Zo#^gfTU+nT%rsbh(fPFGgmsMPsF}BTyx|W;Wof!5oG;Wo9W%bU0lImx zCJ}5=E2;|A5pnvv;PEa9Q75xw{V)PB zb73R&J+XX_D=Y_(Yp|Zv`*h3GTzbeLd}^azxFm(i!;HIBdKS$@8jB=^#;+OOMz)VE zf9#OOMDN>j@Onf&l4$B<)oD={!QJUkinfFJo_nXcHxh~|XDF$@@5JZ)Yi+xqPe@|sO-%eo>CmNM*E-IK5CoEHCl z5`@JKZKtU{6Y)*Lh)*du+a06j9PU-b+W*o`LsFcDCB&RszPn#Rz{XY4gvH@q-`8jo z+{msk6lB$=pds3y&Y>z;Zx?qn!Ioe71xFsAesvYCdL)G<=h}`sSm>WTm8o)wtU?5M z_J5<=+0XhSpxkPiR(B{jdQ+LCs~@#EnOD`7q;FhN9+px^lIT>99;Jm!S5@|ma#m&5XNZ}U z)a%%px;c#p(zSnBF5ow5^cSuguNE-*;w)ily!&gG*yG$iT~gVYWku$vNU>py)c9zn z%OsApJ}u4u?P=NM5V)d+2B|=OmMySzW#xALksRQwfCEO(V9{k3XRrsn)eB^#4En_q;T=AIUmMSp= zG|>IJgJ4?&W2Gch>|D1M?dq;0N=nC1`*)YyRfN=p2bp;H%9$n42p_Nh_t6lvv9gry zca(IROY*|H!e!LgO{@X7r7WW>g7x#G2YN8tG%oB zUJH@2gTlU3v85pY?)oo&e;8Ww{gAk;AJz$sUE2*ZC?C%cJQAz+GtP0%GDjLO8gyyyOB=(L{_isYP&kWNbr8=^)yw?fZ z#6PY1+;Q=Pkp=5a;SR*eW|SwDt?MpHHVsWr{a#gs|2*YlZ6hf@J38A2B`V(rq3>o4 z>yklVIN`*X$b6&Gh`C_OcUPPA`ASs2Anc89Le1H)#}9xxH!KRHq{DAC>?;*-sc~26 zt)^s|2eA5{Q&sRe$A6}Hm$7fg#oF@ zt4VK~3y`kXWwpODH~wbKjpmR!Hy9|U9r33RJ3>? z<)6hMz3lTN{$8u_hZDNilbLDf2480{%OPO(TNTK&3}%(F3k(8%5Bsn5vj#zqY?B^C zoPt4r>(7{p#Wu?zRu^#{ml>U}QED3IoVmRnZO9>U=^FZT?E7D{Qwgl&YP5_*g`neje^=MHc?~TVP+}9)nyCFpU-tZ)?~JNGenz$%*sb~1%g$QFN2Aw= zGNz#7OArgsfyI>H&I<;IS&zX-ya}rpt2S=eC=6(0c!^qF)Zc3}`|8a-2);N%AqufK z5P#TJfQU)~x$4@u86kmWt9c3+y5HA;JEv{oU2wV)U6)B)d$(hS3U|a$t7002Vc!1{&ye+J6N~apq zoeHX_QdZmRDh730YCIZ->F0FX2)=C@W~ogX=YHI4@dZWwR%U7jdOH_-{QimHg7Md! z*X&ATuKSXiKbQd0;~0vyCkiCMxXHf+?&63noT5$SAIrP1y~OO47S?li?t=ymBTjt^ z&zd%{GRRy{ep9$d;9{dieP(Tvz}OBQ zLVQOA9>-J9DQok&@8(x=;*^P7yRT#gR{p$2GeGK!H#1B=@|6;w;>Y4mhqZi|#9j{b z)T$<00|w87Tc_)3)@XWboMgtjfOY)`Y2|yyJI3SHZIz?dt%c$*wvujP`A}$VIkU0a zA*(HZn`RjgYHWpO~O3YLlr`NG(5rw zWSlPqKx1QCt0Dp{H13f3uZ<}-`9na)!Q(ISefb1JyZ)qWXCX%%2Hd(!Xz#5X-9V#& z*&&Q+6zGyQ1fJfIrhh>7hJm?9;D7Ms15g87m)unR2Wb6faXqc-;yUm9dI=@o&}#to5P3)2(Y?5Ocpg8=&36`>3-g83g`xm>DDA_J_LaqV$H ty*zKS4m+OC=zr~V3Ym4dB*^rDYX2zTVtn@hTO2jWAf$/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, +# 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 +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 -# temporary entry (not officially registered by the Samba Team!) -swat 901/tcp # Samba Web Administration Tool +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. +# Note that these are for Kerberos v4, and are unofficial. Sites running +# v4 should uncomment these and comment out the v5 entries above. # -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' +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 # -# AppleTalk DDP entries (DDP: Datagram Delivery Protocol) +# Datagram Delivery Protocol services # -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 } -}