From ffde94bd2ca21542ae0b4518348f8e986b9d92e0 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Sat, 22 Dec 2001 00:56:11 +0000 Subject: [PATCH 1/1] Initial revision --- Makefile | 206 ++++++++++++++++++++++ README | 28 +++ boa.mk | 78 +++++++++ busybox.mk | 63 +++++++ sources/boa-config.site-i386 | 1 + sources/boa.conf | 187 ++++++++++++++++++++ sources/device_table.txt | 76 +++++++++ sources/linux-uml.config | 322 +++++++++++++++++++++++++++++++++++ sources/mime.types | 205 ++++++++++++++++++++++ sources/skel.tar | Bin 0 -> 71680 bytes 10 files changed, 1166 insertions(+) create mode 100644 Makefile create mode 100644 README create mode 100644 boa.mk create mode 100644 busybox.mk create mode 100644 sources/boa-config.site-i386 create mode 100644 sources/boa.conf create mode 100644 sources/device_table.txt create mode 100644 sources/linux-uml.config create mode 100644 sources/mime.types create mode 100644 sources/skel.tar diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..d19b251248 --- /dev/null +++ b/Makefile @@ -0,0 +1,206 @@ +# Makefile for user-mode-linux with 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 +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU Library General Public License as published by the Free +# Software Foundation; either version 2 of the License, or (at your option) any +# later version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more +# details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# Known problems : +# - genext2fs: couldn't allocate a block (no free space) +# As genext2fs allocate only one group of blocks, the FS size +# is limited to 8Mb. + +# Update this stuff by hand : +ARCH = i386 +# If you are running a cross compiler, you may want to set this +# to something more interesting, like "arm-linux-". +#CROSS = $(ARCH)-linux- + +#IMAGE_SIZE=8192 # Max size +#IMAGE_INODES=500 +IMAGE_SIZE=550 # library is 550K +IMAGE_INODES=300 + +LINUX_SOURCE=linux-2.4.14.tar.bz2 +USERMODELINUX_PATCH=uml-patch-2.4.14-6.bz2 +UCLIBC_SOURCE=uClibc-snapshot.tar.gz + +LINUX_URI=http://www.kernel.org/pub/linux/kernel/v2.4 +USERMODELINUX_URI=http://prdownloads.sourceforge.net/user-mode-linux +UCLIBC_URI=http://uclibc.org/downloads/ + +# Don't alter below this line unless you (think) you know +# what you are doing! Danger, Danger! + +.SUFFIXES: # Delete the default suffixes +.SUFFIXES: .c .o .h # Define our suffix list + +# Directories +BASE_DIR=${shell pwd} +TARGET_DIR=$(BASE_DIR)/root +STAGING_DIR=$(BASE_DIR)/staging_dir +SOURCE_DIR=$(BASE_DIR)/sources +LINUX_DIR=$(BASE_DIR)/linux +UCLIBC_DIR=$(BASE_DIR)/uClibc +GENEXT2FS_DIR=$(BASE_DIR)/genext2fs + +TARGET_CC=$(STAGING_DIR)/bin/gcc +TARGET_CC1=$(STAGING_DIR)/usr/bin/$(ARCH)-uclibc-gcc +TARGET_CROSS=$(STAGING_DIR)/usr/bin/$(ARCH)-uclibc- +TARGET_PATH=$(STAGING_DIR)/usr/bin:$(STAGING_DIR)/bin:/bin:/sbin:/usr/bin:/usr/sbin + +LINUX=$(BASE_DIR)/UMlinux +IMAGE=$(BASE_DIR)/root_fs + +KCONFIG=$(SOURCE_DIR)/linux-uml.config + +all: world + +#So what shall we build today? +TARGETS= + +-include busybox.mk +-include boa.mk + +world: $(TARGETS) $(GENEXT2FS_DIR)/genext2fs $(TARGET_DIR) + $(GENEXT2FS_DIR)/genext2fs \ + -b `echo $(IMAGE_SIZE) | bc` \ + -i `echo $(IMAGE_INODES) | bc` \ + -d $(TARGET_DIR) \ + -D $(SOURCE_DIR)/device_table.txt root_fs + +$(STAGING_DIR): + rm -rf $(STAGING_DIR) + mkdir $(STAGING_DIR) + +$(TARGET_DIR): + rm -rf $(TARGET_DIR) + tar -xf $(SOURCE_DIR)/skel.tar + +# The kernel +$(SOURCE_DIR)/$(LINUX_SOURCE): + while [ ! -f $(SOURCE_DIR)/$(LINUX_SOURCE) ] ; do \ + wget -P $(SOURCE_DIR) --passive $(LINUX_URI)/$(LINUX_SOURCE); \ + done + +$(LINUX_DIR)/.unpacked: $(SOURCE_DIR)/$(LINUX_SOURCE) + bunzip2 -c $(SOURCE_DIR)/$(LINUX_SOURCE) | tar -xv + touch $(LINUX_DIR)/.unpacked + +$(SOURCE_DIR)/$(USERMODELINUX_PATCH): + while [ ! -f $(SOURCE_DIR)/$(USERMODELINUX_PATCH) ] ; do \ + wget -P $(SOURCE_DIR) --passive $(USERMODELINUX_URI)/$(USERMODELINUX_PATCH); \ + done + +$(LINUX_DIR)/.patched: $(LINUX_DIR)/.unpacked $(SOURCE_DIR)/$(USERMODELINUX_PATCH) + bzcat $(SOURCE_DIR)/$(USERMODELINUX_PATCH) | patch -d $(LINUX_DIR) -p1 + touch $(LINUX_DIR)/.patched + +$(LINUX_DIR)/.um: $(LINUX_DIR)/.patched + sed -e 's/^ARCH :=.*/ARCH=um/g' < $(LINUX_DIR)/Makefile > $(LINUX_DIR)/Makefile.new && mv -f $(LINUX_DIR)/Makefile.new $(LINUX_DIR)/Makefile + touch $(LINUX_DIR)/.um + +$(LINUX_DIR)/.configdone: $(LINUX_DIR)/.um + cp -f $(KCONFIG) $(LINUX_DIR)/.config + make -C $(LINUX_DIR) oldconfig menuconfig + touch $(LINUX_DIR)/.configdone + +$(LINUX_DIR)/.dep: $(LINUX_DIR)/.configdone + make -C $(LINUX_DIR) dep + touch $(LINUX_DIR)/.dep + +$(LINUX_DIR)/linux: $(LINUX_DIR)/.dep + (cd $(LINUX_DIR); make linux) + +$(LINUX): $(LINUX_DIR)/linux + ln -sf $(LINUX_DIR)/linux $(LINUX) + +# uClibc +$(SOURCE_DIR)/$(UCLIBC_SOURCE): + while [ ! -f $(SOURCE_DIR)/$(UCLIBC_SOURCE) ] ; do \ + wget -P $(SOURCE_DIR) --passive $(UCLIBC_URI)/$(UCLIBC_SOURCE) ; \ + done; + +$(UCLIBC_DIR)/Config: $(SOURCE_DIR)/$(UCLIBC_SOURCE) + tar -xzf $(SOURCE_DIR)/$(UCLIBC_SOURCE) + for p in `find $(SOURCE_DIR) -name uClibc-*.patch | sort -g`;do \ + patch -p0 < $$p ; \ + done + awk 'BEGIN { FS=" ="; REG="DODEBUG|DOLFS|INCLUDE_RPC|DOPIC";} \ + { if ($$0 ~ "^" REG) { print $$1 " = false" } else { print $$0 } }' < \ + $(UCLIBC_DIR)/extra/Configs/Config.$(ARCH) > $(UCLIBC_DIR)/Config; + +$(UCLIBC_DIR)/lib/libc.a: $(LINUX) $(UCLIBC_DIR)/Config + $(MAKE) CROSS=$(CROSS) \ + DEVEL_PREFIX=$(STAGING_DIR) \ + SYSTEM_DEVEL_PREFIX=$(STAGING_DIR)/usr \ + SHARED_LIB_LOADER_PATH=/lib \ + KERNEL_SOURCE=$(LINUX_DIR) \ + -C $(UCLIBC_DIR) + +uclibc: $(UCLIBC_DIR)/lib/libc.a $(STAGING_DIR) $(TARGET_DIR) + @A=`cksum $(STAGING_DIR)/lib/libuClibc-0.9.5.so 2>/dev/null | awk '{ print $$1 }'`; \ + B=`cksum $(UCLIBC_DIR)/lib/libuClibc-0.9.5.so 2>/dev/null | awk '{ print $$1 }'`; \ + if [ "$$A" != "$$B" ] ; then \ + set -x; \ + $(MAKE) \ + DEVEL_PREFIX=$(STAGING_DIR) \ + SYSTEM_DEVEL_PREFIX=$(STAGING_DIR)/usr \ + SHARED_LIB_LOADER_PATH=$(STAGING_DIR)/lib \ + -C $(UCLIBC_DIR) install; \ + fi; + @A=`cksum $(TARGET_DIR)/lib/libuClibc-0.9.5.so 2>/dev/null | awk '{ print $$1 }'`; \ + B=`cksum $(UCLIBC_DIR)/lib/libuClibc-0.9.5.so 2>/dev/null | awk '{ print $$1 }'`; \ + if [ "$$A" != "$$B" ] ; then \ + set -x; \ + $(MAKE) \ + PREFIX=$(TARGET_DIR) \ + DEVEL_PREFIX=/ \ + SYSTEM_DEVEL_PREFIX=/usr \ + SHARED_LIB_LOADER_PATH=/lib \ + -C $(UCLIBC_DIR) install_runtime; \ + fi + +# genext2fs +$(GENEXT2FS_DIR)/genext2fs: + $(MAKE) -C $(GENEXT2FS_DIR) + +# others +clean: $(TARGETS_CLEAN) + make -C $(GENEXT2FS_DIR) clean + @if [ -d $(UCLIBC_DIR) ] ; then \ + make -C $(UCLIBC_DIR) clean; \ + fi; + @if [ -d $(LINUX_DIR) ] ; then \ + make -C $(UCLIBC_DIR) clean; \ + fi; + rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE) + rm -f *~ + +mrproper: $(TARGETS_MRPROPER) + rm -rf $(UCLIBC_DIR); + rm -rf $(LINUX_DIR); + rm -f root_fs $(LINUX) + make -C $(GENEXT2FS_DIR) clean + rm -rf $(STAGING_DIR) $(TARGET_DIR) $(IMAGE) + rm -f *~ + +distclean: mrproper $(TARGETS_DISTCLEAN) + rm -f $(SOURCE_DIR)/$(UCLIBC_SOURCE) + rm -f $(SOURCE_DIR)/$(USERMODELINUX_PATCH) + rm -f $(SOURCE_DIR)/$(LINUX_SOURCE) + +.PHONY: uclibc $(TARGETS) world test clean mrproper distclean diff --git a/README b/README new file mode 100644 index 0000000000..aef538959a --- /dev/null +++ b/README @@ -0,0 +1,28 @@ +To build and use the buildroot stuff, do the following: + +1) run 'make' +2) wait while it compiles +3) run './UMlinux' to test out your root filesystem using User Mode Linux. + +You do not need to be root to build or run this system. Each Virtual Terminal +will be opened in its own window. You must be running X and have xterm +installed for this to work -- otherwise you see a few errors on bootup as it +tries to launch xterms. It will still work on a console, but you will not +have access to the other Virtual Terminals. + +Also, you the uClibc and busybox source trees that +are downloaded are fully set up for anonymous CVS access. You may need to set +up your system for anonymous CVS access by running the following command: + + cvs -d:pserver:anonymous@busybox.net:/var/cvs login + +Then just hit Enter when it prompts you for a password. You only need to do +this once. Then, whenever you want to update your system, just go into the +busybox or uClibc directory and run 'cvs update'. + +Have fun! + + -Erik + +Please feed suggestions, bug reports, insults, and bribes back to: + Erik Andersen diff --git a/boa.mk b/boa.mk new file mode 100644 index 0000000000..c7b62c5e1a --- /dev/null +++ b/boa.mk @@ -0,0 +1,78 @@ +# +TARGETS += boa +TARGETS_CLEAN += boa_clean +TARGETS_MRPROPER += boa_mrproper +TARGETS_DISTCLEAN += boa_distclean + +# Don't alter below this line unless you (think) you know +# what you are doing! Danger, Danger! + +BOA_DIR=$(BASE_DIR)/${shell basename $(BOA_SOURCE) .tar.gz} +BOA_WORKDIR=$(BASE_DIR)/boa_workdir +BOA_URI=http://www.boa.org +BOA_SOURCE=boa-0.94.12pre1.tar.gz + +IMAGE_SIZE += +100 + +$(SOURCE_DIR)/$(BOA_SOURCE): + while [ ! -f $(SOURCE_DIR)/$(BOA_SOURCE) ] ; do \ + wget -P $(SOURCE_DIR) --passive-ftp $(BOA_URI)/$(BOA_SOURCE); \ + done + +$(BOA_DIR)/.unpacked: $(SOURCE_DIR)/$(BOA_SOURCE) + tar -xzf $(SOURCE_DIR)/$(BOA_SOURCE) + touch $(BOA_DIR)/.unpacked + +$(BOA_WORKDIR)/Makefile: uclibc $(BOA_DIR)/.unpacked + mkdir -p $(BOA_WORKDIR) + if [ -f $(SOURCE_DIR)/boa-config.site-$(ARCH) ]; then \ + (cd $(BOA_WORKDIR) && CONFIG_SITE=$(SOURCE_DIR)/boa-config.site-$(ARCH) CC=$(TARGET_CC) $(BOA_DIR)/src/configure); \ + else \ + (cd $(BOA_WORKDIR) && CC=$(TARGET_CC) $(BOA_DIR)/src/configure); \ + fi + +$(BOA_WORKDIR)/.built: $(BOA_WORKDIR)/Makefile + touch $(BOA_WORKDIR)/.depend + make VPATH=$(BOA_DIR)/src/ -C $(BOA_WORKDIR) + (cd $(BOA_WORKDIR) && strip --strip-all boa boa_indexer) + touch $(BOA_WORKDIR)/.built + +boa_install_dirs = /usr/sbin /etc/boa /usr/lib/boa /var/www /usr/lib/cgi-bin + +TARGET_DIRS = $(foreach dir,$(boa_install_dirs),$(TARGET_DIR)/$(dir)) + +$(TARGET_DIRS): + mkdir -p $@ + +boa: $(BOA_WORKDIR)/.built $(TARGET_DIRS) + @A=`cksum $(TARGET_DIR)/usr/sbin/boa 2>/dev/null | awk '{ print $$1 }'`; \ + B=`cksum $(BOA_WORKDIR)/boa 2>/dev/null | awk '{ print $$1 }'`; \ + if [ "$$A" != "$$B" ] ; then \ + cp -f $(BOA_WORKDIR)/boa $(TARGET_DIR)/usr/sbin/boa ; \ + fi; + @A=`cksum $(TARGET_DIR)/usr/lib/boa/boa_indexer 2>/dev/null | awk '{ print $$1 }'`; \ + B=`cksum $(BOA_WORKDIR)/boa_indexer 2>/dev/null | awk '{ print $$1 }'`; \ + if [ "$$A" != "$$B" ] ; then \ + cp -f $(BOA_WORKDIR)/boa_indexer $(TARGET_DIR)/usr/lib/boa/boa_indexer ; \ + fi; + @A=`cksum $(TARGET_DIR)/etc/boa/boa.conf 2>/dev/null | awk '{ print $$1 }'`; \ + B=`cksum $(SOURCE_DIR)/boa.conf 2>/dev/null | awk '{ print $$1 }'`; \ + if [ "$$A" != "$$B" ] ; then \ + cp -f $(SOURCE_DIR)/boa.conf $(TARGET_DIR)/etc/boa ; \ + fi; + @A=`cksum $(TARGET_DIR)/etc/mime.types 2>/dev/null | awk '{ print $$1 }'`; \ + B=`cksum $(SOURCE_DIR)/mime.types 2>/dev/null | awk '{ print $$1 }'`; \ + if [ "$$A" != "$$B" ] ; then \ + cp -f $(SOURCE_DIR)/mime.types $(TARGET_DIR)/etc/mime.types ; \ + fi; + +boa_clean: + @if [ -d $(BOA_WORKDIR)/Makefile ] ; then \ + make -C $(BOA_WORKDIR) clean ; \ + fi; + +boa_mrproper: + rm -rf $(BOA_DIR) $(BOA_WORKDIR) + +boa_distclean: boa_mrproper + rm -f $(SOURCE_DIR)/$(BOA_SOURCE) diff --git a/busybox.mk b/busybox.mk new file mode 100644 index 0000000000..fcb61ce4a0 --- /dev/null +++ b/busybox.mk @@ -0,0 +1,63 @@ +TARGETS += busybox +TARGETS_CLEAN += busybox_clean +TARGETS_MRPROPER += busybox_mrproper +TARGETS_DISTCLEAN += busybox_distclean + +# Don't alter below this line unless you (think) you know +# what you are doing! Danger, Danger! + +BUSYBOX_DIR=$(BASE_DIR)/${shell basename $(BUSYBOX_SOURCE) .tar.gz} +BUSYBOX_WORKDIR=$(BASE_DIR)/busybox_workdir +BUSYBOX_URI=http://busybox.net/downloads/ +BUSYBOX_SOURCE=busybox-0.60.2.tar.gz + +IMAGE_SIZE += +500 + +$(SOURCE_DIR)/$(BUSYBOX_SOURCE): + while [ ! -f $(SOURCE_DIR)/$(BUSYBOX_SOURCE) ] ; do \ + wget -P $(SOURCE_DIR) --passive $(BUSYBOX_URI)/$(BUSYBOX_SOURCE) ; \ + done + +$(BUSYBOX_DIR)/.unpacked: $(SOURCE_DIR)/$(BUSYBOX_SOURCE) + tar -xzf $(SOURCE_DIR)/$(BUSYBOX_SOURCE) + touch $(BUSYBOX_DIR)/.unpacked + +$(BUSYBOX_WORKDIR)/.config: $(BUSYBOX_DIR)/.unpacked + rm -rf $(BUSYBOX_WORKDIR) + mkdir -p $(BUSYBOX_WORKDIR) + (cd $(BUSYBOX_WORKDIR) && sh $(BUSYBOX_DIR)/pristine_setup.sh) + @perl -i -p \ + -e 's|//(#define\s+BB_)(?!FEATURE)|$$1|;' \ + -e 's|//(#define\s+BB_FEATURE_VERBOSE_USAGE)|$$1|;' \ + -e 's|//(#define\s+BB_FEATURE_NEW_MODULE_INTERFACE)|$$1|;' \ + -e 's|//(#define\s+BB_FEATURE_COMMAND_USERNAME_COMPLETION)|$$1|;' \ + -e 's|//(#define\s+BB_FEATURE_SH_FANCY_PROMPT)|$$1|;' \ + -e 's|//(#define\s+BB_FEATURE_INSMOD_VERSION_CHECKING)|$$1|;' \ + -e 's|//(#define\s+BB_FEATURE_IFCONFIG)|$$1|;' \ + -e 's|//(#define\s+BB_FEATURE_DEVFS)|$$1|;' \ + $(BUSYBOX_WORKDIR)/Config.h + touch $(BUSYBOX_WORKDIR)/.config + +$(BUSYBOX_WORKDIR)/busybox: uclibc $(BUSYBOX_WORKDIR)/.config + make CROSS="$(TARGET_CROSS)" -C $(BUSYBOX_WORKDIR) + +$(TARGET_DIR)/bin/busybox: $(BUSYBOX_WORKDIR)/busybox + @A=`cksum $(TARGET_DIR)/bin/busybox 2>/dev/null | awk '{ print $$1 }'`; \ + B=`cksum $(BUSYBOX_WORKDIR)/busybox 2>/dev/null | awk '{ print $$1 }'`; \ + if [ "$$A" != "$$B" ] ; then \ + make CROSS="$(TARGET_CROSS)" PREFIX=$(TARGET_DIR) \ + -C $(BUSYBOX_WORKDIR) install; \ + fi; + +busybox: uclibc $(TARGET_DIR)/bin/busybox + +busybox_clean: + @if [ -d $(BUSYBOX_WORKDIR)/Makefile ] ; then \ + make -C $(BUSYBOX_WORKDIR) clean ; \ + fi; + +busybox_mrproper: + rm -rf $(BUSYBOX_DIR) $(BUSYBOX_WORKDIR) + +busybox_distclean: busybox_mrproper + rm -f $(SOURCE_DIR)/$(BUSYBOX_SOURCE) diff --git a/sources/boa-config.site-i386 b/sources/boa-config.site-i386 new file mode 100644 index 0000000000..425d948c41 --- /dev/null +++ b/sources/boa-config.site-i386 @@ -0,0 +1 @@ +ac_cv_func_setvbuf_reversed=no diff --git a/sources/boa.conf b/sources/boa.conf new file mode 100644 index 0000000000..ccb9563318 --- /dev/null +++ b/sources/boa.conf @@ -0,0 +1,187 @@ +# Boa v0.94 configuration file +# File format has not changed from 0.93 +# File format has changed little from 0.92 +# version changes are noted in the comments +# +# The Boa configuration file is parsed with a lex/yacc or flex/bison +# generated parser. If it reports an error, the line number will be +# provided; it should be easy to spot. The syntax of each of these +# rules is very simple, and they can occur in any order. Where possible +# these directives mimic those of NCSA httpd 1.3; I saw no reason to +# introduce gratuitous differences. + +# $Id: boa.conf,v 1.1 2001/12/22 00:56:12 andersen Exp $ + +# The "ServerRoot" is not in this configuration file. It can be compiled +# into the server (see defines.h) or specified on the command line with +# the -c option, for example: +# +# boa -c /usr/local/boa + + +# Port: The port Boa runs on. The default port for http servers is 80. +# If it is less than 1024, the server must be started as root. + +Port 80 + +# Listen: the Internet address to bind(2) to. If you leave it out, +# it takes the behavior before 0.93.17.2, which is to bind to all +# addresses (INADDR_ANY). You only get one "Listen" directive, +# if you want service on multiple IP addresses, you have three choices: +# 1. Run boa without a "Listen" directive +# a. All addresses are treated the same; makes sense if the addresses +# are localhost, ppp, and eth0. +# b. Use the VirtualHost directive below to point requests to different +# files. Should be good for a very large number of addresses (web +# hosting clients). +# 2. Run one copy of boa per IP address, each has its own configuration +# with a "Listen" directive. No big deal up to a few tens of addresses. +# Nice separation between clients. +# The name you provide gets run through inet_aton(3), so you have to use dotted +# quad notation. This configuration is too important to trust some DNS. + +#Listen 192.68.0.5 + +# User: The name or UID the server should run as. +# Group: The group name or GID the server should run as. + +User nobody +Group nobody + +# ServerAdmin: The email address where server problems should be sent. +# Note: this is not currently used, except as an environment variable +# for CGIs. + +#ServerAdmin root@localhost + +# ErrorLog: The location of the error log file. If this does not start +# with /, it is considered relative to the server root. +# Set to /dev/null if you don't want errors logged. +# If unset, defaults to /dev/stderr + +ErrorLog /var/log/boa/error_log +# Please NOTE: Sending the logs to a pipe ('|'), as shown below, +# is somewhat experimental and might fail under heavy load. +# "Usual libc implementations of printf will stall the whole +# process if the receiving end of a pipe stops reading." +#ErrorLog "|/usr/sbin/cronolog --symlink=/var/log/boa/error_log /var/log/boa/error-%Y%m%d.log" + +# AccessLog: The location of the access log file. If this does not +# start with /, it is considered relative to the server root. +# Comment out or set to /dev/null (less effective) to disable +# Access logging. + +AccessLog /var/log/boa/access_log +# Please NOTE: Sending the logs to a pipe ('|'), as shown below, +# is somewhat experimental and might fail under heavy load. +# "Usual libc implementations of printf will stall the whole +# process if the receiving end of a pipe stops reading." +#AccessLog "|/usr/sbin/cronolog --symlink=/var/log/boa/access_log /var/log/boa/access-%Y%m%d.log" + +# UseLocaltime: Logical switch. Uncomment to use localtime +# instead of UTC time +#UseLocaltime + +# VerboseCGILogs: this is just a logical switch. +# It simply notes the start and stop times of cgis in the error log +# Comment out to disable. + +#VerboseCGILogs + +# ServerName: the name of this server that should be sent back to +# clients if different than that returned by gethostname + gethostbyname + +#ServerName www.your.org.here + +# VirtualHost: a logical switch. +# Comment out to disable. +# Given DocumentRoot /var/www, requests on interface 'A' or IP 'IP-A' +# become /var/www/IP-A. +# Example: http://localhost/ becomes /var/www/127.0.0.1 +# +# Not used until version 0.93.17.2. This "feature" also breaks commonlog +# output rules, it prepends the interface number to each access_log line. +# You are expected to fix that problem with a postprocessing script. + +#VirtualHost + +# DocumentRoot: The root directory of the HTML documents. +# Comment out to disable server non user files. + +DocumentRoot /var/www + +# UserDir: The name of the directory which is appended onto a user's home +# directory if a ~user request is recieved. + +UserDir public_html + +# DirectoryIndex: Name of the file to use as a pre-written HTML +# directory index. Please MAKE AND USE THESE FILES. On the +# fly creation of directory indexes can be _slow_. +# Comment out to always use DirectoryMaker + +DirectoryIndex index.html + +# DirectoryMaker: Name of program used to create a directory listing. +# Comment out to disable directory listings. If both this and +# DirectoryIndex are commented out, accessing a directory will give +# an error (though accessing files in the directory are still ok). + +DirectoryMaker /usr/lib/boa/boa_indexer + +# DirectoryCache: If DirectoryIndex doesn't exist, and DirectoryMaker +# has been commented out, the the on-the-fly indexing of Boa can be used +# to generate indexes of directories. Be warned that the output is +# extremely minimal and can cause delays when slow disks are used. +# Note: The DirectoryCache must be writable by the same user/group that +# Boa runs as. + +# DirectoryCache /var/spool/boa/dircache + +# KeepAliveMax: Number of KeepAlive requests to allow per connection +# Comment out, or set to 0 to disable keepalive processing + +KeepAliveMax 1000 + +# KeepAliveTimeout: seconds to wait before keepalive connection times out + +KeepAliveTimeout 10 + +# MimeTypes: This is the file that is used to generate mime type pairs +# and Content-Type fields for boa. +# Set to /dev/null if you do not want to load a mime types file. +# Do *not* comment out (better use AddType!) + +MimeTypes /etc/mime.types + +# DefaultType: MIME type used if the file extension is unknown, or there +# is no file extension. + +DefaultType text/plain + +# AddType: adds types without editing mime.types +# Example: AddType type extension [extension ...] + +# Uncomment the next line if you want .cgi files to execute from anywhere +#AddType application/x-httpd-cgi cgi + +# Redirect, Alias, and ScriptAlias all have the same semantics -- they +# match the beginning of a request and take appropriate action. Use +# Redirect for other servers, Alias for the same server, and ScriptAlias +# to enable directories for script execution. + +# Redirect allows you to tell clients about documents which used to exist in +# your server's namespace, but do not anymore. This allows you to tell the +# clients where to look for the relocated document. +# Example: Redirect /bar http://elsewhere/feh/bar + +# Aliases: Aliases one path to another. +# Example: Alias /path1/bar /path2/foo + +# Alias /doc /usr/doc + +# ScriptAlias: Maps a virtual path to a directory for serving scripts +# Example: ScriptAlias /htbin/ /www/htbin/ + +ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ + diff --git a/sources/device_table.txt b/sources/device_table.txt new file mode 100644 index 0000000000..cd2ba99d1c --- /dev/null +++ b/sources/device_table.txt @@ -0,0 +1,76 @@ +# device list table +# +/dev d 755 0 0 - - - - - +/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 +# +# IDE Devices +/dev/hda b 640 0 0 3 0 0 0 - +/dev/hda b 640 0 0 3 1 1 1 1 +/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 64 0 0 - +#/dev/hdg b 640 0 0 34 65 1 1 1 +#/dev/hdh b 640 0 0 34 64 0 0 - +#/dev/hdh b 640 0 0 34 65 1 1 1 +# 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 +# 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 --git a/sources/linux-uml.config b/sources/linux-uml.config new file mode 100644 index 0000000000..977472e625 --- /dev/null +++ b/sources/linux-uml.config @@ -0,0 +1,322 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_USERMODE=y +CONFIG_ISA=y +# CONFIG_SBUS is not set +CONFIG_UID16=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y + +# +# Processor features +# + +# +# General Setup +# +CONFIG_STDIO_CONSOLE=y +CONFIG_NET=y +CONFIG_SYSVIPC=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_UNIX98_PTYS=y +CONFIG_UNIX98_PTY_COUNT=256 +CONFIG_SSL=y +CONFIG_HOSTFS=y +CONFIG_MCONSOLE=y +CONFIG_MAGIC_SYSRQ=y + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_KMOD=y + +# +# Devices +# +CONFIG_BLK_DEV_UBD=y +CONFIG_BLK_DEV_UBD_SYNC=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_NBD=y +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_MMAPPER is not set + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +CONFIG_NETLINK=y +CONFIG_RTNETLINK=y +# CONFIG_NETLINK_DEV is not set +# CONFIG_NETFILTER is not set +# CONFIG_FILTER is not set +CONFIG_UNIX=y +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_INET_ECN is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_IPV6 is not set +# CONFIG_KHTTPD is not set +# CONFIG_ATM is not set + +# +# +# +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_DECNET is not set +# CONFIG_BRIDGE is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_LLC is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network drivers +# + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set +CONFIG_DUMMY=y +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +CONFIG_TUN=y +CONFIG_ETHERTAP=y + +# +# Ethernet (10 or 100Mbit) +# +# CONFIG_NET_ETHERNET is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_MYRI_SBUS is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_SK98LIN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PLIP is not set +CONFIG_PPP=y +# CONFIG_PPP_MULTILINK is not set +# CONFIG_PPP_FILTER is not set +# CONFIG_PPP_ASYNC is not set +# CONFIG_PPP_SYNC_TTY is not set +# CONFIG_PPP_DEFLATE is not set +# CONFIG_PPP_BSDCOMP is not set +# CONFIG_PPPOE is not set +CONFIG_SLIP=y +# CONFIG_SLIP_COMPRESSED is not set +# CONFIG_SLIP_SMART is not set +# CONFIG_SLIP_MODE_SLIP6 is not set + +# +# Wireless LAN (non-hamradio) +# +# CONFIG_NET_RADIO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set +# CONFIG_NET_FC is not set +# CONFIG_RCPCI is not set +# CONFIG_SHAPER is not set + +# +# Wan interfaces +# +# CONFIG_WAN is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y +CONFIG_UML_NET=y +CONFIG_UML_NET_ETHERTAP=y +CONFIG_UML_NET_TUNTAP=y +CONFIG_UML_NET_SLIP=y +CONFIG_UML_NET_DAEMON=y +CONFIG_UML_NET_MCAST=y +CONFIG_ETHERTAP=y +CONFIG_TUN=y + +# +# File systems +# +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADFS_FS_RW is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_CMS_FS is not set +CONFIG_EXT3_FS=y +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_UMSDOS_FS=y +CONFIG_VFAT_FS=y +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +CONFIG_CRAMFS=y +CONFIG_TMPFS=y +CONFIG_RAMFS=y +# CONFIG_ISO9660_FS is not set +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +CONFIG_MINIX_FS=y +# CONFIG_FREEVXFS_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_HPFS_FS is not set +CONFIG_PROC_FS=y +# CONFIG_DEVFS_FS is not set +# CONFIG_DEVFS_MOUNT is not set +# CONFIG_DEVFS_DEBUG is not set +CONFIG_DEVPTS_FS=y +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX4FS_RW is not set +CONFIG_ROMFS_FS=y +CONFIG_EXT2_FS=y +# CONFIG_SYSV_FS is not set +# CONFIG_UDF_FS is not set +# CONFIG_UDF_RW is not set +# CONFIG_UFS_FS is not set +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +# CONFIG_CODA_FS is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_ROOT_NFS is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_V3 is not set +CONFIG_SUNRPC=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +# CONFIG_SMB_FS is not set +# CONFIG_NCP_FS is not set +# CONFIG_NCPFS_PACKET_SIGNING is not set +# CONFIG_NCPFS_IOCTL_LOCKING is not set +# CONFIG_NCPFS_STRONG is not set +# CONFIG_NCPFS_NFS_NS is not set +# CONFIG_NCPFS_OS2_NS is not set +# CONFIG_NCPFS_SMALLDOS is not set +# CONFIG_NCPFS_NLS is not set +# CONFIG_NCPFS_EXTRAS is not set +# CONFIG_ZISOFS_FS is not set +CONFIG_ZLIB_FS_INFLATE=y + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +CONFIG_OSF_PARTITION=y +CONFIG_AMIGA_PARTITION=y +CONFIG_ATARI_PARTITION=y +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_LDM_PARTITION=y +# CONFIG_LDM_DEBUG is not set +CONFIG_SGI_PARTITION=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_SUN_PARTITION=y +# CONFIG_SMB_NLS is not set +CONFIG_NLS=y + +# +# Native Language Support +# +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m + +# +# Kernel hacking +# +# CONFIG_DEBUGSYM is not set +# CONFIG_PT_PROXY is not set +# CONFIG_GPROF is not set +# CONFIG_GCOV is not set diff --git a/sources/mime.types b/sources/mime.types new file mode 100644 index 0000000000..53f6ea1011 --- /dev/null +++ b/sources/mime.types @@ -0,0 +1,205 @@ +############################################################################### +# +# MIME-TYPES and the extensions that represent them +# +# This file is part of the "mime-support" package. Please send email (not a +# bug report) to mime-support@packages.debian.org if you would like new types +# and/or extensions to be added. +# +# Note: Compression schemes like "gzip", "bzip", and "compress" are not +# actually "mime-types". They are "encodings" and hence must _not_ have +# entries in this file to map their extensions. The "mime-type" of an +# encoded file refers to the type of data that has been encoded, not the +# type of the encoding. +# +############################################################################### + + +application/activemessage +application/andrew-inset +application/applefile +application/atomicmail +application/cu-seeme csm cu +application/dca-rft +application/dec-dx +application/dsptype tsp +application/futuresplash spl +application/ghostview +application/mac-binhex40 hqx +application/macwriteii +application/msaccess mdb +application/msword doc dot +application/news-message-id +application/news-transmission +application/octet-stream bin +application/oda oda +application/pdf pdf +application/pgp-signature pgp +application/postscript ps ai eps +application/remote-printing +application/rtf rtf +application/slate +application/vnd.ms-excel xls xlb +application/vnd.ms-powerpoint ppt pps pot +application/vnd.wap.wmlc wmlc +application/vnd.wap.wmlscriptc wmlsc +application/wita +application/wordperfect5.1 wp5 +application/zip zip +application/x-123 wk +application/x-bcpio bcpio +application/x-chess-pgn pgn +application/x-core +application/x-cpio cpio +application/x-csh +application/x-debian-package deb +application/x-director dcr dir dxr +application/x-dms dms +application/x-dvi dvi +application/x-executable +application/x-font pfa pfb gsf pcf pcf.Z +application/x-gnumeric gnumeric +application/x-gtar gtar tgz +application/x-hdf hdf +application/x-httpd-php phtml pht php +application/x-httpd-php3 php3 +application/x-httpd-php3-source phps +application/x-httpd-php3-preprocessed php3p +application/x-httpd-php4 php4 +application/x-ica ica +application/x-java class +application/x-javascript js +application/x-kdelnk +application/x-kchart chrt +application/x-killustrator kil +application/x-kpresenter kpr kpt +application/x-kspread ksp +application/x-kword kwd kwt +application/x-latex latex +application/x-lha lha +application/x-lzh lzh +application/x-lzx lzx +application/x-maker frm maker frame fm fb book fbdoc +application/x-mif mif +application/x-msdos-program com exe bat dll +application/x-msi msi +application/x-netcdf nc cdf +application/x-ns-proxy-autoconfig pac +application/x-object o +application/x-ogg ogg +application/x-oz-application oza +application/x-perl pl pm +application/x-redhat-package-manager rpm +application/x-rx +application/x-sh +application/x-shar shar +application/x-shellscript +application/x-shockwave-flash swf swfl +application/x-stuffit sit +application/x-sv4cpio sv4cpio +application/x-sv4crc sv4crc +application/x-tar tar +application/x-tcl +application/x-tex +application/x-tex-gf gf +application/x-tex-pk pk PK +application/x-texinfo texinfo texi +application/x-trash ~ % bak old sik +application/x-troff t tr roff +application/x-troff-man man +application/x-troff-me me +application/x-troff-ms ms +application/x-ustar ustar +application/x-wais-source src +application/x-wingz wz + +audio/basic au snd +audio/midi mid midi +audio/mpeg mpga mpega mp2 mp3 +audio/mpegurl m3u +audio/prs.sid sid +audio/x-aiff aif aiff aifc +audio/x-gsm gsm +audio/x-pn-realaudio ra rm ram +audio/x-wav wav + +image/bitmap bmp +image/gif gif +image/ief ief +image/jpeg jpeg jpg jpe +image/pcx pcx +image/png png +image/tiff tiff tif +image/vnd.wap.wbmp wbmp +image/x-cmu-raster ras +image/x-coreldraw cdr +image/x-coreldrawpattern pat +image/x-coreldrawtemplate cdt +image/x-corelphotopaint cpt +image/x-jng jng +image/x-portable-anymap pnm +image/x-portable-bitmap pbm +image/x-portable-graymap pgm +image/x-portable-pixmap ppm +image/x-rgb rgb +image/x-xbitmap xbm +image/x-xpixmap xpm +image/x-xwindowdump xwd + +inode/chardevice +inode/blockdevice +inode/directory-locked +inode/directory +inode/fifo +inode/socket + +message/external-body +message/news +message/partial +message/rfc822 + +multipart/alternative +multipart/appledouble +multipart/digest +multipart/mixed +multipart/parallel + +text/comma-separated-values csv +text/css css +text/english +text/html htm html xhtml +text/mathml mml +text/plain txt text diff +text/richtext rtx +text/tab-separated-values tsv +text/vnd.wap.wml wml +text/vnd.wap.wmlscript wmls +text/xml xml +text/x-c++hdr h++ hpp hxx hh +text/x-c++src c++ cpp cxx cc +text/x-chdr h +text/x-crontab +text/x-csh csh +text/x-csrc c +text/x-java java +text/x-makefile +text/x-moc moc +text/x-pascal p pas +text/x-setext etx +text/x-sh sh +text/x-tcl tcl tk +text/x-tex tex ltx sty cls +text/x-vcalendar vcs +text/x-vcard vcf + +video/dl dl +video/fli fli +video/gl gl +video/mpeg mpeg mpg mpe +video/quicktime qt mov +video/x-mng mng +video/x-ms-asf asf asx +video/x-msvideo avi +video/x-sgi-movie movie + +x-world/x-vrml vrm vrml wrl diff --git a/sources/skel.tar b/sources/skel.tar new file mode 100644 index 0000000000000000000000000000000000000000..24b36c4ae731ca07d54eebd96d57026411ae7cdf GIT binary patch literal 71680 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 afnf^_TVU7%!xk8}z_0~|E$~ckf&UMyyEvHu literal 0 HcmV?d00001 -- 2.30.2