kernel, ramdisk: some boot unification
To use the new SD building script, Linux has to be configured with loop.max_part=15 on the command line (or set at module load time) to make the loopback device see the partitions. This commit removes a lot of differences between the ARM and x86 boot ramdisk and rc scripts. It changes the ARM build from running from ramdisk to requiring a full filesystem on the SD image and booting into it. . ramdisk: remove some arm-only utilities only used for running from the shell . remove ARM-only rc.arm, proto.arm.small, ttys and mylogin.sh boot-time ramdisk files . change kernel to add "arch" variable so userland knows what we're running on from sysenv . make ARM use the regular ramdisk rc file, changed to distinguish i386-only and ARM-only drivers; requires rootdevname to be set . change /etc/rc and /usr/etc/rc to start i386-only drivers only on i386 systems . change the kernel/arm to have a special case for the memory driver to load it higher so it can be bigger . add uEnv.txt, cmdline.txt and a for now highly linux-dependent SD preparation script arm_sdimage.sh to the git repository in releasetools/ Change-Id: I68910ba4e96ee80f7a12b65e48b5d39b43ca6397
This commit is contained in:
parent
b9674650f1
commit
5acaa0814f
17 changed files with 265 additions and 164 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
20130306:
|
||||||
|
For people building ARM images, the procedure has changed
|
||||||
|
a bit. You need a full FS to boot now. In short, you need
|
||||||
|
to use the new in-tree script to make a full SD image. See
|
||||||
|
http://wiki.minix3.org/en/DevelopersGuide/MinixOnARM
|
||||||
|
for details.
|
||||||
|
|
||||||
20130201:
|
20130201:
|
||||||
Replace our native ln with NetBSD version.
|
Replace our native ln with NetBSD version.
|
||||||
|
|
||||||
|
|
|
@ -29,23 +29,25 @@ ETC= system.conf master.passwd
|
||||||
EXTRA= rc
|
EXTRA= rc
|
||||||
PROTO_FILES= proto.common.etc proto.common.dynamic proto.dev
|
PROTO_FILES= proto.common.etc proto.common.dynamic proto.dev
|
||||||
PROG_DRIVERS=
|
PROG_DRIVERS=
|
||||||
PROG_COMMANDS= mount fsck.mfs sh service
|
PROG_COMMANDS= mount fsck.mfs sh service loadramdisk sysenv
|
||||||
PROG_SERVERS= mfs
|
PROG_SERVERS= mfs procfs
|
||||||
PROG_BIN=
|
PROG_BIN=
|
||||||
PROG_SBIN=
|
PROG_SBIN=
|
||||||
PROG_USR.BIN=
|
PROG_USR.BIN=
|
||||||
PROG_USR.SBIN=
|
PROG_USR.SBIN=
|
||||||
|
|
||||||
|
.if ${MKSMALL} != "yes"
|
||||||
|
RAMDISK_SMALL= 1
|
||||||
|
.endif
|
||||||
|
|
||||||
.if ${MACHINE_ARCH} == "i386"
|
.if ${MACHINE_ARCH} == "i386"
|
||||||
ETC+= rs.single
|
ETC+= rs.single
|
||||||
EXTRA+=
|
EXTRA+=
|
||||||
PROG_DRIVERS+= at_wini floppy pci
|
PROG_DRIVERS+= at_wini floppy pci
|
||||||
PROG_COMMANDS+= cdprobe loadramdisk sysenv
|
PROG_COMMANDS+= cdprobe
|
||||||
PROG_SERVERS+= procfs
|
|
||||||
PROG_USR.SBIN+= pwd_mkdb
|
PROG_USR.SBIN+= pwd_mkdb
|
||||||
|
|
||||||
.if ${MKSMALL} != "yes"
|
.if ${MKSMALL} != "yes"
|
||||||
RAMDISK_SMALL= 1
|
|
||||||
PROG_DRIVERS+= ahci
|
PROG_DRIVERS+= ahci
|
||||||
PROG_DRIVERS+= virtio_blk
|
PROG_DRIVERS+= virtio_blk
|
||||||
PROG_SERVERS+= ext2
|
PROG_SERVERS+= ext2
|
||||||
|
@ -58,11 +60,7 @@ PROG_DRIVERS+= acpi
|
||||||
.endif # ${MACHINE_ARCH} == "i386"
|
.endif # ${MACHINE_ARCH} == "i386"
|
||||||
|
|
||||||
.if ${MACHINE_ARCH} == "earm"
|
.if ${MACHINE_ARCH} == "earm"
|
||||||
EXTRA+= rc.arm mylogin.sh ttys
|
PROG_DRIVERS+= mmc
|
||||||
PROG_DRIVERS+= fb mmc tty gpio
|
|
||||||
PROG_COMMANDS+= cp dd getty time sleep stty umount
|
|
||||||
PROG_BIN+= cat ls rm sync
|
|
||||||
PROTO= proto.arm.small
|
|
||||||
.endif # ${MACHINE_ARCH} == "earm"
|
.endif # ${MACHINE_ARCH} == "earm"
|
||||||
|
|
||||||
.if ${LDSTATIC} == "-dynamic"
|
.if ${LDSTATIC} == "-dynamic"
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
echo Welcome
|
|
||||||
export PATH=$PATH:/mnt/bin:/mnt/usr/bin
|
|
||||||
exec /bin/sh
|
|
|
@ -2,22 +2,29 @@ boot
|
||||||
0 0
|
0 0
|
||||||
d--755 0 0
|
d--755 0 0
|
||||||
bin d--755 0 0
|
bin d--755 0 0
|
||||||
|
#ifdef __i386__
|
||||||
cdprobe ---755 0 0 cdprobe
|
cdprobe ---755 0 0 cdprobe
|
||||||
|
#endif
|
||||||
|
sysenv ---755 0 0 sysenv
|
||||||
#if RAMDISK_SMALL == 1
|
#if RAMDISK_SMALL == 1
|
||||||
fsck.mfs ---755 0 0 fsck.mfs
|
fsck.mfs ---755 0 0 fsck.mfs
|
||||||
#endif
|
#endif
|
||||||
mount ---755 0 0 mount
|
mount ---755 0 0 mount
|
||||||
sh ---755 0 0 sh
|
sh ---755 0 0 sh
|
||||||
service ---755 0 0 service
|
service ---755 0 0 service
|
||||||
sysenv ---755 0 0 sysenv
|
|
||||||
$
|
$
|
||||||
sbin d--755 0 0
|
sbin d--755 0 0
|
||||||
|
#ifdef __i386__
|
||||||
floppy ---755 0 0 floppy
|
floppy ---755 0 0 floppy
|
||||||
ahci ---755 0 0 ahci
|
ahci ---755 0 0 ahci
|
||||||
virtio_blk ---755 0 0 virtio_blk
|
virtio_blk ---755 0 0 virtio_blk
|
||||||
at_wini ---755 0 0 at_wini
|
at_wini ---755 0 0 at_wini
|
||||||
#if RAMDISK_SMALL == 1
|
#if RAMDISK_SMALL == 1
|
||||||
ext2 ---755 0 0 ext2
|
ext2 ---755 0 0 ext2
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#ifdef __arm__
|
||||||
|
mmc ---755 0 0 mmc
|
||||||
#endif
|
#endif
|
||||||
mfs ---755 0 0 mfs
|
mfs ---755 0 0 mfs
|
||||||
procfs ---755 0 0 procfs
|
procfs ---755 0 0 procfs
|
||||||
|
@ -27,10 +34,12 @@ d--755 0 0
|
||||||
loadramdisk ---755 0 0 loadramdisk
|
loadramdisk ---755 0 0 loadramdisk
|
||||||
$
|
$
|
||||||
sbin d--755 0 0
|
sbin d--755 0 0
|
||||||
|
#ifdef __i386__
|
||||||
#if RAMDISK_INC_ACPI == 1
|
#if RAMDISK_INC_ACPI == 1
|
||||||
acpi ---755 0 0 acpi
|
acpi ---755 0 0 acpi
|
||||||
#endif
|
#endif
|
||||||
pci ---755 0 0 pci
|
pci ---755 0 0 pci
|
||||||
|
#endif
|
||||||
$
|
$
|
||||||
$
|
$
|
||||||
dev d--755 0 0
|
dev d--755 0 0
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
boot
|
|
||||||
0 0
|
|
||||||
d--755 0 0
|
|
||||||
bin d--755 0 0
|
|
||||||
mount ---755 0 0 mount
|
|
||||||
umount ---755 0 0 umount
|
|
||||||
sh ---755 0 0 sh
|
|
||||||
service ---755 0 0 service
|
|
||||||
getty ---755 0 0 getty
|
|
||||||
stty ---755 0 0 stty
|
|
||||||
cp ---755 0 0 cp
|
|
||||||
sync ---755 0 0 sync
|
|
||||||
sleep ---755 0 0 sleep
|
|
||||||
dd ---755 0 0 dd
|
|
||||||
time ---755 0 0 time
|
|
||||||
cat ---755 0 0 cat
|
|
||||||
ls ---755 0 0 ls
|
|
||||||
fsck.mfs ---755 0 0 fsck.mfs
|
|
||||||
$
|
|
||||||
sbin d--755 0 0
|
|
||||||
fb ---755 0 0 fb
|
|
||||||
mmc ---755 0 0 mmc
|
|
||||||
mfs ---755 0 0 mfs
|
|
||||||
gpio ---755 0 0 gpio
|
|
||||||
|
|
||||||
$
|
|
||||||
mnt d--755 0 0
|
|
||||||
$
|
|
||||||
gpio d--755 0 0
|
|
||||||
$
|
|
||||||
usr d--755 0 0
|
|
||||||
bin d--755 0 0
|
|
||||||
login ---755 0 0 mylogin.sh
|
|
||||||
$
|
|
||||||
$
|
|
||||||
dev d--755 0 0
|
|
||||||
#include "proto.dev"
|
|
||||||
$
|
|
||||||
#include "proto.common.etc"
|
|
||||||
$
|
|
|
@ -4,12 +4,8 @@
|
||||||
pwd.db ---644 0 0 pwd.db
|
pwd.db ---644 0 0 pwd.db
|
||||||
spwd.db ---600 0 0 spwd.db
|
spwd.db ---600 0 0 spwd.db
|
||||||
master.passwd ---600 0 0 master.passwd
|
master.passwd ---600 0 0 master.passwd
|
||||||
#if defined(__i386__)
|
|
||||||
rc ---755 0 0 rc
|
rc ---755 0 0 rc
|
||||||
|
#if defined(__i386__)
|
||||||
rs.single ---755 0 0 rs.single
|
rs.single ---755 0 0 rs.single
|
||||||
#endif
|
|
||||||
#if defined(__arm__)
|
|
||||||
rc ---755 0 0 rc.arm
|
|
||||||
ttys ---644 0 0 ttys
|
|
||||||
#endif
|
#endif
|
||||||
$
|
$
|
||||||
|
|
|
@ -7,23 +7,32 @@ exec </dev/null
|
||||||
|
|
||||||
FSCK=/bin/fsck.mfs
|
FSCK=/bin/fsck.mfs
|
||||||
ACPI=/usr/sbin/acpi
|
ACPI=/usr/sbin/acpi
|
||||||
if [ -e $ACPI -a -n "`sysenv acpi`" ]
|
|
||||||
then
|
if [ X`/bin/sysenv arch` = Xi386 ]
|
||||||
/bin/service -c up $ACPI
|
then if [ -e $ACPI -a -n "`sysenv acpi`" ]
|
||||||
|
then
|
||||||
|
/bin/service -c up $ACPI
|
||||||
|
fi
|
||||||
|
/bin/service -c up /usr/sbin/pci
|
||||||
|
/bin/service -cn up /sbin/floppy -dev /dev/fd0
|
||||||
|
if [ X`/bin/sysenv ahci` = Xyes ]
|
||||||
|
then
|
||||||
|
# this is here temporarily, for testing purposes
|
||||||
|
/bin/service -c up /sbin/ahci -dev /dev/c0d0 -label ahci_0 -args instance=0
|
||||||
|
elif [ X`/bin/sysenv virtio_blk` = Xyes ]
|
||||||
|
then
|
||||||
|
/bin/service -c up /sbin/virtio_blk -dev /dev/c0d0 -label virtio_blk_0 -args instance=0
|
||||||
|
else
|
||||||
|
/bin/service -c up /sbin/at_wini -dev /dev/c0d0 -label at_wini_0
|
||||||
|
/bin/service -cr up /sbin/at_wini -dev /dev/c1d0 -label at_wini_1 -args instance=1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
/bin/service -c up /usr/sbin/pci
|
|
||||||
/bin/service -cn up /sbin/floppy -dev /dev/fd0
|
if [ X`/bin/sysenv arch` = Xearm ]
|
||||||
if [ X`/bin/sysenv ahci` = Xyes ]
|
then echo starting mmc driver
|
||||||
then
|
/bin/service -c up /sbin/mmc -dev /dev/c0d0
|
||||||
# this is here temporarily, for testing purposes
|
|
||||||
/bin/service -c up /sbin/ahci -dev /dev/c0d0 -label ahci_0 -args instance=0
|
|
||||||
elif [ X`/bin/sysenv virtio_blk` = Xyes ]
|
|
||||||
then
|
|
||||||
/bin/service -c up /sbin/virtio_blk -dev /dev/c0d0 -label virtio_blk_0 -args instance=0
|
|
||||||
else
|
|
||||||
/bin/service -c up /sbin/at_wini -dev /dev/c0d0 -label at_wini_0
|
|
||||||
/bin/service -cr up /sbin/at_wini -dev /dev/c1d0 -label at_wini_1 -args instance=1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
/bin/service up /sbin/procfs || echo "WARNING: couldn't start procfs"
|
/bin/service up /sbin/procfs || echo "WARNING: couldn't start procfs"
|
||||||
|
|
||||||
if /bin/sysenv rootdevname >/dev/null
|
if /bin/sysenv rootdevname >/dev/null
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# LSC FIXME quick hack, we should retink the rc script so we do not
|
|
||||||
# get two different script
|
|
||||||
set -e
|
|
||||||
|
|
||||||
|
|
||||||
exec >/dev/log
|
|
||||||
exec 2>/dev/log
|
|
||||||
exec </dev/null
|
|
||||||
|
|
||||||
#XXX
|
|
||||||
#/bin/service -c up /sbin/mmc -dev /dev/c0d0
|
|
||||||
#/bin/fsck.mfs -p /dev/c0d0p1
|
|
||||||
#/bin/mount /dev/c0d0p1 /mnt
|
|
||||||
#gpio
|
|
||||||
#mount -t gpio none /gpio
|
|
||||||
#service up /sbin/fb -dev /dev/fb0 -period 2HZ
|
|
||||||
exit
|
|
|
@ -1,44 +0,0 @@
|
||||||
#
|
|
||||||
# from: @(#)ttys 5.1 (Berkeley) 4/17/89
|
|
||||||
#
|
|
||||||
# name getty type status comments
|
|
||||||
#
|
|
||||||
console "getty 115200" minix on secure
|
|
||||||
#ttyc1 getty minix on secure
|
|
||||||
#ttyc2 getty minix on secure
|
|
||||||
#ttyc3 getty minix on secure
|
|
||||||
tty00 "" unknown off secure
|
|
||||||
tty01 "" unknown off secure
|
|
||||||
|
|
||||||
ttyp0 "" network off
|
|
||||||
ttyp1 "" network off
|
|
||||||
ttyp2 "" network off
|
|
||||||
ttyp3 "" network off
|
|
||||||
ttyp4 "" network off
|
|
||||||
ttyp5 "" network off
|
|
||||||
ttyp6 "" network off
|
|
||||||
ttyp7 "" network off
|
|
||||||
ttyp8 "" network off
|
|
||||||
ttyp9 "" network off
|
|
||||||
ttypa "" network off
|
|
||||||
ttypb "" network off
|
|
||||||
ttypc "" network off
|
|
||||||
ttypd "" network off
|
|
||||||
ttype "" network off
|
|
||||||
ttypf "" network off
|
|
||||||
ttyq0 "" network off
|
|
||||||
ttyq1 "" network off
|
|
||||||
ttyq2 "" network off
|
|
||||||
ttyq3 "" network off
|
|
||||||
ttyq4 "" network off
|
|
||||||
ttyq5 "" network off
|
|
||||||
ttyq6 "" network off
|
|
||||||
ttyq7 "" network off
|
|
||||||
ttyq8 "" network off
|
|
||||||
ttyq9 "" network off
|
|
||||||
ttyqa "" network off
|
|
||||||
ttyqb "" network off
|
|
||||||
ttyqc "" network off
|
|
||||||
ttyqd "" network off
|
|
||||||
ttyqe "" network off
|
|
||||||
ttyqf "" network off
|
|
68
etc/rc
68
etc/rc
|
@ -11,6 +11,16 @@ PATH=/usr/local/bin:/bin:/usr/bin:/usr/sbin:/usr/pkg/bin:/usr/pkg/sbin:/sbin
|
||||||
RC_TZ=/etc/rc.timezone
|
RC_TZ=/etc/rc.timezone
|
||||||
export TERM PATH
|
export TERM PATH
|
||||||
|
|
||||||
|
ARCH="`sysenv arch`"
|
||||||
|
|
||||||
|
if [ ! "$ARCH" ]
|
||||||
|
then # Older kernels do not provide an arch sysenv variable.
|
||||||
|
# We assume we are on x86 then, as existing systems with
|
||||||
|
# kernel and userland (i.e. this script) unsynchronized
|
||||||
|
# will be x86.
|
||||||
|
ARCH=i386
|
||||||
|
fi
|
||||||
|
|
||||||
usage()
|
usage()
|
||||||
{
|
{
|
||||||
echo >&2 "Usage: $0 [-saf] start|stop|down"
|
echo >&2 "Usage: $0 [-saf] start|stop|down"
|
||||||
|
@ -114,8 +124,17 @@ start)
|
||||||
then . "$RC_TZ"
|
then . "$RC_TZ"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Try to read the hardware real-time clock, otherwise do it manually.
|
if [ $ARCH = i386 ]
|
||||||
readclock || intr date -q
|
then
|
||||||
|
# Try to read the hardware real-time clock, otherwise do it manually.
|
||||||
|
readclock || intr date -q
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $ARCH = earm ]
|
||||||
|
then
|
||||||
|
date 201301010000
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Initialize files.
|
# Initialize files.
|
||||||
>/etc/utmp # /etc/utmp keeps track of logins
|
>/etc/utmp # /etc/utmp keeps track of logins
|
||||||
|
@ -187,32 +206,39 @@ start)
|
||||||
cp /usr/lib/em* /usr/lib/cpp* /lib
|
cp /usr/lib/em* /usr/lib/cpp* /lib
|
||||||
esac
|
esac
|
||||||
|
|
||||||
echo -n "Starting hotplugging infrastructure... "
|
if [ $ARCH = i386 ]
|
||||||
rm -f /var/run/devmand.pid
|
then
|
||||||
devmand -d /etc/devmand -d /usr/pkg/etc/devmand &
|
echo -n "Starting hotplugging infrastructure... "
|
||||||
echo "done."
|
rm -f /var/run/devmand.pid
|
||||||
|
devmand -d /etc/devmand -d /usr/pkg/etc/devmand &
|
||||||
|
echo "done."
|
||||||
|
fi
|
||||||
|
|
||||||
# Things should be alright now.
|
# Things should be alright now.
|
||||||
;;
|
;;
|
||||||
down|stop)
|
down|stop)
|
||||||
sync
|
sync
|
||||||
if [ -f /var/run/devmand.pid ]
|
if [ $ARCH = i386 ]
|
||||||
then
|
then
|
||||||
kill -INT `cat /var/run/devmand.pid`
|
if [ -f /var/run/devmand.pid ]
|
||||||
# without this delay the following will
|
then
|
||||||
# be printed in the console
|
kill -INT `cat /var/run/devmand.pid`
|
||||||
# RS: devman not running?
|
# without this delay the following will
|
||||||
sleep 1
|
# be printed in the console
|
||||||
fi
|
# RS: devman not running?
|
||||||
#
|
sleep 1
|
||||||
# usbd needs to be stopped exactly
|
fi
|
||||||
# at this stage(before stopping devman
|
#
|
||||||
# and after stopping the services
|
# usbd needs to be stopped exactly
|
||||||
# stated by devmand)
|
# at this stage(before stopping devman
|
||||||
if [ -x /usr/pkg/etc/rc.d/usbd ]
|
# and after stopping the services
|
||||||
then
|
# stated by devmand)
|
||||||
/usr/pkg/etc/rc.d/usbd stop
|
if [ -x /usr/pkg/etc/rc.d/usbd ]
|
||||||
|
then
|
||||||
|
/usr/pkg/etc/rc.d/usbd stop
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Tell RS server we're going down.
|
# Tell RS server we're going down.
|
||||||
service shutdown
|
service shutdown
|
||||||
;;
|
;;
|
||||||
|
|
24
etc/usr/rc
24
etc/usr/rc
|
@ -3,6 +3,16 @@
|
||||||
RANDOM_FILE=/usr/adm/random.dat
|
RANDOM_FILE=/usr/adm/random.dat
|
||||||
LOCAL_FILE=/usr/etc/rc.local
|
LOCAL_FILE=/usr/etc/rc.local
|
||||||
|
|
||||||
|
ARCH="`sysenv arch`"
|
||||||
|
|
||||||
|
if [ ! "$ARCH" ]
|
||||||
|
then # Older kernels do not provide an arch sysenv variable.
|
||||||
|
# We assume we are on x86 then, as existing systems with
|
||||||
|
# kernel and userland (i.e. this script) unsynchronized
|
||||||
|
# will be x86.
|
||||||
|
ARCH=i386
|
||||||
|
fi
|
||||||
|
|
||||||
# Get $SERVICES_DIRS
|
# Get $SERVICES_DIRS
|
||||||
. /etc/rc.conf
|
. /etc/rc.conf
|
||||||
|
|
||||||
|
@ -139,12 +149,18 @@ start)
|
||||||
else
|
else
|
||||||
up inet -script /etc/rs.inet -dev /dev/ip -devstyle STYLE_CLONE
|
up inet -script /etc/rs.inet -dev /dev/ip -devstyle STYLE_CLONE
|
||||||
fi
|
fi
|
||||||
up -n printer -dev /dev/lp -period 10HZ
|
|
||||||
up -n ipc
|
up -n ipc
|
||||||
# start VirtualBox time sync driver if the device is there
|
|
||||||
if grep '^[^ ]* [^ ]* 80EE:CAFE ' /proc/pci >/dev/null; then
|
if [ $ARCH = i386 ]
|
||||||
up -n vbox -period 10HZ
|
then
|
||||||
|
up -n printer -dev /dev/lp -period 10HZ
|
||||||
|
# start VirtualBox time sync driver if the device is there
|
||||||
|
if grep '^[^ ]* [^ ]* 80EE:CAFE ' /proc/pci >/dev/null; then
|
||||||
|
up -n vbox -period 10HZ
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo .
|
echo .
|
||||||
|
|
||||||
# Network initialization.
|
# Network initialization.
|
||||||
|
|
|
@ -145,6 +145,7 @@
|
||||||
#define INVAL_GID ((gid_t) -1) /* invalid gid value */
|
#define INVAL_GID ((gid_t) -1) /* invalid gid value */
|
||||||
|
|
||||||
#define SERVARNAME "cttyline"
|
#define SERVARNAME "cttyline"
|
||||||
|
#define ARCHVARNAME "arch"
|
||||||
#define SERBAUDVARNAME "cttybaud"
|
#define SERBAUDVARNAME "cttybaud"
|
||||||
|
|
||||||
/* Bits for s_flags in the privilege structure. */
|
/* Bits for s_flags in the privilege structure. */
|
||||||
|
|
|
@ -123,7 +123,16 @@ void setup_mbi(multiboot_info_t *mbi)
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < MB_MODS_NR; ++i) {
|
for (i = 0; i < MB_MODS_NR; ++i) {
|
||||||
mb_modlist[i].mod_start = MB_MODS_BASE + i * MB_MODS_ALIGN;
|
mb_modlist[i].mod_start = MB_MODS_BASE + i * MB_MODS_ALIGN;
|
||||||
mb_modlist[i].mod_end = mb_modlist[i].mod_start + MB_MODS_ALIGN - 1; mb_modlist[i].cmdline = 0;
|
mb_modlist[i].mod_end = mb_modlist[i].mod_start + MB_MODS_ALIGN - 1;
|
||||||
|
mb_modlist[i].cmdline = 0;
|
||||||
|
|
||||||
|
if (i == 5) {
|
||||||
|
/* LSC HACK: Special case for memory, it is actually loaded at the
|
||||||
|
* end, so that it can grow without having to change the
|
||||||
|
* alignment of everything. currently reserving 64MiB */
|
||||||
|
mb_modlist[i].mod_start = 0x96800000;
|
||||||
|
mb_modlist[i].mod_end = mb_modlist[i].mod_start + (0x04000000) - 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Final 'module' is actually a string holding the boot cmdline */
|
/* Final 'module' is actually a string holding the boot cmdline */
|
||||||
|
@ -193,6 +202,9 @@ void get_parameters(u32_t ebx, kinfo_t *cbi)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* let higher levels know what we are booting on */
|
||||||
|
mb_set_param(cbi->param_buf, ARCHVARNAME, "earm", cbi);
|
||||||
|
|
||||||
/* round user stack down to leave a gap to catch kernel
|
/* round user stack down to leave a gap to catch kernel
|
||||||
* stack overflow; and to distinguish kernel and user addresses
|
* stack overflow; and to distinguish kernel and user addresses
|
||||||
* at a glance (0xf.. vs 0xe..)
|
* at a glance (0xf.. vs 0xe..)
|
||||||
|
|
|
@ -153,6 +153,9 @@ void get_parameters(u32_t ebx, kinfo_t *cbi)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* let higher levels know what we are booting on */
|
||||||
|
mb_set_param(cbi->param_buf, ARCHVARNAME, "i386", cbi);
|
||||||
|
|
||||||
/* round user stack down to leave a gap to catch kernel
|
/* round user stack down to leave a gap to catch kernel
|
||||||
* stack overflow; and to distinguish kernel and user addresses
|
* stack overflow; and to distinguish kernel and user addresses
|
||||||
* at a glance (0xf.. vs 0xe..)
|
* at a glance (0xf.. vs 0xe..)
|
||||||
|
|
108
releasetools/arm_sdimage.sh
Executable file
108
releasetools/arm_sdimage.sh
Executable file
|
@ -0,0 +1,108 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
MP_MINIX=/tmp/minix
|
||||||
|
MP_BOOT=/tmp/minixboot
|
||||||
|
|
||||||
|
: ${ARCH=evbearm-el}
|
||||||
|
: ${OBJ=../obj.arm}
|
||||||
|
: ${CROSS_TOOLS=${OBJ}/"tooldir.`uname -s`-`uname -r`-`uname -m`"/bin}
|
||||||
|
: ${CROSS_PREFIX=${CROSS_TOOLS}/arm-elf32-minix-}
|
||||||
|
: ${DESTDIR=${OBJ}/destdir.$ARCH}
|
||||||
|
: ${FSTAB=$DESTDIR/etc/fstab}
|
||||||
|
: ${LOOP=/dev/loop0}
|
||||||
|
: ${EMPTYIMG=minix_arm_sd_empty.img}
|
||||||
|
: ${IMG=minix_arm_sd.img}
|
||||||
|
: ${QEMU=/opt/bin/qemu-system-arm}
|
||||||
|
|
||||||
|
BUILDSH=build.sh
|
||||||
|
|
||||||
|
if [ ! -f $BUILDSH ]
|
||||||
|
then echo "Please invoke me from the root source dir, where $BUILDSH is."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f ${EMPTYIMG}.bz2 ]
|
||||||
|
then echo Retrieving $EMPTYIMG
|
||||||
|
wget http://www.minix3.org/arm/${EMPTYIMG}.bz2
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $IMG ]
|
||||||
|
then echo decompressing $EMPTYIMG onto $IMG
|
||||||
|
bzip2 -d -k ${EMPTYIMG}.bz2
|
||||||
|
mv $EMPTYIMG $IMG
|
||||||
|
fi
|
||||||
|
|
||||||
|
# remove fstab and generated pw db
|
||||||
|
rm -rf $DESTDIR/etc
|
||||||
|
|
||||||
|
sh build.sh -j4 -m$ARCH -O $OBJ -D $DESTDIR -u distribution
|
||||||
|
|
||||||
|
cat >$FSTAB <<END_FSTAB
|
||||||
|
/dev/c0d0p1s0 / mfs rw 0 1
|
||||||
|
/dev/c0d0p1s2 /usr mfs rw 0 2
|
||||||
|
/dev/c0d0p1s1 /home mfs rw 0 2
|
||||||
|
END_FSTAB
|
||||||
|
|
||||||
|
rm -f $DESTDIR/SETS.*
|
||||||
|
|
||||||
|
${CROSS_TOOLS}/nbpwd_mkdb -V 0 -p -d $DESTDIR $DESTDIR/etc/master.passwd
|
||||||
|
|
||||||
|
set -x
|
||||||
|
|
||||||
|
umount $MP_MINIX/home || true
|
||||||
|
umount $MP_MINIX/usr || true
|
||||||
|
umount $MP_MINIX || true
|
||||||
|
umount $MP_BOOT || true
|
||||||
|
|
||||||
|
losetup -d $LOOP || true
|
||||||
|
losetup $LOOP $IMG
|
||||||
|
|
||||||
|
${CROSS_TOOLS}/nbmkfs.mfs ${LOOP}p5
|
||||||
|
${CROSS_TOOLS}/nbmkfs.mfs ${LOOP}p6
|
||||||
|
${CROSS_TOOLS}/nbmkfs.mfs ${LOOP}p7
|
||||||
|
|
||||||
|
mkdir -p $MP_BOOT
|
||||||
|
mount ${LOOP}p1 $MP_BOOT
|
||||||
|
|
||||||
|
mkdir -p ${MP_MINIX}
|
||||||
|
mount ${LOOP}p5 ${MP_MINIX}
|
||||||
|
|
||||||
|
mkdir -p ${MP_MINIX}/home
|
||||||
|
mkdir -p ${MP_MINIX}/usr
|
||||||
|
mount ${LOOP}p6 ${MP_MINIX}/home
|
||||||
|
mount ${LOOP}p7 ${MP_MINIX}/usr
|
||||||
|
|
||||||
|
cp releasetools/uEnv.txt releasetools/cmdline.txt $MP_BOOT
|
||||||
|
|
||||||
|
${CROSS_PREFIX}objcopy ${OBJ}/kernel/kernel -O binary ${OBJ}/kernel.bin
|
||||||
|
cp ${OBJ}/kernel.bin $MP_BOOT
|
||||||
|
|
||||||
|
set -x
|
||||||
|
|
||||||
|
rsync -a $DESTDIR/ $MP_MINIX/
|
||||||
|
|
||||||
|
for f in vm rs pm sched vfs ds mfs pfs init
|
||||||
|
do
|
||||||
|
cp ${OBJ}/servers/$f/$f ${OBJ}/$f.elf
|
||||||
|
${CROSS_PREFIX}strip -s ${OBJ}/$f.elf
|
||||||
|
cp ${OBJ}/$f.elf $MP_BOOT
|
||||||
|
done
|
||||||
|
|
||||||
|
for f in tty memory log
|
||||||
|
do
|
||||||
|
cp ${OBJ}/drivers/$f/$f ${OBJ}/$f.elf
|
||||||
|
${CROSS_PREFIX}strip -s ${OBJ}/$f.elf
|
||||||
|
cp ${OBJ}/$f.elf $MP_BOOT
|
||||||
|
done
|
||||||
|
|
||||||
|
# Unmount disk image
|
||||||
|
sync
|
||||||
|
|
||||||
|
umount $MP_MINIX/home
|
||||||
|
umount $MP_MINIX/usr
|
||||||
|
umount $MP_MINIX
|
||||||
|
umount $MP_BOOT
|
||||||
|
losetup -d $LOOP
|
||||||
|
|
||||||
|
$QEMU -M beaglexm -drive if=sd,cache=writeback,file=$IMG -clock unix -serial pty -vnc :1 $*
|
1
releasetools/cmdline.txt
Normal file
1
releasetools/cmdline.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
console=tty02 rootdevname=c0d0p1s0
|
21
releasetools/uEnv.txt
Normal file
21
releasetools/uEnv.txt
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
#uEnv.txt
|
||||||
|
|
||||||
|
# Set the command to be executed
|
||||||
|
uenvcmd=run mmcbootcmd
|
||||||
|
|
||||||
|
# With cmdline/bootargs in cmdline.txt
|
||||||
|
mmcbootcmd=echo starting from MMC ; mmc part 0; fatload mmc 0:1 0x80200000 kernel.bin; fatload mmc 0:1 0x90000000 ds.elf; fatload mmc 0:1 0x90800000 rs.elf; fatload mmc 0:1 0x91000000 pm.elf; fatload mmc 0:1 0x91800000 sched.elf; fatload mmc 0:1 0x92000000 vfs.elf; fatload mmc 0:1 0x96800000 memory.elf; fatload mmc 0:1 0x93000000 log.elf; fatload mmc 0:1 0x93800000 tty.elf; fatload mmc 0:1 0x94000000 mfs.elf; fatload mmc 0:1 0x94800000 vm.elf; fatload mmc 0:1 0x95000000 pfs.elf; fatload mmc 0:1 0x95800000 init.elf; mw.b 0x96000000 0 16384; fatload mmc 0:1 0x96000000 cmdline.txt; go 0x80200000
|
||||||
|
|
||||||
|
# Netbooting.
|
||||||
|
#echo == Configure the server IP ==
|
||||||
|
#serverip=192.168.12.10
|
||||||
|
#ipaddr=192.168.12.62
|
||||||
|
#usbnet_devaddr=e8:03:9a:24:f9:10
|
||||||
|
#usbethaddr=e8:03:9a:24:f9:11
|
||||||
|
#mmcbootcmd=echo starting from TFTP; usb start ; tftp 0x80200000 kernel.bin; tftp 0x90000000 ds.elf; tftp 0x90800000 rs.elf; tftp 0x91000000 pm.elf; tftp 0x91800000 sched.elf; tftp 0x92000000 vfs.elf; tftp 0x96800000 memory.elf; tftp 0x93000000 log.elf; tftp 0x93800000 tty.elf; tftp 0x94000000 mfs.elf; tftp 0x94800000 vm.elf; tftp 0x95000000 pfs.elf; tftp 0x95800000 init.elf; mw.b 0x96000000 0 16384; tftp 0x96000000 cmdline.txt; dcache off ; icache off ; go 0x80200000
|
||||||
|
|
||||||
|
# For mmcinfo
|
||||||
|
#mmcbootcmd=mmcinfo; fatload mmc 0:1 0x80200000 boot.bin; go 0x80200000
|
||||||
|
|
||||||
|
# beaglebone
|
||||||
|
#mmc rescan; fatload mmc 0 0x80200000 kernel.bin; go 0x80200000
|
Loading…
Reference in a new issue