dynamic executables on ramdisk support
See UPDATING about upgrading clang for dynamic linking. . allow executables on ramdisk to be dynamically linked; this means putting a few required shared libraries and ld.elf_so on the ramdisk. . this makes the ramdisk (usage) smaller when they are dynamic, but bigger when they're not. . also we can safely ditch newroot and call mount directly as that is all newroot does. . create proto.common to share a bunch of entries between small/nonsmall cases
This commit is contained in:
parent
0c8e5ecc2e
commit
53f94f8ed4
11 changed files with 89 additions and 163 deletions
|
@ -18,7 +18,7 @@ SUBDIR= add_route arp ash at awk \
|
|||
less lex loadkeys loadramdisk logger look lp \
|
||||
lpd ls lspci mail make MAKEDEV \
|
||||
mdb mesg mined mkfifo mkfs.mfs mknod \
|
||||
mkproto mount mt netconf newroot nice acknm nohup \
|
||||
mkproto mount mt netconf nice acknm nohup \
|
||||
nonamed od paste patch pax \
|
||||
ping postinstall poweroff pr prep printf printroot \
|
||||
profile progressbar pr_routes ps pwd pwdauth \
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
SCRIPTS= newroot.sh
|
||||
MAN=
|
||||
|
||||
.include <bsd.prog.mk>
|
|
@ -1,5 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Actually, newroot is just like mounting on the root
|
||||
exec mount -n "$*" / > /dev/null
|
||||
|
|
@ -1,3 +1,9 @@
|
|||
20120416:
|
||||
Upgrade your clang to clang-2.9nb6 or clang-3.1nb3 to be able to
|
||||
build shared libraries and dynamically linked executables. The
|
||||
system will keep working without them, but a dynamic-capable
|
||||
system will be a requirement soon.
|
||||
|
||||
20120413:
|
||||
Boot loader menu now has an option to boot into single user mode. To
|
||||
get the menu option do:
|
||||
|
|
|
@ -2,34 +2,35 @@
|
|||
|
||||
.include <bsd.own.mk>
|
||||
|
||||
PROGRAMS= at_wini cdprobe dev2name floppy loadramdisk mount \
|
||||
pci procfs sh service sysenv mfs fsck.mfs
|
||||
SCRIPTS=newroot
|
||||
|
||||
.if ${MKSMALL} != "yes"
|
||||
PROGRAMS+= ahci ext2
|
||||
.endif
|
||||
|
||||
.if ${MKACPI} != "no"
|
||||
PROGRAMS+= acpi
|
||||
.endif
|
||||
PROG_DRIVERS=at_wini floppy pci
|
||||
PROG_COMMANDS=cdprobe dev2name loadramdisk mount fsck.mfs sysenv sh \
|
||||
service
|
||||
PROG_SERVERS=mfs procfs
|
||||
PROG_USRSBIN=pwd_mkdb
|
||||
PROGRAMS=$(PROG_DRIVERS) $(PROG_COMMANDS) $(PROG_SERVERS) $(PROG_USRSBIN)
|
||||
EXTRA=system.conf master.passwd pwd.db spwd.db rs.single
|
||||
|
||||
.if ${MKSMALL} != "yes"
|
||||
PROG_DRIVERS+= ahci
|
||||
PROG_SERVERS+= ext2
|
||||
PROTO= proto
|
||||
.else
|
||||
PROTO= proto.small
|
||||
.endif
|
||||
|
||||
EXTRA=system.conf master.passwd passwd pwd.db spwd.db rs.single
|
||||
.if ${MKACPI} != "no"
|
||||
PROG_DRIVERS+= acpi
|
||||
.endif
|
||||
|
||||
CPPFLAGS+= -I${MINIXSRCDIR}/servers -I${MINIXSRCDIR}
|
||||
CLEANFILES += $(PROGRAMS) $(SCRIPTS) $(EXTRA) image image.c t proto.gen
|
||||
CLEANFILES += $(LIBRARIES)
|
||||
|
||||
install: all
|
||||
|
||||
realall: image
|
||||
|
||||
image: proto.gen mtab rc $(EXTRA)
|
||||
image: proto.gen mtab rc $(EXTRA) passwd
|
||||
mkfs.mfs image proto.gen || { rm -f image; false; }
|
||||
if fsck.mfs -s image | grep -q CLEAN; \
|
||||
then : ; \
|
||||
|
@ -38,134 +39,56 @@ image: proto.gen mtab rc $(EXTRA)
|
|||
rm -f image; false; \
|
||||
fi
|
||||
|
||||
ahci: ../ahci/ahci
|
||||
install ${STRIPFLAG} ../$@/$@ $@
|
||||
.for driver in $(PROG_DRIVERS)
|
||||
$(driver): ../$(driver)/$(driver)
|
||||
install $> $@
|
||||
|
||||
../ahci/ahci:
|
||||
$(MAKE) -C ../ahci
|
||||
../$(driver)/$(driver):
|
||||
$(MAKE) -C ../$(driver) $(driver)
|
||||
.endfor
|
||||
|
||||
at_wini: ../at_wini/at_wini
|
||||
install ${STRIPFLAG} ../$@/$@ $@
|
||||
.for cmd in $(PROG_COMMANDS)
|
||||
.if $(cmd) == sh
|
||||
dir.$(cmd)=ash
|
||||
.else
|
||||
dir.$(cmd)=$(cmd)
|
||||
.endif
|
||||
$(cmd): ../../commands/$(dir.$(cmd))/$(cmd)
|
||||
install $> $@
|
||||
|
||||
../at_wini/at_wini:
|
||||
$(MAKE) -C ../at_wini
|
||||
../../commands/$(dir.$(cmd))/$(cmd):
|
||||
$(MAKE) -C ../../commands/$(dir.$(cmd)) $(cmd)
|
||||
.endfor
|
||||
|
||||
floppy: ../floppy/floppy
|
||||
install ${STRIPFLAG} ../$@/$@ $@
|
||||
.for etc in $(EXTRA)
|
||||
$(etc): ../../etc/$(etc)
|
||||
install $> $@
|
||||
.endfor
|
||||
|
||||
../floppy/floppy:
|
||||
$(MAKE) -C ../floppy
|
||||
.for cmd in $(PROG_USRSBIN)
|
||||
$(cmd): ../../usr.sbin/$(cmd)/$(cmd)
|
||||
install $> $@
|
||||
|
||||
acpi: ../acpi/acpi
|
||||
install ${STRIPFLAG} ../$@/$@ $@
|
||||
../../usr.sbin/$(cmd)/$(cmd):
|
||||
$(MAKE) -C ../../usr.sbin/$(cmd) $(cmd)
|
||||
.endfor
|
||||
|
||||
../acpi/acpi:
|
||||
$(MAKE) -C ../acpi
|
||||
.for server in $(PROG_SERVERS)
|
||||
$(server): ../../servers/$(server)/$(server)
|
||||
install $> $@
|
||||
|
||||
pci: ../pci/pci
|
||||
install ${STRIPFLAG} ../$@/$@ $@
|
||||
|
||||
../pci/pci:
|
||||
$(MAKE) -C ../pci
|
||||
|
||||
cdprobe: ../../commands/cdprobe/cdprobe
|
||||
install ${STRIPFLAG} ../../commands/$@/$@ $@
|
||||
|
||||
../../commands/cdprobe:
|
||||
$(MAKE) -C ../../commands/cdprobe
|
||||
|
||||
dev2name: ../../commands/dev2name/dev2name
|
||||
install ${STRIPFLAG} ../../commands/$@/$@ $@
|
||||
|
||||
../../commands/dev2name/dev2name:
|
||||
$(MAKE) -C ../../commands/dev2name
|
||||
|
||||
loadramdisk: ../../commands/loadramdisk/loadramdisk
|
||||
install ${STRIPFLAG} ../../commands/$@/$@ $@
|
||||
|
||||
../../commands/loadramdisk/loadramdisk:
|
||||
$(MAKE) -C ../../commands/loadramdisk
|
||||
|
||||
mount: ../../commands/mount/mount
|
||||
install ${STRIPFLAG} ../../commands/$@/$@ $@
|
||||
|
||||
../../commands/mount/mount:
|
||||
$(MAKE) -C ../../commands/mount
|
||||
|
||||
fsck.mfs: ../../commands/fsck.mfs/fsck.mfs
|
||||
install ${STRIPFLAG} ../../commands/$@/$@ $@
|
||||
|
||||
../../commands/fsck.mfs/fsck.mfs:
|
||||
$(MAKE) -C ../../commands/fsck.mfs
|
||||
|
||||
newroot: ../../commands/newroot/newroot.sh
|
||||
install ${STRIPFLAG} ../../commands/$@/$@.sh $@
|
||||
|
||||
../../commands/newroot/newroot:
|
||||
$(MAKE) -C ../../commands/newroot
|
||||
|
||||
sysenv: ../../commands/sysenv/sysenv
|
||||
install ${STRIPFLAG} ../../commands/$@/$@ $@
|
||||
|
||||
../../commands/sysenv/sysenv:
|
||||
$(MAKE) -C ../../commands/sysenv
|
||||
|
||||
sh: ../../commands/ash/sh
|
||||
install ${STRIPFLAG} ../../commands/ash/$@ $@
|
||||
|
||||
../../commands/ash/sh:
|
||||
$(MAKE) -C ../../commands/ash sh
|
||||
|
||||
service: ../../commands/service/service
|
||||
install ${STRIPFLAG} ../../commands/service/$@ $@
|
||||
|
||||
../../commands/service/service:
|
||||
$(MAKE) -C ../../commands/service
|
||||
|
||||
mfs: ../../servers/mfs/mfs
|
||||
install ${STRIPFLAG} ../../servers/mfs/$@ $@
|
||||
|
||||
../../servers/mfs/mfs:
|
||||
$(MAKE) -C ../../servers/mfs
|
||||
|
||||
procfs: ../../servers/procfs/procfs
|
||||
install ${STRIPFLAG} ../../servers/procfs/$@ $@
|
||||
|
||||
../../servers/procfs/procfs:
|
||||
$(MAKE) -C ../../servers/procfs
|
||||
|
||||
ext2: ../../servers/ext2/ext2
|
||||
install ${STRIPFLAG} ../../servers/ext2/$@ $@
|
||||
|
||||
../../servers/ext2/ext2:
|
||||
$(MAKE) -C ../../servers/ext2
|
||||
|
||||
system.conf: ../../etc/system.conf
|
||||
install ${STRIPFLAG} ../../etc/$@ $@
|
||||
../../servers/$(server)/$(server):
|
||||
$(MAKE) -C ../../servers/$(server) $(server)
|
||||
.endfor
|
||||
|
||||
passwd: ../../etc/master.passwd ../../usr.sbin/pwd_mkdb/pwd_mkdb
|
||||
rm -f ../../etc/master.passwd.orig ../../etc/passwd.orig
|
||||
rm -f ../../etc/pwd.db.tmp ../../etc/spwd.db.tmp
|
||||
../../usr.sbin/pwd_mkdb/pwd_mkdb -V 0 -p -d ../../ ../../etc/master.passwd
|
||||
install ${STRIPFLAG} ../../etc/$@ $@
|
||||
install ../../etc/$@ $@
|
||||
|
||||
../../usr.sbin/pwd_mkdb/pwd_mkdb:
|
||||
$(MAKE) -C ../../usr.sbin/pwd_mkdb
|
||||
|
||||
master.passwd: ../../etc/master.passwd
|
||||
install ${STRIPFLAG} ../../etc/$@ $@
|
||||
|
||||
pwd.db: passwd
|
||||
install ${STRIPFLAG} ../../etc/$@ $@
|
||||
|
||||
spwd.db: passwd
|
||||
install ${STRIPFLAG} ../../etc/$@ $@
|
||||
|
||||
rs.single: ../../etc/rs.single
|
||||
install ${STRIPFLAG} ../../etc/$@ $@
|
||||
|
||||
proto.gen: $(PROGRAMS) $(SCRIPTS) proto.sh ${PROTO}
|
||||
for p in $(PROGRAMS); do file $$p | grep -q ELF && strip -s $$p || true; done
|
||||
proto.gen: $(PROGRAMS) proto.sh ${PROTO} proto.common.etc proto.common.dynamic proto.sh
|
||||
strip $(PROGRAMS)
|
||||
sh -e proto.sh ${PROTO} >proto.gen
|
||||
|
||||
.include <minix.service.mk>
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
boot
|
||||
840 540
|
||||
1200 540
|
||||
d--755 0 0
|
||||
bin d--755 0 0
|
||||
cdprobe ---755 0 0 cdprobe
|
||||
dev2name ---755 0 0 dev2name
|
||||
loadramdisk ---755 0 0 loadramdisk
|
||||
mount ---755 0 0 mount
|
||||
newroot ---755 0 0 newroot
|
||||
sh ---755 0 0 sh
|
||||
service ---755 0 0 service
|
||||
sysenv ---755 0 0 sysenv
|
||||
|
@ -25,14 +24,3 @@ d--755 0 0
|
|||
dev d--755 0 0
|
||||
@DEV@
|
||||
$
|
||||
etc d--755 0 0
|
||||
system.conf ---644 0 0 system.conf
|
||||
mtab ---644 0 0 mtab
|
||||
passwd ---644 0 0 passwd
|
||||
pwd.db ---644 0 0 pwd.db
|
||||
spwd.db ---600 0 0 spwd.db
|
||||
master.passwd ---600 0 0 master.passwd
|
||||
rc ---755 0 0 rc
|
||||
rs.single ---755 0 0 rs.single
|
||||
$
|
||||
$
|
||||
|
|
11
drivers/ramdisk/proto.common.dynamic
Normal file
11
drivers/ramdisk/proto.common.dynamic
Normal file
|
@ -0,0 +1,11 @@
|
|||
libexec d--755 0 0
|
||||
ld.elf_so ---755 0 0 /libexec/ld.elf_so
|
||||
$
|
||||
usr d--755 0 0
|
||||
lib d--755 0 0
|
||||
libc.so.12 ---755 0 0 /lib/libc.so.12
|
||||
libminlib.so.1 ---755 0 0 /lib/libminlib.so.1
|
||||
libcompat_minix.so.1 ---755 0 0 /lib/libcompat_minix.so.1
|
||||
libterminfo.so.1 ---755 0 0 /lib/libterminfo.so.1
|
||||
$
|
||||
$
|
10
drivers/ramdisk/proto.common.etc
Normal file
10
drivers/ramdisk/proto.common.etc
Normal file
|
@ -0,0 +1,10 @@
|
|||
etc d--755 0 0
|
||||
system.conf ---644 0 0 system.conf
|
||||
mtab ---644 0 0 mtab
|
||||
passwd ---644 0 0 passwd
|
||||
pwd.db ---644 0 0 pwd.db
|
||||
spwd.db ---600 0 0 spwd.db
|
||||
master.passwd ---600 0 0 master.passwd
|
||||
rc ---755 0 0 rc
|
||||
rs.single ---755 0 0 rs.single
|
||||
$
|
|
@ -18,3 +18,8 @@ sed -e 's/^[bc]/& /' -e 's/rw-/6/g' -e 's/r--/4/g' \
|
|||
awk '{ printf "\t\t%s %s--%s %d %d %d %d \n", $11, $1, $2, $4, $5, $6, $7; }'
|
||||
)
|
||||
sed -n '/@DEV/,$p' <${PROTO} | grep -v @DEV@
|
||||
cat proto.common.etc
|
||||
if [ -x /libexec/ld.elf_so ]
|
||||
then cat proto.common.dynamic
|
||||
fi
|
||||
echo '$'
|
||||
|
|
|
@ -6,7 +6,6 @@ d--755 0 0
|
|||
dev2name ---755 0 0 dev2name
|
||||
loadramdisk ---755 0 0 loadramdisk
|
||||
mount ---755 0 0 mount
|
||||
newroot ---755 0 0 newroot
|
||||
sh ---755 0 0 sh
|
||||
service ---755 0 0 service
|
||||
sysenv ---755 0 0 sysenv
|
||||
|
@ -22,14 +21,3 @@ d--755 0 0
|
|||
dev d--755 0 0
|
||||
@DEV@
|
||||
$
|
||||
etc d--755 0 0
|
||||
system.conf ---644 0 0 system.conf
|
||||
mtab ---644 0 0 mtab
|
||||
passwd ---644 0 0 passwd
|
||||
pwd.db ---644 0 0 pwd.db
|
||||
spwd.db ---600 0 0 spwd.db
|
||||
master.passwd ---600 0 0 master.passwd
|
||||
rc ---755 0 0 rc
|
||||
rs.single ---755 0 0 rs.single
|
||||
$
|
||||
$
|
||||
|
|
|
@ -67,7 +67,11 @@ echo "Root device name is $rootdevname"
|
|||
if [ -e $FSCK ]
|
||||
then $FSCK -p $rootdevname
|
||||
fi
|
||||
/bin/newroot $bin_img"$rootdevname"
|
||||
|
||||
# Change root from temporary boot ramdisk to the configure
|
||||
# root device
|
||||
/bin/mount -n $bin_img"$rootdevname" /
|
||||
|
||||
/bin/mount -e -n -t procfs none /proc || echo "WARNING: couldn't mount procfs"
|
||||
|
||||
exec /bin/sh /etc/rc "$@"
|
||||
|
|
Loading…
Reference in a new issue