refuses to start if it does not find a matching entry for the terminal
type.
My impression is that this is a problem in the shell, because
at least on PicoBSD images, the shell itself coredumps.
Anyways, this is the quickest fix i can come up with.
in crunch.conf -- the previous choice, CWD, was too subject to false
matches (this string will be replaced by the absolute pathname
during the build process).
From the user's perspective:
* everything is now built outside the source tree (more precisely,
in `pwd`/builddir-${name}/ ) except for the kernel config file(s)
which still need to be copied into src/sys/i386/conf because of
"config" limitations. I am not sure if there is an easy way
to get away from this without changing "config" or replicating
some part of the source tree.
This is really the only change that most users should worry about,
but it is a good one.
* if you do cross-compiles (using "picobsd --src somedir/src [--init] ... ")
then the libraries and include directories etc. are searched/created
in "somedir/usr" ;
* you can do most things (basically build the kernel and the crunched
binary and the filesystem trees) without root privileges. You need
privileges to use mdconfig/vnconfig to create the actual MFS and
floppy image, unfortunately.
* the -v option now prints some diagnostic but does not stop for
user input at each step. You need to specify -v -v to have the
old behaviour.
Internally, the script has been reshuffled quite a bit to support
the above features. Many shell variables have been renamed or
made local in an effort to avoid undesired side effects. There is
a somewhat better error handling in case something goes wrong.
tree. Unfortunately the latter cannot be completely readonly, because
"config" still depends on the kernel config file being in sys/${ARCH}/conf
(it seems to derive other pathnames from that one).
before parsing the command line.
Move code to build include and libraries in a separate function,
so we can use the verbose flag for that.
Chang ownership of some directories so more of the build process
(namely, builds of include and libs) can be run without root
permission (we still depend on root permission to mount a memory
filesystem).
as well. This works by selecting "md" or "vn" depending on "uname -r"
output, so we can use the same script on -CURRENT and -STABLE.
Also included minor bugfixes and code cleanup.
Testers welcome, as this code has only been tested on -STABLE
(and for this reason I am doing an immediate MFC).
so as to make the "picobsd" script less version-specific.
Improve handling of cross-builds (which requires creation of
includes and libraries for the new source tree).
The "picobsd" script will not probably work on -current because it still
uses 'vn' instead of 'md', but i am commiting it anyways to keep it
in sync with the version in -stable.
I get a link error on in6addr_<something> and i cannot find the
symbol in any of the libraries. It might be my mistake, but in any
case the crunched binary would overflow the floppy, so...
This applies to -current only.
Make sure hints are statically compiled into the kernel,
because the bootloader is not available in picobsd and so the
hints file cannot be found at run time.
(This is kind of inconvenient if you have to handle non PnP devices,
but fortunately these days non-PnP ISA cards are disappearing...)
This must have to do with the use of devfs in -CURRENT, but i
have no idea when the devfs is actually mounted (is it a
side effect of mount -t nonfs or what ?) and when /dev/fd0c becomes
available.
For the time being, let's use this hack. Once I understand how devfs
works, this can be reverted back to the previous value, and also the
part of the build script which creates device entries can be nuked.
This is for -current only.
better place to handle dependencies.
Make another step at helping cross-compiling: when the user specifies
an alternate source tree, the script takes care of creating include
files and libraries for the new tree.
Furthermore, build and use a version of the "config" program which
matches the new sources.
It takes a long time to create libraries, and it might even not do
the right thing at once, there might be some dependencies that i
have forgotten. At any rate, with this code i have been able to
build a working picobsd image using -CURRENT sources on -STABLE
MFC after: 3 days
With these scripts i was able to build a _working_ image of a
bridge-like floppy image with a reasonable set of utilities
in it, despite the code size increase we have in 5.0
The scripts are slightly different from the previous ones especially
on the place where the kernel and binaries are built. Hopefully
this will not cause too much trouble to people (is there any???)
using the old scripts.
consist of contiguous bits in little endian format. Before the fix
the netmask of 0xfffffff0 (0xf0ffffff in little endian format) was
displayed /24 instead of /28.
Also, add a missing include.
Submitted by: Maxime Soule <Maxime.Soule@IPricot.com>
rc.conf: make the system recognise the MAC address and assign an IP
automatically from /etc/hosts (or ask the user)
sshd_config: don't do x11 forwarding.
Deprecate the "global" crunch.inc file and the CRUNCHFLAGS global build
options. Tools not policy. Move these global settings out into each
picobsd distribution.
a per program basis allowing a greater control on what is built.
The buildopts file contains Makefile lines of form:
# Anything added to OPTS is added to every build rule.
OPTS= -DNOPAM
# These should only be added to the build of user-ppp.
ppp_OPTS= -DNOKLDLOAD -DNOINET6 -DNONAT -DNOATM -DNOSUID \
-DHAVE_DES -DNORADIUS -DNOI4B -DNONETGRAPH
Really these should be added to crunch.inc, but that file is currently
optional, and if defined masks the global one. Next step will be to move
these global settings back out into the individual builds as OPTS, and
then migrate OPTS and prog_OPTS back into the local crunch.inc file.
Peter's new format, and I'd added hints files for each.
The build process uses the PICOBSD.hints file as well as the config,
and additionally builds with -DNO_MODULES. The build process
probably needs to be converted to use the 'buildkernel' method
instead of running config itself.
The kernels now compile. I've not been able to test the crunch
process however because it used the vn driver and there are no
/dev/vn device nodes under devfs yet. Maybe someone else could
give it a go.
Replace all in-tree uses with <sys/mouse.h> which repo-copied a few
moments ago from src/sys/i386/include/mouse.h by peter.
This is also the appropriate fix for exo-tree sources.
Put warnings in <machine/mouse.h> to discourage use.
November 15th 2000 the warnings will be converted to errors.
January 15th 2001 the <machine/mouse.h> files will be removed.
Replace all in-tree uses with necessary subset of <sys/{fb,kb,cons}io.h>.
This is also the appropriate fix for exo-tree sources.
Put warnings in <machine/console.h> to discourage use.
November 15th 2000 the warnings will be converted to errors.
January 15th 2001 the <machine/console.h> files will be removed.
build process in too many cases. Adding mtree to bootstrap-tools
to solve this breaks the upgrade path because mtree needs a
libc that has strtofflags and fflagstostr.
the building of the crunched binary.
I'll add examples when I add the post-include mechanism, since the
crunch.mk environment stomps on the pre-included crunch.inc's variables
at the moment.
objects, to simplify working with PicoBSD.
Add the ability to put make instructions in crunch.inc to pass to the
build process.
Now explicitly make the objects in our own object tree, since we want to
build the objects with our own defines, and allow this to occur in a
common object tree for all PicoBSD builds, if required. This is
controlled by the COMM_OBJ variable, for those who don't want this -
setting it to /usr/obj again will just pick up the objects from your
last make buildworld, as before.
for read-only src tree.
While I'm there:
1) Use kgzip, not kzip, since kzip certainly doesn't make bootable
kernels anymore. loader still isn't built separately, let alone without
forth support. This needs to be fixed.
2) Expand the mount/vnconfig examples to be the defacto way of making
sure the filesystems are mounted, unmounted, or not configured. This
needs more work.
3) quieten the build substantially, so errors are more prominent
4) Start of '-j' ability. Current style isn't quite in the correct
dependency format for this, but obvious mistakes (changing directories
in main shell) are fixed.
Approved by: grog, dwhite, luigi (no objections to me doing a makeover)
rc and login.conf files from the /etc directory on the floppy.
This prevents the overwrite yes/no prompt from occuring in gzip.
(some PicoBSD disks use gzip and some use minigzip, so the gzip -f flag (force)
is not an option. minigzip has a different meaning for the -f flag.}
. Bring PicoBSD up to date with -CURRENT reality.
. Make PicoBSD smart and not spam /dev/vn0 and /mnt. Now it uses the first
unused vn device and creates a temporary mountpoint in /tmp.
. Miscellaneous build cleanups and optimizations.
Unfortunately the bridge, isp, and router floppies are too big and need
the axe treatment. The install floppy needs updating to -CURRENT. Dial and
net build and (appear to) run OK. I will be adressing these in the
near future (unless someone beats me to it :-) ).
PR: misc/17737
Submitted by: Omachonu Ogali <oogali@intranova.net>
structure.
These changes have been discussed with Greg Lehey and posted on
freebsd-small (most things in the PicoBSD tree were already broken
so things can only improve!)
Approved-By: jordan
originally done to track down yet another case of lost init, and is
not strictly necessary, but it seems more logical to have binaries in
/sbin than in /stand. Previously /sbin and /bin were symlinks to
/stand. Now /bin and /stand are symlinks to /sbin.
as a preprocessor variable only. This broke the build of ppp. This
problem still exists in the old-style directories.
Debugging-help-supplied-by: brian
originally done to track down yet another case of lost init, and is
not strictly necessary, but it seems more logical to have binaries in
/sbin than in /stand. Previously /sbin and /bin were symlinks to
/stand. Now /bin and /stand are symlinks to /sbin.
only way to be sure the build works correctly is to do a 'make all'.
But with these changes, it's easier to test individual targets. In
particular, ensure that the vnode file systems are mounted before
writing to them.
Ensure that we don't get CVS directories on our floppies.
Use kgzip instead of kzip to compress the loader. This saves a few
kB.
Remove some test cruft.
using make instead of custom scripts) and two floppies instead of
one. The resultant floppy can do everything that the individual
floppies (dial, net, install, isp, router) could do, modulo some bit
rot that has occurred since PicoBSD last compiled. It also includes
all the programs on the fixit floppy, which could thus also die.
/bin currently contains the following files:
-sh dump ln ns sps
[ ed login ping stty
badsect ex ls ps swapon
cat expr mkdir pwd sync
chgrp fdisk mknod pwd_mkdb sysctl
chmod find more rdump syslogd
chown fsck mount reboot tar
chroot ftp mount_cd9660 restore telnet
clri getty mount_msdos rlogin telnetd
cp grep mount_nfs rm test
date gunzip mount_std rmdir traceroute
dd gzip msg route umount
dev_mkdb hostname mt routed vi
df ifconfig mv rrestore view
dhclient inetd natd rsh vm
dhclient-script init netstat sed w
disklabel kget newfs sh zcat
dmesg kill nfs sleep
Structure is in place for using the same build for the other
directories, but I'm no longer sure we need this. The current first
floppy will run fine by itself, but the size of a compressed kernel
has increased by nearly 50% since 3.2, and there's not much space for
anything useful on the remainder of the floppy. The current method
creates a larger mfs and can read as many floppies as the user can
stand. The footprint appears to be round 14 MB.
using make instead of custom scripts) and two floppies instead of
one. The resultant floppy can do everything that the individual
floppies (dial, net, install, isp, router) could do, modulo some bit
rot that has occurred since PicoBSD last compiled. It also includes
all the programs on the fixit floppy, which could thus also die.
/bin currently contains the following files:
-sh dump ln ns sps
[ ed login ping stty
badsect ex ls ps swapon
cat expr mkdir pwd sync
chgrp fdisk mknod pwd_mkdb sysctl
chmod find more rdump syslogd
chown fsck mount reboot tar
chroot ftp mount_cd9660 restore telnet
clri getty mount_msdos rlogin telnetd
cp grep mount_nfs rm test
date gunzip mount_std rmdir traceroute
dd gzip msg route umount
dev_mkdb hostname mt routed vi
df ifconfig mv rrestore view
dhclient inetd natd rsh vm
dhclient-script init netstat sed w
disklabel kget newfs sh zcat
dmesg kill nfs sleep
Structure is in place for using the same build for the other
directories, but I'm no longer sure we need this. The current first
floppy will run fine by itself, but the size of a compressed kernel
has increased by nearly 50% since 3.2, and there's not much space for
anything useful on the remainder of the floppy. The current method
creates a larger mfs and can read as many floppies as the user can
stand. The footprint appears to be round 14 MB.
Work-sponsored-by: Sitara Networks Inc.
slice, partition, newfs, and install FreeBSD from a tarball on a remote server.
Handy for doing mass-installs for server farms.
Documentation following shortly.
. Now builds on -STABLE (-CURRENT is broken due to bugs)
. etc directory contents centralized instead of in each
type directory (can exclude & override as desired)
. Removed extraneous language files (lang files for rc really necessary?)
. dialog-based build tool with support for custom floppy builds
. MFS image loads as a mfs_root module instead of compiled into kernel
THIS IS BROKEN ON CURRENT. I'll MFC to -STABLE immediately following.
luigi tells me I have an OK from jkh on the MFC.
Submitted by: luigi
removal of bio, tty, net
removal of quotes
switches from isa? to nexus? or atkbdc?
additional comments
These bring the kernel config files in sync with those in
RELENG_3
William Lloyd. New features include:
* many additional command line options
* "fetch" mode
* less bugs :-)
* better README.
Submitted by: William Lloyd <wlloyd@lap.net>
Reviewed by: abial
"passwordtime" is what passwd(1) has actually been using. I suspect
passwordperiod was the original intent. I can't figure-out which,
if either, BSDi uses. If anyone knows...