Merge da7dc4d54c into 135965dc20
This commit is contained in:
commit
8b5be0b4eb
14
etc/rc
14
etc/rc
|
|
@ -1,5 +1,10 @@
|
||||||
# /etc/rc - System startup script run by init before going multiuser.
|
# /etc/rc - System startup script run by init before going multiuser.
|
||||||
|
|
||||||
|
if sysenv bootramdisk >/dev/null
|
||||||
|
then
|
||||||
|
/bin/sh /etc/rc.ramdisk
|
||||||
|
fi
|
||||||
|
|
||||||
# Are we booting from CD?
|
# Are we booting from CD?
|
||||||
bootcd="`/bin/sysenv bootcd`"
|
bootcd="`/bin/sysenv bootcd`"
|
||||||
|
|
||||||
|
|
@ -138,9 +143,12 @@ autoboot|start)
|
||||||
fsck -x / $fflag $fsckopts
|
fsck -x / $fflag $fsckopts
|
||||||
mount -a
|
mount -a
|
||||||
|
|
||||||
# Unmount and free now defunct ramdisk
|
if [ -z "`sysenv bootramdisk`" ]
|
||||||
umount /dev/imgrd > /dev/null || echo "Failed to unmount boot ramdisk"
|
then
|
||||||
ramdisk 0 /dev/imgrd || echo "Failed to free boot ramdisk"
|
# Unmount and free now defunct ramdisk
|
||||||
|
umount /dev/imgrd > /dev/null || echo "Failed to unmount boot ramdisk"
|
||||||
|
ramdisk 0 /dev/imgrd || echo "Failed to free boot ramdisk"
|
||||||
|
fi
|
||||||
|
|
||||||
# Initialize files.
|
# Initialize files.
|
||||||
>/var/run/utmp # /etc/utmp keeps track of logins
|
>/var/run/utmp # /etc/utmp keeps track of logins
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ fi
|
||||||
if /bin/sysenv rootdevname >/dev/null
|
if /bin/sysenv rootdevname >/dev/null
|
||||||
then rootdevname=/dev/`/bin/sysenv rootdevname`
|
then rootdevname=/dev/`/bin/sysenv rootdevname`
|
||||||
else
|
else
|
||||||
if ! sysenv cdproberoot >/dev/null
|
if (! sysenv cdproberoot) && (! sysenv bootramdisk) >/dev/null
|
||||||
then echo "rootdevname not set"
|
then echo "rootdevname not set"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
@ -81,6 +81,11 @@ then
|
||||||
loadramdisk "$ramimagename" || echo "WARNING: loadramdisk failed"
|
loadramdisk "$ramimagename" || echo "WARNING: loadramdisk failed"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if sysenv bootramdisk >/dev/null
|
||||||
|
then
|
||||||
|
rootdevname=imgrd
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Root device name is $rootdevname"
|
echo "Root device name is $rootdevname"
|
||||||
|
|
||||||
if ! sysenv cdproberoot >/dev/null
|
if ! sysenv cdproberoot >/dev/null
|
||||||
|
|
@ -92,8 +97,14 @@ fi
|
||||||
|
|
||||||
# Change root from temporary boot ramdisk to the configure
|
# Change root from temporary boot ramdisk to the configure
|
||||||
# root device
|
# root device
|
||||||
/bin/mount -n $bin_img"$rootdevname" /
|
if ! sysenv bootramdisk >/dev/null
|
||||||
|
then
|
||||||
|
/bin/mount -n $bin_img"$rootdevname" /
|
||||||
|
fi
|
||||||
|
|
||||||
/bin/mount -e -n -t procfs none /proc || echo "WARNING: couldn't mount procfs"
|
/bin/mount -e -n -t procfs none /proc || echo "WARNING: couldn't mount procfs"
|
||||||
|
|
||||||
exec /bin/sh /etc/rc `sysenv bootopts` "$@"
|
if ! sysenv bootramdisk >/dev/null
|
||||||
|
then
|
||||||
|
exec /bin/sh /etc/rc `sysenv bootopts` "$@"
|
||||||
|
fi
|
||||||
|
|
|
||||||
58
releasetools/fetch.functions
Normal file
58
releasetools/fetch.functions
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Common logic to perform checkout of repos
|
||||||
|
#
|
||||||
|
|
||||||
|
# -o output dir
|
||||||
|
OUTPUT_DIR=""
|
||||||
|
GIT_VERSION=""
|
||||||
|
while getopts "o:n:?" c
|
||||||
|
do
|
||||||
|
case "$c" in
|
||||||
|
\?)
|
||||||
|
echo "Usage: $0 -o output dir -n version " >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
o)
|
||||||
|
OUTPUT_DIR=$OPTARG
|
||||||
|
;;
|
||||||
|
n)
|
||||||
|
GIT_VERSION=$OPTARG
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# check arguments
|
||||||
|
#
|
||||||
|
if [ -z "$OUTPUT_DIR" -o -z "$GIT_VERSION" ]
|
||||||
|
then
|
||||||
|
echo "Missing required parameters OUTPUT_DIR=$OUTPUT_DIR GIT_VERSION=$GIT_VERSION"
|
||||||
|
echo "Usage: $0 -o output dir -n version " >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# if the file doesn't exist it's easy , to a checkout
|
||||||
|
#
|
||||||
|
if [ ! -e "$OUTPUT_DIR" ]
|
||||||
|
then
|
||||||
|
git clone ${REPO_URL} -b minix $OUTPUT_DIR
|
||||||
|
fi
|
||||||
|
|
||||||
|
(
|
||||||
|
cd "$OUTPUT_DIR"
|
||||||
|
|
||||||
|
#
|
||||||
|
# perform an update
|
||||||
|
#
|
||||||
|
CURRENT_VERSION=`git rev-parse HEAD`
|
||||||
|
if [ "$CURRENT_VERSION" != "$GIT_VERSION" ]
|
||||||
|
then
|
||||||
|
echo "Current version $CURRENT_VERSION does not match wanted $GIT_VERSION performing update and checkout"
|
||||||
|
git fetch -v
|
||||||
|
git checkout $GIT_VERSION
|
||||||
|
fi
|
||||||
|
)
|
||||||
8
releasetools/fetch_syslinux.sh
Executable file
8
releasetools/fetch_syslinux.sh
Executable file
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Perform a checkout / update the MINIX PXELINUX git repo if needed
|
||||||
|
#
|
||||||
|
|
||||||
|
: ${REPO_URL=https://github.com/boricj/syslinux.git}
|
||||||
|
|
||||||
|
. releasetools/fetch.functions
|
||||||
|
|
@ -1,59 +1,8 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Perform a checkout / update the MINIX u-boot git repo if needed
|
# Perform a checkout / update the MINIX u-boot git repo if needed
|
||||||
#
|
|
||||||
: ${UBOOT_REPO_URL=git://git.minix3.org/u-boot}
|
|
||||||
|
|
||||||
# -o output dir
|
|
||||||
OUTPUT_DIR=""
|
|
||||||
GIT_VERSION=""
|
|
||||||
while getopts "o:n:?" c
|
|
||||||
do
|
|
||||||
case "$c" in
|
|
||||||
\?)
|
|
||||||
echo "Usage: $0 -o output dir -n version " >&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
o)
|
|
||||||
OUTPUT_DIR=$OPTARG
|
|
||||||
;;
|
|
||||||
n)
|
|
||||||
GIT_VERSION=$OPTARG
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# check arguments
|
|
||||||
#
|
|
||||||
if [ -z "$OUTPUT_DIR" -o -z "$GIT_VERSION" ]
|
|
||||||
then
|
|
||||||
echo "Missing required parameters OUTPUT_DIR=$OUTPUT_DIR GIT_VERSION=$GIT_VERSION"
|
|
||||||
echo "Usage: $0 -o output dir -n version " >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
: ${REPO_URL=git://git.minix3.org/u-boot}
|
||||||
|
|
||||||
#
|
. releasetools/fetch.functions
|
||||||
# if the file doesn't exist it's easy , to a checkout
|
|
||||||
#
|
|
||||||
if [ ! -e "$OUTPUT_DIR" ]
|
|
||||||
then
|
|
||||||
git clone ${UBOOT_REPO_URL} -b minix $OUTPUT_DIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
(
|
|
||||||
cd "$OUTPUT_DIR"
|
|
||||||
|
|
||||||
#
|
|
||||||
# perform an update
|
|
||||||
#
|
|
||||||
CURRENT_VERSION=`git rev-parse HEAD`
|
|
||||||
if [ "$CURRENT_VERSION" != "$GIT_VERSION" ]
|
|
||||||
then
|
|
||||||
echo "Current version $CURRENT_VERSION does not match wanted $GIT_VERSION performing update and checkout"
|
|
||||||
git fetch -v
|
|
||||||
git checkout $GIT_VERSION
|
|
||||||
fi
|
|
||||||
)
|
|
||||||
|
|
|
||||||
|
|
@ -18,3 +18,5 @@
|
||||||
|
|
||||||
: ${RC=../local/rc.${ARCH}}
|
: ${RC=../local/rc.${ARCH}}
|
||||||
: ${ASR_HACK=0}
|
: ${ASR_HACK=0}
|
||||||
|
|
||||||
|
: ${SYSLINUX_GIT_VERSION=d00acec90ccc5e05e5b80bfd96d17c4dc4a7d36e}
|
||||||
|
|
|
||||||
|
|
@ -184,6 +184,20 @@ create_protos()
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Create ramdisk image from root directory
|
||||||
|
#
|
||||||
|
# $1 : size of ramdisk
|
||||||
|
create_ramdisk_image()
|
||||||
|
{
|
||||||
|
PATH=$(cd ${CROSS_TOOLS}; pwd):$PATH
|
||||||
|
|
||||||
|
# Build image
|
||||||
|
_RAMDISKSIZE=$(${CROSS_TOOLS}/nbmkfs.mfs -d -b $1 -I 0 ${WORK_DIR}/imgrd.mfs ${WORK_DIR}/proto.root)
|
||||||
|
(cd ${WORK_DIR}; ${TOOLCHAIN_TRIPLET}objcopy -Ibinary -Bi386 -Oi586-elf32-minix imgrd.mfs imgrd.o)
|
||||||
|
${TOOLCHAIN_TRIPLET}clang --sysroot=${DESTDIR} -L ${DESTDIR}/usr/lib -static -o ${WORK_DIR}/mod06_memory ${OBJ}/minix/drivers/storage/memory/memory.o ${WORK_DIR}/imgrd.o -nodefaultlibs -lblockdriver -lchardriver -lsys -lminc
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bundle packages (won't preinstall them)
|
# Bundle packages (won't preinstall them)
|
||||||
#
|
#
|
||||||
|
|
|
||||||
8
releasetools/release/pxe/etc/issue
Normal file
8
releasetools/release/pxe/etc/issue
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
|
||||||
|
Welcome to MINIX.
|
||||||
|
|
||||||
|
The system is now running and many commands work normally. To use MINIX
|
||||||
|
in a serious way, you need to install it to your hard disk.
|
||||||
|
|
||||||
|
Type "root" at the login prompt, and hit enter.
|
||||||
|
Note: the setup script can't be used when booting over the network.
|
||||||
83
releasetools/x86_pxeimage.sh
Executable file
83
releasetools/x86_pxeimage.sh
Executable file
|
|
@ -0,0 +1,83 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
#
|
||||||
|
# This script creates a bootable image and should at some point in the future
|
||||||
|
# be replaced by the proper NetBSD infrastructure.
|
||||||
|
#
|
||||||
|
|
||||||
|
: ${ARCH=i386}
|
||||||
|
: ${OBJ=../obj.${ARCH}}
|
||||||
|
: ${TOOLCHAIN_TRIPLET=i586-elf32-minix-}
|
||||||
|
: ${BUILDSH=build.sh}
|
||||||
|
|
||||||
|
: ${SETS="minix-base"}
|
||||||
|
: ${IMG=minix_x86_usb.img}
|
||||||
|
|
||||||
|
if [ ! -f ${BUILDSH} ]
|
||||||
|
then
|
||||||
|
echo "Please invoke me from the root source dir, where ${BUILDSH} is."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# set up disk creation environment
|
||||||
|
. releasetools/image.defaults
|
||||||
|
. releasetools/image.functions
|
||||||
|
|
||||||
|
: ${RAMDISK_SIZE=$(( 200*(2**20) / 512 / 8 ))}
|
||||||
|
|
||||||
|
# where the kernel & boot modules will be
|
||||||
|
MODDIR=${DESTDIR}/boot/minix/.temp
|
||||||
|
|
||||||
|
echo "Fetching syslinux..."
|
||||||
|
${RELEASETOOLSDIR}/fetch_syslinux.sh -o ${RELEASETOOLSDIR}/syslinux -n $SYSLINUX_GIT_VERSION
|
||||||
|
|
||||||
|
echo "Building work directory..."
|
||||||
|
build_workdir "$SETS"
|
||||||
|
|
||||||
|
echo "Adding extra files..."
|
||||||
|
|
||||||
|
# create a fstab entry in /etc
|
||||||
|
cat >${ROOT_DIR}/etc/fstab <<END_FSTAB
|
||||||
|
none /sys devman rw,rslabel=devman 0 0
|
||||||
|
none /dev/pts ptyfs rw,rslabel=ptyfs 0 0
|
||||||
|
END_FSTAB
|
||||||
|
add_file_spec "etc/fstab" extra.fstab
|
||||||
|
cp minix/drivers/storage/ramdisk/rc ${ROOT_DIR}/etc/rc.ramdisk
|
||||||
|
add_file_spec "etc/rc.ramdisk" extra.fstab
|
||||||
|
cp releasetools/release/pxe/etc/issue ${ROOT_DIR}/etc/issue
|
||||||
|
add_file_spec "etc/issue" extra.cdfiles
|
||||||
|
|
||||||
|
echo "Bundling packages..."
|
||||||
|
bundle_packages "$BUNDLE_PACKAGES"
|
||||||
|
|
||||||
|
echo "Creating specification files..."
|
||||||
|
create_input_spec
|
||||||
|
create_protos
|
||||||
|
|
||||||
|
echo "Writing ramdisk image..."
|
||||||
|
cp ${MODDIR}/* ${WORK_DIR}
|
||||||
|
create_ramdisk_image ${RAMDISK_SIZE}
|
||||||
|
|
||||||
|
echo "Preparing PXE boot directory..."
|
||||||
|
mkdir ${WORK_DIR}/pxelinux.cfg
|
||||||
|
cat >${WORK_DIR}/pxelinux.cfg/default <<EOF
|
||||||
|
DEFAULT menu.c32
|
||||||
|
TIMEOUT 100
|
||||||
|
|
||||||
|
LABEL x86
|
||||||
|
MENU LABEL Minix3
|
||||||
|
KERNEL mboot.c32
|
||||||
|
APPEND kernel bootramdisk=1 --- mod01_ds --- mod02_rs --- mod03_pm --- mod04_sched --- mod05_vfs --- mod06_memory --- mod07_tty --- mod08_mib --- mod09_vm --- mod10_pfs --- mod11_mfs --- mod12_init
|
||||||
|
EOF
|
||||||
|
cp ${RELEASETOOLSDIR}/syslinux/bios/com32/elflink/ldlinux/ldlinux.c32 ${WORK_DIR}/
|
||||||
|
cp ${RELEASETOOLSDIR}/syslinux/bios/com32/lib/libcom32.c32 ${WORK_DIR}/
|
||||||
|
cp ${RELEASETOOLSDIR}/syslinux/bios/com32/libutil/libutil.c32 ${WORK_DIR}/
|
||||||
|
cp ${RELEASETOOLSDIR}/syslinux/bios/com32/mboot/mboot.c32 ${WORK_DIR}/
|
||||||
|
cp ${RELEASETOOLSDIR}/syslinux/bios/com32/menu/menu.c32 ${WORK_DIR}/
|
||||||
|
cp ${RELEASETOOLSDIR}/syslinux/bios/core/pxelinux.0 ${WORK_DIR}/
|
||||||
|
rm -rf ${WORK_DIR}/extra.* ${WORK_DIR}/set.* ${WORK_DIR}/proto.* ${WORK_DIR}/imgrd.mfs ${WORK_DIR}/imgrd.o
|
||||||
|
|
||||||
|
echo "PXE boot directory at ${WORK_DIR}"
|
||||||
|
echo "To boot this image on kvm:"
|
||||||
|
echo "cd ${WORK_DIR} && qemu-system-i386 --enable-kvm -m 512M -tftp . -bootp pxelinux.0 -boot n"
|
||||||
Loading…
Reference in New Issue
Block a user