Clone from GitHub, continuing devel here...

master
Pentium44 2020-11-03 19:43:20 -08:00
commit 89c9d7d5ff
23 changed files with 30671 additions and 0 deletions

3
.Xresources Normal file
View File

@ -0,0 +1,3 @@
xterm.VT100.Translations:
Ctrl Shift <Key>V: insert-selection(CLIPBOARD) \n\
Ctrl Shift <Key>C: copy-selection(CLIPBOARD)

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
/pkgsrc/*
/pkgs/*
/src/*
*.iso
*.img

19
README.md Executable file
View File

@ -0,0 +1,19 @@
=== Freon build script ===
Simple script that, as of right now, builds Freon Linux distribution that is shipped with glibc, busybox, and a hand full of other utilities.
Changelog:
* v0.4.2: Adding some functionality to thaw (package manager). Using TinyCoreLinux 9.x package repository for some extension to the OS without bloating the disk size.
* v0.4.1: Added a couple of utilities to build-extensions. dropbear SSH2 client, htop, as well as reconfiguring chttpd for web hosting.
* v0.4.0:
Freon Linux is now functional with the capabilities of installing on most hardware. Kernel is mostly static, no modules for devices.
Also included the following updates: kernel-5.1.12 update, liblzma is built in for grub2, and some software added in build-extensions.
* v0.3.0: Taking a new route with Freon, and now making it a standalone distribution for embedded servers.
* v0.2.1b: Added build-pkg, in dev. Successfully builds TCC for Freon's package manager.
* v0.2.1: Update: Linux kernel 4.19, GNU C library 2.28. Functioning x64 builds, with built-in onboard network drivers.
* v0.2.0: Major update, added refer feature. Rebuilds rootfs with freon scripts. Linux headers no longer shipped with finished ISO.
* v0.1.0: Name change and overhaul. Now Freon build script.
* v0.0.2: Still basic, working on 64 bit host systems, generated box working.
* v0.0.1: Simple, --verbose added, not fully working
This software is released under the GPLv3 and is to be used "as is". There is no warranty with this software and is to be used by an experienced GNU/Linux developer.

285
build-extensions Executable file
View File

@ -0,0 +1,285 @@
#!/bin/bash
# Build Freon Linux software from source.
# Version: 0.1.0
# (C) Chris Dorman, 2018 GPLv3+
#### Variables ###
# mirrors
tccmirror="http://download.savannah.gnu.org/releases/tinycc"
nanomirror="https://www.nano-editor.org/dist/v3"
chttpdmirror="https://github.com/Pentium44/chttpd.git"
ftpmirror="https://github.com/Harlonxl/minFTPD.git"
ncursesmirror="https://ftp.gnu.org/pub/gnu/ncurses"
bashmirror="https://ftp.gnu.org/gnu/bash"
zlibmirror="https://zlib.net"
termcapmirror="https://ftp.gnu.org/gnu/termcap"
dropbearmirror="https://matt.ucc.asn.au/dropbear/releases"
htopmirror="https://hisham.hm/htop/releases/2.2.0"
# filenames
tcc="tcc-0.9.27.tar.bz2"
nano="nano-3.1.tar.xz"
ncurses="ncurses-6.1.tar.gz"
bash="bash-5.0.tar.gz"
zlib="zlib-1.2.11.tar.xz"
termcap="termcap-1.3.1.tar.gz"
dropbear="dropbear-2019.78.tar.bz2"
htop="htop-2.2.0.tar.gz"
# folders
tmpdir="`pwd`/pkgsrc"
softwaredir="`pwd`/src/rootfs"
tccsrcdir=${tcc//.tar.bz2}
nanosrcdir=${nano//.tar.xz}
ncursessrcdir=${ncurses//.tar.gz}
bashsrcdir=${bash//.tar.gz}
zlibsrcdir=${zlib//.tar.xz}
termcapsrcdir=${termcap//.tar.gz}
dropbearsrcdir=${dropbear//.tar.bz2}
htopsrcdir=${htop//.tar.gz}
# Build simple C toolchain for Freon Linux (tcc)
if [ ! -d "$tmpdir" ]; then
echo "Warning: package source directory not found, creating."
mkdir $tmpdir > /dev/null 2>&1
fi
cd $tmpdir
bash()
{
# Downloading TCC source
if [ ! -f "$bash" ]; then
echo "Downloading bash sources..."
wget $bashmirror/$bash
tar -xf $bash
fi
cd $bashsrcdir
./configure --prefix=$softwaredir \
--without-bash-malloc
make -j20
make install
cd ..
}
tcc()
{
# Downloading TCC source
if [ ! -f "$tcc" ]; then
echo "Downloading TCC sources..."
wget $tccmirror/$tcc
tar -xf $tcc
fi
# Configure TCC
cd $tccsrcdir
./configure --prefix=$softwaredir
# Compile
make -j20
make install
cd ..
sleep 2
}
htop()
{
# Downloading TCC source
if [ ! -f "$htop" ]; then
echo "Downloading TCC sources..."
wget $htopmirror/$htop
tar -xf $htop
fi
# Configure TCC
cd $htopsrcdir
./configure --prefix=$softwaredir
# Compile
make -j20
make install
cd ..
}
dropbear()
{
# Downloading dropbear source
if [ ! -f "$dropbear" ]; then
echo "Downloading Dropbear sources..."
wget $dropbearmirror/$dropbear
tar -xf $dropbear
fi
# Configure dropbear
cd $dropbearsrcdir
cp -v options.h options.h.backup
sed -e "s@/dev/random@/dev/urandom@" options.h.backup > options.h
./configure --prefix=$softwaredir
# Compile
make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" MULTI=1
make MULTI=1 PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
mkdir -pv $softwaredir/etc/dropbear
rm $softwaredir/sbin/dropbear
rm $softwaredir/bin/{dropbearconvert,dropbearkey,scp,dbclient}
cd $softwaredir/bin
ln -svf dropbearmulti dropbear
ln -svf dropbearmulti dbclient
ln -svf dropbearmulti dropbearkey
ln -svf dropbearmulti dropbearconvert
ln -svf dropbearmulti scp
cd $tmpdir
}
termcap()
{
# Downloading termcap source
if [ ! -f "$termcap" ]; then
echo "Downloading termcap sources..."
wget $termcapmirror/$termcap
tar -xf $termcap
fi
# Configure TCC
cd $termcapsrcdir
./configure --prefix=$softwaredir --with-shared --without-normal
# Compile
make -j20
make install
cd ..
}
nano()
{
# Downloading nano source
if [ ! -f "$nano" ]; then
echo "Downloading nano editor sources..."
wget $nanomirror/$nano
tar -xf $nano
fi
# Confingure
cd $nanosrcdir
./configure --prefix=$softwaredir
# Compile
make -j20
make install
cd ..
}
ncurses()
{
# Downloading nano source
if [ ! -f "$ncurses" ]; then
echo "Downloading ncurses sources..."
wget $ncursesmirror/$ncurses
tar -xf $ncurses
fi
# Configure
cd $ncursessrcdir
./configure --prefix=$softwaredir \
--with-shared \
--without-debug \
--without-normal \
--enable-widec
# Compile
make -j20
make install
make distclean
./configure --prefix=/usr \
--with-shared \
--without-normal \
--without-debug \
--without-cxx-binding \
--with-abi-version=5 \
--with-versioned-syms
make sources libs
cp -av lib/lib*.so.5* ../../src/rootfs/lib
cd ../../src/rootfs/lib
ln -s libncurses.so.6 libtinfo.so.6
ln -s libtinfo.so.6 libtinfo.so
ln -s libncurses.so.5 libtinfo.so.5
ln -s libtinfo.so.5 libtinfo.so
ln -s libncursesw.so.6 libncursesw.so.5
cd ../../../pkgsrc
}
zlib()
{
# Downloading zlib source
if [ ! -f "$zlib" ]; then
echo "Downloading zlib sources..."
wget $zlibmirror/$zlib
tar -xf $zlib
fi
# Confingure
cd $zlibsrcdir
./configure --prefix=$softwaredir
# Compile
make -j20
make install
# mv -v ../../src/rootfs/usr/lib/libz.so.* ../../src/rootfs/lib
# ln -sfv ../../src/rootfs/lib/libz.so ../../src/rootfs/usr/lib/libz.so
cd ..
}
chttpd()
{
if [ ! -d "chttpd" ]; then
git clone $chttpdmirror
fi
cd chttpd
make -j20
cp chttpd ../../src/rootfs/sbin/
cp inc/chttpd.conf ../../src/rootfs/etc
cp inc/chttpd ../../src/rootfs/etc/init.d
cd ..
}
ftp()
{
if [ ! -d "minFTPD" ]; then
git clone $ftpmirror
fi
cd minFTPD
make -j20
cp minFTPD ../../src/rootfs/sbin/
cp miniFTPD.conf ../../src/rootfs/etc/
}
case $1 in
all ) echo "Building all!"
ncurses; nano; chttpd; tcc; bash; termcap; zlib; dropbear; cd $tmpdir/../;;
* ) echo "Building $1..."
$1;;
esac

719
build-freon Executable file
View File

@ -0,0 +1,719 @@
#!/bin/bash
# Build linux system and generate ISO
# Version: 0.2.1
# (C) Chris Dorman, 2014-2018 - GPLv3+
workdir=`pwd`
corecount=25
# Download mirrors
syslinuxmirror="https://www.kernel.org/pub/linux/utils/boot/syslinux"
kernelmirror="https://cdn.kernel.org/pub/linux/kernel/v5.x"
busyboxmirror="http://busybox.net/downloads"
libcmirror="http://ftp.gnu.org/gnu/libc"
grubmirror="http://alpha.gnu.org/gnu/grub"
xzmirror="https://tukaani.org/xz"
# endtag used for iso filename, and some rootfs configs
endtag=`date +"%Y%m%d-%H%M"`
# Source code filenames
kernel="linux-5.1.12.tar.xz"
syslinux="syslinux-6.03.tar.gz"
busybox="busybox-1.27.0.tar.bz2"
libc="glibc-2.28.tar.xz"
grub="grub-2.02~rc2.tar.xz"
xz="xz-5.2.4.tar.xz"
# Source directory names
kerneldir=${kernel//.tar.xz}
busyboxdir=${busybox//.tar.bz2}
syslinuxdir=${syslinux//.tar.gz}
libcdir=${libc//.tar.xz}
grubdir=${grub//.tar.xz}
xzdir=${xz//.tar.xz}
# Echo colors
NORMAL="\e[0m"
RED="\e[0;31m"
GREEN="\e[0;32m"
BLUE="\e[0;34m"
YELLOW="\e[1;33m"
MAGENTA="\e[0;35m"
CYAN="\e[0;36m"
# function to check if errors occurred
status()
{
local CHECK=$?
echo -en "\033[68G"
if [ $CHECK = 0 ] ; then
echo -e "[ \e[0;32mOK\e[0m ]"
else
echo -e "[ \e[0;31mFAILED\e[0m ]"
exit 1
fi
}
# same as above but doesn't output [ OK ]
status_silent()
{
local CHECK=$?
echo -en "\033[68G"
if [ $CHECK != 0 ] ; then
echo -e "[ \e[0;31mFAILED\e[0m ]"
exit 1
fi
}
if [ "$(id -u)" != "0" ]; then
echo -e "[$RED Error $NORMAL] This script needs to be executed by root."
exit 1
fi
if [ ! -d "src" ]; then
echo -e "[$YELLOW Warning $NORMAL] No source directory!"
echo -n "Creating source directory..."
mkdir src > /dev/null 2>&1
status
fi
# check to see if source dir exists, if not create
if [ ! -d src ]; then
mkdir src
status_silent
fi
# if called, print everything instead of hiding. Debugging purposes
case $1 in
--verbose|-v) verbose=1;;
*) verbose=0;
esac
# Download source code
get_files()
{
if [ -d "rootfs" ]; then
echo -e "[$YELLOW Warning $NORMAL] Rootfs tree still exists."
echo -n "Cleaning build tree..."
rm -r rootfs > /dev/null 2>&1
status
fi
#echo " " # This is used to keep next echo from moving around
echo -e "[$YELLOW Working $NORMAL] Downloading needed files..."
if [ ! -f $kernel ]; then
echo -n "$kernel..."
wget $kernelmirror/$kernel > /dev/null 2>&1
status
fi
if [ ! -f $busybox ]; then
echo -n "$busybox..."
wget $busyboxmirror/$busybox > /dev/null 2>&1
status
fi
if [ ! -f $syslinux ]; then
echo -n "$syslinux..."
wget $syslinuxmirror/$syslinux > /dev/null 2>&1
status
fi
if [ ! -f $xz ]; then
echo -n "$xz..."
wget $xzmirror/$xz > /dev/null 2>&1
status
fi
if [ ! -f $libc ]; then
echo -n "$libc..."
wget $libcmirror/$libc > /dev/null 2>&1
status
fi
if [ ! -f $grub ]; then
echo -n "$grub..."
wget $grubmirror/$grub > /dev/null 2>&1
status
fi
}
# Build linux kernel
do_kernel()
{
echo -e "[$YELLOW Working $NORMAL] Configuring & building Linux kernel"
if [ ! -d $kerneldir ]; then
echo -n "Unpacking..."
tar xf $kernel > /dev/null 2>&1
status
fi
echo -n "Configuring..."
cd $kerneldir
cp ../../files/$kerneldir.conf .config
status
echo -n "Building kernel base..."
if [ "$verbose" == "1" ]; then
make bzImage -j$corecount
status
else
make bzImage -j$corecount > /dev/null 2>&1
status
fi
#echo -n "Building kernel modules..."
#if [ "$verbose" == "1" ]; then
# make modules -j20
# status
#else
# make modules -j20 > /dev/null 2>&1
# status
#fi
#echo -n "Installing kernel modules..."
#make INSTALL_MOD_PATH=`pwd`/_pkg modules_install > /dev/null 2>&1
#status
echo -n "Installing kernel headers..."
make INSTALL_HDR_PATH=`pwd`/_hdr headers_install > /dev/null 2>&1
status
cd ..
}
# Build busybox
do_busybox()
{
echo -e "[$YELLOW Working $NORMAL] Configuring & building system utilities"
if [ ! -d $busyboxdir ]; then
echo -n "Unpacking..."
tar xf $busybox > /dev/null 2>&1
status
fi
echo -n "Configuring..."
cd $busyboxdir
cp ../../files/$busyboxdir.conf .config
status_silent
make oldconfig > /dev/null 2>&1
status
echo -n "Building..."
if [ "$verbose" == "1" ]; then
make -j$corecount
status
else
make -j$corecount > /dev/null 2>&1
status
fi
echo -n "Installing..."
if [ ! -d ../rootfs ]; then
mkdir ../rootfs
fi
if [ "$verbose" == "1" ]; then
make install
status
else
make install > /dev/null 2>&1
status
fi
echo -n "Finishing up..."
chmod 4755 _install/bin/busybox
cp -a _install/* ../rootfs
status
cd ..
}
# Build system wide dependencies
do_libc()
{
echo -e "[$YELLOW Working $NORMAL] Configuring & building libc"
if [ ! -d $libcdir ]; then
echo "Unpacking..."
tar xf $libc > /dev/null 2>&1
status
fi
if [ ! -d $libcdir-build ]; then
mkdir $libcdir-build
fi
if [ ! -d rootfs/lib ]; then
mkdir rootfs/lib
fi
cd $libcdir-build
echo -n "Configuring..."
if [ "$verbose" == "1" ]; then
`pwd`/../$libcdir/configure \
--prefix=`pwd`/../rootfs \
--build=$MACHTYPE \
--host=x86_64-linux \
--target=x86_64-linux
#--with-headers=../$kerneldir/_hdr/include
status
else
`pwd`/../$libcdir/configure \
--prefix=`pwd`/../rootfs \
--build=$MACHTYPE \
--host=x86_64-linux \
--target=x86_64-linux > /dev/null 2>&1
#--with-headers=../$kerneldir/_hdr/include > /dev/null 2>&1
status
fi
echo -n "Building..."
if [ "$verbose" == "1" ]; then
make install-bootstrap-headers=yes install-headers
status
make -j$corecount csu/subdir_lib
status
install csu/crt1.o csu/crti.o csu/crtn.o `pwd`/../rootfs/lib
status
gcc \
-nostdlib \
-nostartfiles -shared -x c /dev/null -o `pwd`/../rootfs/lib/libc.so
status
make -j$corecount
status
else
make install-bootstrap-headers=yes install-headers > /dev/null 2>&1
status_silent
make -j$corecount csu/subdir_lib > /dev/null 2>&1
status_silent
install csu/crt1.o csu/crti.o csu/crtn.o `pwd`/../rootfs/lib > /dev/null 2>&1
status_silent
gcc \
-nostdlib \
-nostartfiles -shared -x c /dev/null -o `pwd`/../rootfs/lib/libc.so 2>&1
status_silent
make -j$corecount > /dev/null 2>&1
status
fi
echo -n "Copying to rootfs..."
if [ "$verbose" == "1" ]; then
make install
status
else
make install > /dev/null 2>&1
status
fi
echo -n "Cleaning files..."
#strip -v lib/* > /dev/null 2>&1
mkdir ../rootfs/lib64
cd ../rootfs/lib64
ln -s /lib/ld-2.28.so ld-linux-x86-64.so.2
status
cd ../..
}
# Build grub legacy bootloader and install
do_grub()
{
echo -e "[$YELLOW Working $NORMAL] Configuring & building bootloader"
echo -n "Extracting..."
if [ ! -d "$xzdir" ]; then
tar xf $xz > /dev/null 2>&1
status_silent
fi
if [ ! -d "$grubdir" ]; then
tar xf $grub > /dev/null 2>&1
status
fi
cd $grubdir
echo -n "Configuring..."
./configure --prefix=`pwd`/../rootfs \
--disable-efiemu \
--disable-werror > /dev/null 2>&1
status_silent
cd ../$xzdir
./configure --prefix=`pwd`/../rootfs \
--disable-static > /dev/null 2>&1
status
cd ../$grubdir
echo -n "Compiling..."
make -j$corecount > /dev/null 2>&1
status_silent
cd ../$xzdir
make -j$corecount > /dev/null 2>&1
status
cd ../$grubdir
echo -n "Copying to rootfs..."
make install > /dev/null 2>&1
status_silent
cd ../$xzdir
make install > /dev/null 2>&1
status
cd ../$grubdir
echo -n "Installing patched grub-mkconfig..."
rm ../rootfs/sbin/grub-mkconfig > /dev/null 2>&1
status_silent
cp ../../files/sbin/grub-mkconfig ../rootfs/sbin > /dev/null 2>&1
status
cd ../rootfs
#echo -n "Stripping grub..."
#strip -s rootfs/bin/grub-* > /dev/null 2>&1
#strip -s rootfs/sbin/grub-* > /dev/null 2>&1
cd ..
#status
}
# Install Freon utilities
do_utilities() {
echo -e "[$YELLOW Working $NORMAL] Installing Freon utilities"
echo -n "Copying files..."
cp -a ../files/bin/* rootfs/bin
status
}
# Configure rootfs for live boot
configure_system()
{
echo -e "[$YELLOW Working $NORMAL] Configuring root filesystem"
echo -n "Linking init..."
cd rootfs
if [ -f linuxrc ]; then
rm linuxrc
fi
if [ ! -f init ]; then
ln -s bin/busybox init
fi
status
echo -n "Laying out filesystem tree..."
mkdir -p dev etc root home proc media mnt sys tmp var
mkdir -p usr/{lib,local,share,games} \
var/{cache,lib,lock,log,games,run,spool,www} \
media/{cdrom,flash,usbdisk}
echo -n "Filling /dev..."
cp ../../files/bin/mkdevs bin/mkdevs
./bin/mkdevs dev > /dev/null 2>&1
status
echo -n "Configuring networking..."
echo "127.0.0.1 localhost" > etc/hosts
echo "localhost 127.0.0.1" > etc/networks
echo "linux" > etc/hostname
echo "order hosts,bind" > etc/host.conf
echo "multi on" >> etc/host.conf
mkdir etc/network
mkdir etc/network/if-up.d
mkdir etc/network/if-down.d
mkdir etc/network/if-pre-up.d
mkdir etc/network/if-post-down.d
echo "# loopback
auto lo
iface lo inet loopback
# Ethernet // this is default and can be changed for per system
auto eth0
iface eth0 inet dhcp
" > etc/network/interfaces
echo "
# /etc/nsswitch.conf: GNU Name Service Switch config.
#
passwd: files
group: files
shadow: files
hosts: files dns
networks: files
" > etc/nsswitch.conf
status
echo -n "Setting up default users and groups..."
echo "root:x:0:0:root:/root:/bin/sh" > etc/passwd
echo "root::13525:0:99999:7:::" > etc/shadow
echo "root:x:0:" > etc/group
echo "root:*::" > etc/gshadow
chmod 640 etc/shadow
chmod 640 etc/gshadow
status
#echo -n "Copying kernel modules..."
#cp -a ../$kerneldir/_pkg/* .
#status
#echo -n "Copying kernel headers..."
#cp -a ../$kerneldir/_hdr/* .
#status
echo -n "Compiling termtypes for core terminfo...."
tic -o ./usr/share/terminfo ../../files/terminfo/termtypes > /dev/null 2>&1
status
echo -n "Finishing up..."
echo "# /etc/securetty: List of terminals on which root is allowed to login.
#
console
# For people with serial port consoles
ttyS0
# Standard consoles
tty1
tty2
tty3
tty4
tty5
tty6
tty7" > etc/securetty
echo "/bin/sh" > etc/shells
echo "/bin/ash" >> etc/shells
echo "Freon Linux $endtag \r \l" > etc/issue
echo "" >> etc/issue
echo "Freon Linux, welcome..." > etc/motd
echo "[SUID]
# Allow command to be run by anyone.
su = ssx root.root
passwd = ssx root.root
loadkmap = ssx root.root
mount = ssx root.root
reboot = ssx root.root
halt = ssx root.root" > etc/busybox.conf
chmod 600 etc/busybox.conf
echo "::sysinit:/etc/init.d/rc.init
::respawn:-/bin/sh
tty2::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r
::ctrlaltdel:/sbin/reboot" > etc/inittab
echo "# /etc/profile: system-wide .profile file for the Bourne shells
PATH=\"/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin:/usr/local/sbin\"
LD_LIBRARY_PATH=\"/usr/lib:/lib:/usr/local/lib\"
TERM=\"xterm\"
TERMINFO=\"/usr/local/share/terminfo\"
NORMAL=\"\\[\\e[0m\\]\"
RED=\"\\[\\e[0;31m\\]\"
GREEN=\"\\[\\e[0;32m\\]\"
BLUE=\"\\[\\e[0;34m\\]\"
YELLOW=\"\\[\\e[1;33m\\]\"
MAGENTA=\"\\[\\e[0;35m\\]\"
CYAN=\"\\[\\e[0;36m\\]\"
if [ \"\`id -u\`\" -eq 0 ]; then
PS1=\"$RED\\u$GREEN@$BLUE\\h [ $MAGENTA\\w$BLUE ]# \$NORMAL\"
else
PS1=\"$RED\\u$GREEN@$BLUE\\h [ $MAGENTA\\w$BLUE ]\\\$ \$NORMAL\"
fi
export PATH LD_LIBRARY_PATH PS1 DISPLAY ignoreeof
umask 022
export G_FILENAME_ENCODING=iso8859-1
" > etc/profile
echo "proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
devpts /dev/pts devpts defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0" > etc/fstab
cp -a ../../files/etc/* etc
cd usr/share
mkdir kmap
cp -av ../../../../files/share/* .
chmod +x udhcpc/default.script
cd ../..
# mkdir x86_64-linux-gnu
# cd x86_64-linux-gnu
# ln -s ../libm-2.22.so libm.so.6
# ln -s ../libc-2.22.so libc.so.6
status
rm lib/*.a # In base-dev package
cd ..
}
# generate initramfs for live boot.
gen_rootfs()
{
echo -e "[$YELLOW Working $NORMAL] Generating filesystem..."
cd src/rootfs
echo -n "Stripping build..."
strip -s lib/*.so > /dev/null 2>&1
strip -s lib/*.so* > /dev/null 2>&1
strip -s bin/busybox > /dev/null 2>&1
strip -s bin/bash > /dev/null 2>&1
strip -s sbin/chttpd > /dev/null 2>&1
rm lib/*.a
status
echo -n "Compressing filesystem..."
find . -print | cpio -o -H newc | gzip -9 > ../rootfs.gz 2>&1
status
cd ..
}
regen_rootfs_bare()
{
echo -e "[$YELLOW Working $NORMAL] Generating filesystem..."
cd rootfs
echo -n "Compressing filesystem..."
find . -print | cpio -o -H newc | gzip -9 > ../rootfs.gz 2>&1
status
cd ..
}
# setup bootloader for iso
do_isolinux()
{
echo -e "[$YELLOW Working $NORMAL] Setting up bootloader."
if [ ! -d $syslinuxdir ]; then
echo -n "Unpacking $syslinuxdir..."
tar -xzf $syslinux > /dev/null 2>&1
status
fi
if [ ! -d cdroot ]; then
mkdir cdroot
mkdir cdroot/boot
fi
cd $syslinuxdir
echo -n "Copying isolinux files to iso..."
cp bios/core/isolinux.bin ../cdroot
cp bios/com32/elflink/ldlinux/ldlinux.c32 ../cdroot
status
echo -n "Generating isolinux config..."
echo "Freon Linux $endtag
Press <enter> to boot" > ../cdroot/display.txt
echo "display display.txt
default Freon
label Freon
kernel /boot/bzImage
append initrd=/boot/rootfs.gz rw root=/dev/null vga=788
implicit 0
prompt 1
timeout 5" > ../cdroot/isolinux.cfg
status
cd ..
}
# generate complete iso ready for boot
gen_iso()
{
echo -e -n "[$YELLOW Working $NORMAL] Generating bootable ISO image."
cp rootfs.gz cdroot/boot
cp $kerneldir/arch/x86/boot/bzImage cdroot/boot/bzImage
genisoimage -R -o ../freon-$endtag.iso -b isolinux.bin \
-c boot.cat -no-emul-boot -boot-load-size 4 \
-V "Freon Linux" -input-charset iso8859-1 -boot-info-table cdroot > /dev/null 2>&1
status
}
do_refer()
{
echo -e "[$YELLOW Working $NORMAL] Reconfiguring root filesystem"
cd rootfs
rm etc/init.d/*
rm etc/conf.d/*
cp -av ../../files/etc/* etc/ # Copy files/etc to filesystem (init scripts)
cp -av ../../files/bin/* bin/ # Copy installer and package manager
cp -av ../../files/share/* share/ # Stuffs
cd ..
}
cd src
case $1 in
refer) do_refer
regen_rootfs_bare
do_isolinux
gen_iso;;
*) get_files
do_kernel
do_busybox
do_libc
do_grub
configure_system
do_utilities
cd $workdir
./build-extensions all
cd $workdir
gen_rootfs
do_isolinux
gen_iso;;
esac

135
files/bin/freezedry Executable file
View File

@ -0,0 +1,135 @@
#!/bin/sh
### FreezeDry ###
# Hand written installer for Freon Linux
# (C) Chris Dorman, 2017 LGPLv2
# Include Freon Linux's config
. /etc/conf.d/main.conf
. /etc/conf.d/status
# Check if script was ran by root
if [ "$(id -u)" != "0" ]; then
echo -e "[$RED Error $NORMAL] This script needs to be executed by root."
exit 1
fi
# Move to root of filesystem
cd /
case $1 in
install)
if [ ! -f "$2" ]; then
echo "Error: $2 doesn't exist. exit."
exit 1
fi
# Include config file
. $2
# Make directories if they don't exist
if [ ! -d "/mnt/inst" ]; then
mkdir /mnt/inst
fi
if [ ! -d "/mnt/target" ]; then
mkdir /mnt/target
fi
# Format device partition
echo -e "[$YELLOW Working $NORMAL] Formatting installation partition"
echo -n "Formatting..."
mkfs.ext2 $DEVPARTITION > /dev/null 2>&1
status
echo -e "[$YELLOW Working $NORMAL] Mounting filesystems for installation"
echo -n "Installation media..."
mount $INSTMEDIA /mnt/inst > /dev/null 2>&1
status
echo -n "Device: $DEVPARTITION..."
mount $DEVPARTITION /mnt/target > /dev/null 2>&1
status
echo -e "[$YELLOW Working $NORMAL] Copying and extracting system files"
echo -n "Copying filesystem..."
cd /mnt/inst
cp boot/rootfs.gz /mnt/target
status
echo -n "Copying Linux kernel..."
mkdir /mnt/target/boot
cp boot/bzImage /mnt/target/boot
status
echo -n "Extracting filesystem..."
cd ../target
zcat rootfs.gz | cpio -id > /dev/null 2>&1
status
echo -n "Removing filesystem archive..."
rm rootfs.gz
status
echo -e "[$YELLOW Working $NORMAL] Installing bootloader to $DEVICE"
echo -n "Executing grub-install..."
grub-install --root-directory=/mnt/target /dev/hda --directory=/lib/grub/i386-pc > /dev/null 2>&1
status
echo -n "Generating makefile..."
echo "#
# /boot/grub/grub.cfg - freon grub2 config file
# Set menu colors
set menu_color_normal=white/blue
set menu_color_highlight=light-blue/white
# Set menu display time
set timeout=10
# Set the default boot entry (first is 0)
set default=0
# Boot entries:
# CRUX
menuentry \"Freon Linux $FREONVERSION\" {
linux /boot/bzImage root=$DEVPARTITION
}
" >> /mnt/target/boot/grub/grub.cfg
status
;;
config)
case $2 in
*)
echo "### FreezeDry configuration file ###
# Installation media device (Hardware with Freon's system files)
# Examples:
# CDROM: /dev/cdrom
# USB: /dev/sda1
INSTMEDIA=\"/dev/cdrom\"
# Installation device (Hardware used for the Freon installation)
# Example: /dev/hda
DEVICE=\"/dev/hda\"
# Device partition (Used for the Freon installation)
# Example: /dev/hda1: First partition of device hda
DEVPARTITION=\"/dev/hda1\"" >> $2
;;
esac
;;
help|*)
echo "FreezeDry: Freon Installer ~ Install Freon Linux to a device"
echo "Usage: "
echo " freezedry install <path to config file>: Install Freon Linux"
echo " freezedry config <path to config> : Create a default config";;
esac
exit 0

193
files/bin/ldd Executable file
View File

@ -0,0 +1,193 @@
#! /bin/bash
# Copyright (C) 1996-2016 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# The GNU C Library 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
# Lesser General Public License for more details.
# You should have received a copy of the GNU Lesser General Public
# License along with the GNU C Library; if not, see
# <http://www.gnu.org/licenses/>.
# This is the `ldd' command, which lists what shared libraries are
# used by given dynamically-linked executables. It works by invoking the
# run-time dynamic linker as a command and setting the environment
# variable LD_TRACE_LOADED_OBJECTS to a non-empty value.
# We should be able to find the translation right at the beginning.
TEXTDOMAIN=libc
TEXTDOMAINDIR=/usr/share/locale
RTLDLIST="/lib/ld-linux.so.2 /lib64/ld-linux-x86-64.so.2 /libx32/ld-linux-x32.so.2"
warn=
bind_now=
verbose=
while test $# -gt 0; do
case "$1" in
--vers | --versi | --versio | --version)
echo 'ldd (Debian GLIBC 2.24-11+deb9u4) 2.24'
printf $"Copyright (C) %s Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
" "2016"
printf $"Written by %s and %s.
" "Roland McGrath" "Ulrich Drepper"
exit 0
;;
--h | --he | --hel | --help)
echo $"Usage: ldd [OPTION]... FILE...
--help print this help and exit
--version print version information and exit
-d, --data-relocs process data relocations
-r, --function-relocs process data and function relocations
-u, --unused print unused direct dependencies
-v, --verbose print all information
"
printf $"For bug reporting instructions, please see:\\n%s.\\n" \
"<http://www.debian.org/Bugs/>"
exit 0
;;
-d | --d | --da | --dat | --data | --data- | --data-r | --data-re | \
--data-rel | --data-relo | --data-reloc | --data-relocs)
warn=yes
shift
;;
-r | --f | --fu | --fun | --func | --funct | --functi | --functio | \
--function | --function- | --function-r | --function-re | --function-rel | \
--function-relo | --function-reloc | --function-relocs)
warn=yes
bind_now=yes
shift
;;
-v | --verb | --verbo | --verbos | --verbose)
verbose=yes
shift
;;
-u | --u | --un | --unu | --unus | --unuse | --unused)
unused=yes
shift
;;
--v | --ve | --ver)
echo >&2 $"ldd: option \`$1' is ambiguous"
exit 1
;;
--) # Stop option processing.
shift; break
;;
-*)
echo >&2 'ldd:' $"unrecognized option" "\`$1'"
echo >&2 $"Try \`ldd --help' for more information."
exit 1
;;
*)
break
;;
esac
done
nonelf ()
{
# Maybe extra code for non-ELF binaries.
return 1;
}
add_env="LD_TRACE_LOADED_OBJECTS=1 LD_WARN=$warn LD_BIND_NOW=$bind_now"
add_env="$add_env LD_LIBRARY_VERSION=\$verify_out"
add_env="$add_env LD_VERBOSE=$verbose"
if test "$unused" = yes; then
add_env="$add_env LD_DEBUG=\"$LD_DEBUG${LD_DEBUG:+,}unused\""
fi
# The following command substitution is needed to make ldd work in SELinux
# environments where the RTLD might not have permission to write to the
# terminal. The extra "x" character prevents the shell from trimming trailing
# newlines from command substitution results. This function is defined as a
# subshell compound list (using "(...)") to prevent parameter assignments from
# affecting the calling shell execution environment.
try_trace() (
output=$(eval $add_env '"$@"' 2>&1; rc=$?; printf 'x'; exit $rc)
rc=$?
printf '%s' "${output%x}"
return $rc
)
case $# in
0)
echo >&2 'ldd:' $"missing file arguments"
echo >&2 $"Try \`ldd --help' for more information."
exit 1
;;
1)
single_file=t
;;
*)
single_file=f
;;
esac
result=0
for file do
# We don't list the file name when there is only one.
test $single_file = t || echo "${file}:"
case $file in
*/*) :
;;
*) file=./$file
;;
esac
if test ! -e "$file"; then
echo "ldd: ${file}:" $"No such file or directory" >&2
result=1
elif test ! -f "$file"; then
echo "ldd: ${file}:" $"not regular file" >&2
result=1
elif test -r "$file"; then
RTLD=
ret=1
for rtld in ${RTLDLIST}; do
if test -x $rtld; then
dummy=`$rtld 2>&1`
if test $? = 127; then
verify_out=`${rtld} --verify "$file"`
ret=$?
case $ret in
[02]) RTLD=${rtld}; break;;
esac
fi
fi
done
case $ret in
0|2)
try_trace "$RTLD" "$file" || result=1
;;
1)
# This can be a non-ELF binary or no binary at all.
nonelf "$file" || {
echo $" not a dynamic executable"
result=1
}
;;
*)
echo 'ldd:' ${RTLD} $"exited with unknown exit code" "($ret)" >&2
exit 1
;;
esac
else
echo 'ldd:' $"error: you do not have read permission for" "\`$file'" >&2
result=1
fi
done
exit $result
# Local Variables:
# mode:ksh
# End:

221
files/bin/mkdevs Executable file
View File

@ -0,0 +1,221 @@
#!/bin/sh
# mktazdevs.sh: Make device files for SliTaz GNU/Linux
# 2007/01/25
#
# Script functions.
status()
{
local CHECK=$?
echo -en "\033[68G"
if [ $CHECK = 0 ] ; then
echo -e "\033[1mOK\033[0m"
else
echo -e "\033[1mFailed\033[0m"
fi
}
# We do our work in the dev/ directory.
if [ -z "$1" ] ; then
echo "usage: `basename $0` path/to/dev"
exit 1
fi
# script start.
echo -n "Moving to $1... "
cd $1
status
# make usfull directories.
echo -n "Starting to build directories... "
mkdir pts input net usb shm
status
# script start.
#
echo -n "Starting to build devices... "
# input devs.
#
mknod input/event0 c 13 64
mknod input/event1 c 13 65
mknod input/event2 c 13 66
mknod input/mouse0 c 13 32
mknod input/mice c 13 63
mknod input/ts0 c 254 0
# miscellaneous one-of-a-kind stuff.
#
mknod logibm c 10 0
mknod psaux c 10 1
mknod inportbm c 10 2
mknod atibm c 10 3
mknod console c 5 1
mknod full c 1 7
mknod kmem c 1 2
mknod mem c 1 1
mknod null c 1 3
mknod port c 1 4
mknod random c 1 8
mknod urandom c 1 9
mknod zero c 1 5
mknod rtc c 10 135
mknod sr0 b 11 0
mknod sr1 b 11 1
mknod agpgart c 10 175
mknod dri c 10 63
mknod ttyS0 c 4 64
mknod audio c 14 4
mknod beep c 10 128
mknod ptmx c 5 2
mknod nvram c 10 144
ln -s /proc/kcore core
# net/tun device
#
mknod net/tun c 10 200
# framebuffer devs.
#
mknod fb0 c 29 0
mknod fb1 c 29 32
mknod fb2 c 29 64
mknod fb3 c 29 96
mknod fb4 c 29 128
mknod fb5 c 29 160
mknod fb6 c 29 192
# usb/hiddev
#
mknod usb/hiddev0 c 180 96
mknod usb/hiddev1 c 180 97
mknod usb/hiddev2 c 180 98
mknod usb/hiddev3 c 180 99
mknod usb/hiddev4 c 180 100
mknod usb/hiddev5 c 180 101
mknod usb/hiddev6 c 180 102
# IDE HD devs
# with a fiew concievable partitions; you can do
# more of them yourself as you need 'em.
#
# hda devs
#
mknod hda b 3 0
mknod hda1 b 3 1
mknod hda2 b 3 2
mknod hda3 b 3 3
mknod hda4 b 3 4
mknod hda5 b 3 5
mknod hda6 b 3 6
mknod hda7 b 3 7
mknod hda8 b 3 8
mknod hda9 b 3 9
# hdb devs
#
mknod hdb b 3 64
mknod hdb1 b 3 65
mknod hdb2 b 3 66
mknod hdb3 b 3 67
mknod hdb4 b 3 68
mknod hdb5 b 3 69
mknod hdb6 b 3 70
mknod hdb7 b 3 71
mknod hdb8 b 3 72
mknod hdb9 b 3 73
# hdc and hdd with cdrom symbolic link.
#
mknod hdc b 22 0
mknod hdd b 22 64
ln -s hdc cdrom
# sda devs
#
mknod sda b 8 0
mknod sda1 b 8 1
mknod sda2 b 8 2
mknod sda3 b 8 3
mknod sda4 b 8 4
mknod sda5 b 8 5
mknod sda6 b 8 6
mknod sda7 b 8 7
mknod sda8 b 8 8
mknod sda9 b 8 9
ln -s sda1 flash
# sdb devs
#
mknod sdb b 8 16
mknod sdb1 b 8 17
mknod sdb2 b 8 18
mknod sdb3 b 8 19
mknod sdb4 b 8 20
mknod sdb5 b 8 21
mknod sdb6 b 8 22
mknod sdb7 b 8 23
mknod sdb8 b 8 24
mknod sdb9 b 9 25
# Floppy device.
#
mknod fd0 b 2 0
# loop devs
#
for i in `seq 0 7`; do
mknod loop$i b 7 $i
done
# ram devs
#
for i in `seq 0 7`; do
mknod ram$i b 1 $i
done
ln -s ram1 ram
# tty devs
#
mknod tty c 5 0
for i in `seq 0 7`; do
mknod tty$i c 4 $i
done
# virtual console screen devs
#
for i in `seq 0 7`; do
mknod vcs$i b 7 $i
done
ln -s vcs0 vcs
# virtual console screen w/ attributes devs
#
for i in `seq 0 7`; do
mknod vcsa$i b 7 $i
done
ln -s vcsa0 vcsa
status
# Symlinks.
#
ln -snf /proc/self/fd fd
ln -snf /proc/self/fd/0 stdin
ln -snf /proc/self/fd/1 stdout
ln -snf /proc/self/fd/2 stderr
# Changes permissions.
#
echo -n "Changing permissions on devices... "
chmod 0666 ptmx
chmod 0666 null
chmod 0622 console
chmod 0666 tty*
status
# script end
echo ""
echo "All devices are build..."
date

178
files/bin/thaw Executable file
View File

@ -0,0 +1,178 @@
#!/bin/sh
### Thaw ###
#
# Freon Linux package manager
# (C) Chris Dorman, 2017 LGPLv2
#
### END ####
# Include Freon Linux's config
. /etc/conf.d/main.conf
. /etc/conf.d/status
# Nutrapak root
THAWROOT="/share/thaw"
# Package list
PKGLIST="/share/thaw/info.lst"
# Package list name (could change in the future)
PKGLISTNAME="info.lst"
# Mirror file
MIRRORFILE="/share/thaw/mirror.txt"
# TCZ mount point
TCZMOUNT="/mnt/pkg"
# Temp path
TMPPATH="/tmp/thaw"
# Installed package dir
INSTALLEDPKG="/share/thaw/installed"
if [ $(id -u) != "0" ]; then
echo "Error: must be root to operate this command."
exit 1
fi
# Check Thaw root directory
if [ ! -d "$TCZMOUNT" ]; then
mkdir $TCZMOUNT
fi
# Check Thaw tmp directory
if [ ! -d "$TMPPATH" ]; then
mkdir $TMPPATH
fi
# Check if any packages are installed, if not fix before break
if [ ! -d "$INSTALLEDPKG" ]; then
mkdir $INSTALLEDPKG
fi
case $1 in
get-install )
echo ""
# check package list
if [ ! -s $PKGLIST ]; then
rm $PKGLIST
echo "Getting package list... "
wget $(cat $MIRRORFILE)/$PKGLISTNAME -P $THAWROOT
fi
# check if package is already installed
if [ -f "$INSTALLEDPKG/$2" ]; then
echo "${2} is already installed."
exit 0
fi
if [ ! -d $TMPPATH/$2 ]; then
mkdir $TMPPATH/$2
fi
# Check to see if package exists, if so download
echo "Checking ${2}'s existence... "
if grep "$2" $PKGLIST > /dev/null
then
echo ""
echo "Downloading ${2}..."
wget $(cat $MIRRORFILE)/$2.tcz -P $TMPPATH/$2
wget $(cat $MIRRORFILE)/$2.tcz.dep -P $TMPPATH/$2
else
echo "${2} was not found in repository."
exit 1
fi
# Examine dependencies for package
if [ -f "$TMPPATH/$2/$2.tcz.dep" ]; then
i=1
echo ""
echo "++++++++++++++++++++++++++++++++++++++++"
echo "Examining dependencies... "
echo "++++++++++++++++++++++++++++++++++++++++"
while read line; do
if [ -f "$INSTALLEDPKG/$line" ]; then
echo "$line - INSTALLED"
else
echo "$line"
fi
done < $TMPPATH/$2/$2.tcz.dep
echo "++++++++++++++++++++++++++++++++++++++++"
echo "Installing dependencies..."
echo "++++++++++++++++++++++++++++++++++++++++"
while read line; do
if [ -f "$INSTALLEDPKG/$line" ]; then
echo "${line} already installed"
else
echo "Installing ${line} for ${2}"
thaw get-install ${line%.tcz}
fi
done < $TMPPATH/$2/$2.tcz.dep
echo "++++++++++++++++++++++++++++++++++++++++"
fi
echo -n "Extracting package to tmp... "
mount -o loop $TMPPATH/$2/$2.tcz $TCZMOUNT
status_serious
echo -n "Installing ${2}..."
if [ -f "$TMPPATH/$2/$2.tcz.dep" ]; then
rm $TMPPATH/$2/$2.tcz.dep
fi
cp -av $TCZMOUNT/* /
status_serious
#if [ -f "$TMPPATH/$2/execute.sh" ]; then
# echo "Running ${2}'s execution script..."
# $TMPPATH/$2/execute.sh
#fi
#if [ -f "/execute.sh" ]; then
# rm /execute.sh
#fi
echo -n "Cleaning up..."
rm -r $TMPPATH/$2
status
echo -n "Marking ${2} in the installation database..."
touch $INSTALLEDPKG/$2
status
echo "${2} Installed!"
echo ""
;;
update )
if [ -f $PKGLIST ]; then
rm $PKGLIST
fi
echo "Getting package list... "
wget $(cat $MIRRORFILE)/$PKGLISTNAME -P $THAWROOT
status_serious
;;
search )
if [ ! -s $PKGLIST ]; then
rm $PKGLIST
echo "Getting package list... "
wget $(cat $MIRRORFILE)/$PKGLISTNAME -P $THAWROOT
status_serious
fi
echo "Searching results..."
echo "++++++++++++++++++++++++++++++++++++++++"
grep -i "$2" $PKGLIST
echo "++++++++++++++++++++++++++++++++++++++++"
;;
* )
echo "Usage:
thaw get-install <package> : Install a package
thaw update : Update system package list
thaw search <query> : Search for a package in the database
"
;;
esac

1138
files/busybox-1.27.0.conf Normal file

File diff suppressed because it is too large Load Diff

13
files/etc/conf.d/main.conf Executable file
View File

@ -0,0 +1,13 @@
# config
LOG_KERNEL="yes"
KMAP="en_US"
SYSLOGD_LENGTH="40"
NETINTERFACE="eth0"
NETTYPE="dynamic"
NORMAL="\e[0m"
RED="\e[0;31m"
GREEN="\e[0;32m"
BLUE="\e[0;34m"
YELLOW="\e[1;33m"
MAGENTA="\e[0;35m"
CYAN="\e[0;36m"

View File

@ -0,0 +1,7 @@
# Static network config
IP="192.168.0.6"
MASK="255.255.255.0"
GATEWAY="192.168.0.1"
DNS_SERVER="192.168.0.1"

24
files/etc/conf.d/status Executable file
View File

@ -0,0 +1,24 @@
status_serious()
{
local CHECK=$?
echo -en "\033[68G"
if [ $CHECK = 0 ] ; then
echo -e "[ \e[0;32mOK\e[0m ]"
else
echo -e "[ \e[0;31mFAILED\e[0m ]"
exit 1
fi
}
status()
{
local CHECK=$?
echo -en "\033[68G"
if [ $CHECK = 0 ] ; then
echo -e "[ \e[0;32mOK\e[0m ]"
else
echo -e "[ \e[0;31mFAILED\e[0m ]"
echo "Errors where found."
exit 1
fi
}

23
files/etc/init.d/dropbear Executable file
View File

@ -0,0 +1,23 @@
#!/bin/sh
# Start dropbear services - Freon Linux
. /etc/conf.d/status
DROPBEAR_PORT=22
DROPBEAR_RSAKEY=/etc/dropbear/dropbear_rsa_host_key
DROPBEAR_DSSKEY=/etc/dropbear/dropbear_dss_host_key
DROPBEAR_RECEIVE_WINDOW=65535
if [ ! -f /etc/dropbear/dropbear_rsa_host_key ]; then
dropbearkey -t rsa -f $DROPBEAR_RSAKEY
fi
if [ ! -f /etc/dropbear/dropbear_dss_host_key ]; then
dropbearkey -t dss -f $DROPBEAR_DSSKEY
fi
case $1 in
start ) echo -n "Starting dropbear services..."; dropbear -d $DROPBEAR_DSSKEY -r $DROPBEAR_RSAKEY -p $DROPBEAR_PORT -W $DROPBEAR_RECEIVE_WINDOW; status;;
stop ) echo -n "Stopping dropbear services..."; killall dropbear; status;;
* ) echo "Usage: dropbear [start|stop].";;
esac

92
files/etc/init.d/rc.init Executable file
View File

@ -0,0 +1,92 @@
#!/bin/sh
. /etc/conf.d/status
. /etc/conf.d/main.conf
. /etc/conf.d/static_network.conf
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
export LD_LIBRARY_PATH=/lib:/lib64:/usr/lib
# clear
clear
# Welcome message!
echo "Welcome to Freon Linux!"
# mount proc on boot
echo -n "Mounting /proc..."
/bin/mount -t proc proc /proc -o nosuid,noexec,nodev
status
# mount /sys
echo -n "Mounting /sys..."
/bin/mount -t sysfs sys /sys -o nosuid,noexec,nodev
status
# Remount rootfs with read and write
echo -n "Remounting rootfs... "
/bin/mount -o remount,rw / > /dev/null
status
echo -n "Checking some local paths..."
# Check if mtab is linked to mounts
if [ ! -L /etc/mtab ]; then
ln -s /proc/mounts /etc/mtab
fi
# Check to see if keymap exists
if [ ! -f /usr/share/kmap/$KMAP.kmap ]; then
/bin/dumpkmap > /usr/share/kmap/$KMAP.kmap
fi
status
# Deal with mdev
/sbin/mdev -s
echo /sbin/mdev > /proc/sys/kernel/hotplug
# Set hostname
echo -n "Setting hostname... "
/bin/hostname -F /etc/hostname > /dev/null
status
# Configure network loopback
echo -n "Configuring network loopback... "
/sbin/ifconfig lo 127.0.0.1 up
/sbin/route add 127.0.0.1 lo
status
# Get eth0 linked up
echo -n "Prepare $NETINTERFACE... "
/sbin/ifconfig $NETINTERFACE up > /dev/null
status
# Start network
if [ "$NETTYPE" = "dynamic" ] ; then
echo -n "Starting UDHCPC... "
/sbin/udhcpc -b -i $NETINTERFACE -p /var/run/udhcpc.$NETINTERFACE.pid > /dev/null
status
else
echo -n "Static IP set, starting $IP on $NETINTERFACE... "
/sbin/ifconfig $NETINTERFACE $IP netmask $MASK up
/sbin/route add default gateway $GATEWAY
echo -n "nameserver $DNS_SERVER" > /etc/resolv.conf
fi
echo -n "Loading Keymap..."
/sbin/loadkmap < /usr/share/kmap/$KMAP.kmap
status
/etc/init.d/dropbear start
/etc/init.d/chttpd start
export TERM="xterm"
export TERMINFO="/share/terminfo"
# clear screen before getty is enabled
clear
# Show login prompt
getty 9600 tty1

8600
files/linux-5.1.12.conf Normal file

File diff suppressed because it is too large Load Diff

282
files/sbin/grub-mkconfig Executable file
View File

@ -0,0 +1,282 @@
#! /bin/sh
set -e
# Generate grub.cfg by inspecting /boot contents.
# Copyright (C) 2006,2007,2008,2009,2010 Free Software Foundation, Inc.
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
datarootdir="/share"
prefix=""
exec_prefix=""
sbindir="/sbin"
bindir="/bin"
sysconfdir="/etc"
PACKAGE_NAME=GRUB
PACKAGE_VERSION=2.02~rc2
host_os=gnu-linux
datadir="/"
if [ "x$pkgdatadir" = x ]; then
pkgdatadir="${datadir}/@PACKAGE@"
fi
# export it for scripts
export pkgdatadir
grub_cfg=""
grub_mkconfig_dir="${sysconfdir}"/grub.d
self=`basename $0`
grub_probe="${sbindir}/@grub_probe@"
grub_file="${bindir}/@grub_file@"
grub_editenv="${bindir}/@grub_editenv@"
grub_script_check="${bindir}/@grub_script_check@"
export TEXTDOMAIN=@PACKAGE@
export TEXTDOMAINDIR="@localedir@"
. "${pkgdatadir}/grub-mkconfig_lib"
# Usage: usage
# Print the usage.
usage () {
gettext_printf "Usage: %s [OPTION]\n" "$self"
gettext "Generate a grub config file"; echo
echo
print_option_help "-o, --output=$(gettext FILE)" "$(gettext "output generated config to FILE [default=stdout]")"
print_option_help "-h, --help" "$(gettext "print this message and exit")"
print_option_help "-v, --version" "$(gettext "print the version information and exit")"
echo
gettext "Report bugs to <bug-grub@gnu.org>."; echo
}
argument () {
opt=$1
shift
if test $# -eq 0; then
gettext_printf "%s: option requires an argument -- \`%s'\n" "$self" "$opt" 1>&2
exit 1
fi
echo $1
}
# Check the arguments.
while test $# -gt 0
do
option=$1
shift
case "$option" in
-h | --help)
usage
exit 0 ;;
-V | --version)
echo "$self (${PACKAGE_NAME}) ${PACKAGE_VERSION}"
exit 0 ;;
-o | --output)
grub_cfg=`argument $option "$@"`; shift;;
--output=*)
grub_cfg=`echo "$option" | sed 's/--output=//'`
;;
-*)
gettext_printf "Unrecognized option \`%s'\n" "$option" 1>&2
usage
exit 1
;;
# Explicitly ignore non-option arguments, for compatibility.
esac
done
if [ "x$EUID" = "x" ] ; then
EUID=`id -u`
fi
if [ "$EUID" != 0 ] ; then
root=f
case "`uname 2>/dev/null`" in
CYGWIN*)
# Cygwin: Assume root if member of admin group
for g in `id -G 2>/dev/null` ; do
case $g in
0|544) root=t ;;
esac
done ;;
esac
if [ $root != t ] ; then
gettext_printf "%s: You must run this as root\n" "$self" >&2
exit 1
fi
fi
set $grub_probe dummy
if test -f "$1"; then
:
else
gettext_printf "%s: Not found.\n" "$1" 1>&2
exit 1
fi
# Device containing our userland. Typically used for root= parameter.
GRUB_DEVICE="`${grub_probe} --target=device /`"
GRUB_DEVICE_UUID="`${grub_probe} --device ${GRUB_DEVICE} --target=fs_uuid 2> /dev/null`" || true
# Device containing our /boot partition. Usually the same as GRUB_DEVICE.
GRUB_DEVICE_BOOT="`${grub_probe} --target=device /boot`"
GRUB_DEVICE_BOOT_UUID="`${grub_probe} --device ${GRUB_DEVICE_BOOT} --target=fs_uuid 2> /dev/null`" || true
# Filesystem for the device containing our userland. Used for stuff like
# choosing Hurd filesystem module.
GRUB_FS="`${grub_probe} --device ${GRUB_DEVICE} --target=fs 2> /dev/null || echo unknown`"
if [ x"$GRUB_FS" = xunknown ]; then
GRUB_FS="$(stat -f --printf=%T / || echo unknown)"
fi
if test -f ${sysconfdir}/default/grub ; then
. ${sysconfdir}/default/grub
fi
# XXX: should this be deprecated at some point?
if [ "x${GRUB_TERMINAL}" != "x" ] ; then
GRUB_TERMINAL_INPUT="${GRUB_TERMINAL}"
GRUB_TERMINAL_OUTPUT="${GRUB_TERMINAL}"
fi
termoutdefault=0
if [ "x${GRUB_TERMINAL_OUTPUT}" = "x" ]; then
GRUB_TERMINAL_OUTPUT=gfxterm;
termoutdefault=1;
fi
for x in ${GRUB_TERMINAL_OUTPUT}; do
case "x${x}" in
xgfxterm) ;;
xconsole | xserial | xofconsole | xvga_text)
# make sure all our children behave in conformance with ascii..
export LANG=C;;
*) echo "Invalid output terminal \"${GRUB_TERMINAL_OUTPUT}\"" >&2 ; exit 1 ;;
esac
done
GRUB_ACTUAL_DEFAULT="$GRUB_DEFAULT"
if [ "x${GRUB_ACTUAL_DEFAULT}" = "xsaved" ] ; then GRUB_ACTUAL_DEFAULT="`"${grub_editenv}" - list | sed -n '/^saved_entry=/ s,^saved_entry=,,p'`" ; fi
# These are defined in this script, export them here so that user can
# override them.
export GRUB_DEVICE \
GRUB_DEVICE_UUID \
GRUB_DEVICE_BOOT \
GRUB_DEVICE_BOOT_UUID \
GRUB_FS \
GRUB_FONT \
GRUB_PRELOAD_MODULES \
GRUB_ACTUAL_DEFAULT
# These are optional, user-defined variables.
export GRUB_DEFAULT \
GRUB_HIDDEN_TIMEOUT \
GRUB_HIDDEN_TIMEOUT_QUIET \
GRUB_TIMEOUT \
GRUB_TIMEOUT_STYLE \
GRUB_DEFAULT_BUTTON \
GRUB_HIDDEN_TIMEOUT_BUTTON \
GRUB_TIMEOUT_BUTTON \
GRUB_TIMEOUT_STYLE_BUTTON \
GRUB_BUTTON_CMOS_ADDRESS \
GRUB_BUTTON_CMOS_CLEAN \
GRUB_DISTRIBUTOR \
GRUB_CMDLINE_LINUX \
GRUB_CMDLINE_LINUX_DEFAULT \
GRUB_CMDLINE_XEN \
GRUB_CMDLINE_XEN_DEFAULT \
GRUB_CMDLINE_LINUX_XEN_REPLACE \
GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT \
GRUB_CMDLINE_NETBSD \
GRUB_CMDLINE_NETBSD_DEFAULT \
GRUB_CMDLINE_GNUMACH \
GRUB_TERMINAL_INPUT \
GRUB_TERMINAL_OUTPUT \
GRUB_SERIAL_COMMAND \
GRUB_DISABLE_LINUX_UUID \
GRUB_DISABLE_RECOVERY \
GRUB_VIDEO_BACKEND \
GRUB_GFXMODE \
GRUB_BACKGROUND \
GRUB_THEME \
GRUB_GFXPAYLOAD_LINUX \
GRUB_DISABLE_OS_PROBER \
GRUB_INIT_TUNE \
GRUB_SAVEDEFAULT \
GRUB_ENABLE_CRYPTODISK \
GRUB_BADRAM \
GRUB_OS_PROBER_SKIP_LIST \
GRUB_DISABLE_SUBMENU
if test "x${grub_cfg}" != "x"; then
rm -f "${grub_cfg}.new"
oldumask=$(umask); umask 077
exec > "${grub_cfg}.new"
umask $oldumask
fi
gettext "Generating grub configuration file ..." >&2
echo >&2
cat << EOF
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by $self using templates
# from ${grub_mkconfig_dir} and settings from ${sysconfdir}/default/grub
#
EOF
for i in "${grub_mkconfig_dir}"/* ; do
case "$i" in
# emacsen backup files. FIXME: support other editors
*~) ;;
# emacsen autosave files. FIXME: support other editors
*/\#*\#) ;;
*)
if grub_file_is_not_garbage "$i" && test -x "$i" ; then
echo
echo "### BEGIN $i ###"
"$i"
echo "### END $i ###"
fi
;;
esac
done
if test "x${grub_cfg}" != "x" ; then
if ! ${grub_script_check} ${grub_cfg}.new; then
# TRANSLATORS: %s is replaced by filename
gettext_printf "Syntax errors are detected in generated GRUB config file.
Ensure that there are no errors in /etc/default/grub
and /etc/grub.d/* files or please file a bug report with
%s file attached." "${grub_cfg}.new" >&2
echo >&2
exit 1
else
# none of the children aborted with error, install the new grub.cfg
mv -f ${grub_cfg}.new ${grub_cfg}
fi
fi
gettext "done" >&2
echo >&2

View File

@ -0,0 +1 @@
http://192.168.0.57/pub/freon/pkgs

View File

@ -0,0 +1,63 @@
#!/bin/sh
# udhcpc script edited by Tim Riker <Tim@Rikers.org>
[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
RESOLV_CONF="/etc/resolv.conf"
[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
[ -n "$subnet" ] && NETMASK="netmask $subnet"
case "$1" in
deconfig)
grep -q -v ip= /proc/cmdline
if [ $? -eq 0 ]; then
/sbin/ifconfig $interface up
fi
grep -q -v nfsroot= /proc/cmdline
if [ $? -eq 0 ]; then
/sbin/ifconfig $interface 0.0.0.0
fi
if [ -x /usr/sbin/avahi-autoipd ]; then
/usr/sbin/avahi-autoipd -k $interface
fi
;;
leasefail|nak)
if [ -x /usr/sbin/avahi-autoipd ]; then
/usr/sbin/avahi-autoipd -wD $interface --no-chroot
fi
;;
renew|bound)
if [ -x /usr/sbin/avahi-autoipd ]; then
/usr/sbin/avahi-autoipd -k $interface
fi
/sbin/ifconfig $interface $ip $BROADCAST $NETMASK
if [ -n "$router" ] ; then
echo "deleting routers"
while route del default gw 0.0.0.0 dev $interface ; do
:
done
for i in $router ; do
route add default gw $i dev $interface
done
fi
if [ -f /root/.xbmc/myResolv.conf ] ; then
echo overriding dns with myResolv.conf
cp -f /root/.xbmc/myResolv.conf $RESOLV_CONF
else
echo -n > $RESOLV_CONF
[ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
for i in $dns ; do
echo adding dns $i
echo nameserver $i >> $RESOLV_CONF
done
fi
;;
esac
exit 0

18655
files/terminfo/termtypes Normal file

File diff suppressed because it is too large Load Diff

4
files/util/compress Executable file
View File

@ -0,0 +1,4 @@
#!/bin/sh
tar -vcf $1.tar $1
xz -z $1.tar

8
files/util/mkpak Executable file
View File

@ -0,0 +1,8 @@
#!/bin/sh
echo "Packing $1"
cd $1/
tar -czf $1.tgz *
mv $1.tgz ../
cd ..
mv $1.tgz $1.pak

3
files/util/sortpkglst Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
sort -t $'\t' -k5,5rn package.list