on the ramdisk image then ask which set of bootblocks to install (normal or
serial). If it doesn't exist, just install the normal ones. (small/tiny
images).
and some sparc64 fixes. details:
- new scripting_{,v}fprintf() that also write to the script log (if open).
- support of creation of LFS filesystems
- standard installs now allow one to choose which file systems to create,
out of the list of /usr, /var, /home, MFS /tmp, and swap. a / is always
created, but the rest all optional. [*]
- new disklabel method: use existing. this requires one to fill in the
mount points (and having at least a "/" is enforced).
- preservation of existing filesystems (at install) is supported.
- rewrote most of make_fstab(): the entire thing is generated from the
bsdlabel now, rather than hard coding / to 'a' and swap to 'b'. create
MFS /tmp if requested.
- if IPv6 support isn't present, don't display any ipv6 messages.
- better rc.conf support
- sparc & sparc64 default to "cylinders" now.
- choosing "standard" instead of "standard with X" de-selects the X pkgs
by default.
- sparc64: don't install bootblocks until we have a complete system, avoids
booting with no /dev/console.
- sparc64: bump STDNEEDMB, it is way low.
[*] i have added default values for DEFVARSIZE & DEFUSRSIZE (this is used
only if /usr and /home are selected) to each port, based on STDNEEDMB. as
such, my guesses might be wrong so port maintainers should look at these.
instruction.
Create md_hello message and move that message to it.
Port-maintainers: please reflect the reality of your port.
Someone who can write french: please correct *.fr catalogue.
you really should not be changing the geometry values, unless they
look totally ridiculous due to some BIOS bug.
Disable manual entering of initial partition label values when doing
a custom label. The step was redundant. Just go to the label edit
directly, leaving everything but the c and d partitions empty.
seperate booleans. Add flags to run as a plain 'system()' command,
fullscreen (but on a pty), and chrooted, and implement their
functionality. Add a bit of TIOCPKT handling code to handle
programs messing with term settings better.
* Ask to set the root password at the end of an install.
* Remove a few unneeded comments.
* Sprinkle some touchwin() calls here and there to make the output cleaner.
They shouldn't really be needed, but even normal usage (no syslog
messages) even left the screen messy sometimes.
* Change some messages around that were apparently swapped by accident and
thus caused confusion.
"target" filesystem, i.e. a filesystem that will probably be
mounted on /mnt during install/upgrade, but will be / when
the system is booted. Needed to deal with absolute symbolic links.
This function is (unfortunately) a verbatim copy of realpath() from libc,
with prefix handling added.
by checking uname, or the BOOTMODEL environment var), and set
the kernel setname accordingly for some bootmodels (tiny and laptop),
to install GENERIC_TINY and GENERIC_LAPTOP respectively. There's
no sense in installing plain GENERIC, especially on "tiny" systems;
it may not even make it far enough to add swapspace on 4M machines.
* Make sure to always install bootcode into the MBR (unless the user
explicitly tells us not to). Should fix PR#8887, PR#9093, PR#9999
enabling and disabling swap. Enabling swap is currently only
done by the i386 port on systems with <= 8M of physical memory.
If a user re-enters the install procedure through the main menu,
and the target disk has an active swap partition, try to disable it,
warning the user that this might lead to 'out of swap' problems,
making a restart necessary. This should not happen very often.
Partly based on comments by Simon Burge.
rather over the top. Not doing this also means that test(1) can
be omitted from the ramdisks (for scripts it's not needed, because it
is built in to sh(1)).
that "your hard disk" is about to get nuked, and you are no longer sure
which of your ten disks you told sysinst to wipe?
Change this to tell you:
``Ok, we are now ready to install NetBSD on your hard disk (wd0). Nothing ...''
'rc_configured' is still changed via sed's s///, wscons=yes is appended
via "echo >>".
* make target-routines (target_expand(), and whatnot) work if no root
disk was selected. With this, sysinst can now be used on a "normal"
system to adjust the system's timezone. Use the entry in the "Utilities"
menu for that.
Both changes were tested by a full i386 installation.
before extracting sets, and move it back afterwards, to save the information
which X server to use.
Adresses PR 10935 by Dan McMahill <dmcmahill@netbsd.org>
* If etc/localtime can't be readlink(3)'d, assume the default time zone is
UTC
* if errors occur (malloc, fts_open, fts_read, menu generation fails),
skip timezone setting instead of terminating sysinst.
(/mnt)/usr/share/zoneinfo in a listbox, and setting (/mnt)/etc/localtime
accordingly.
* Adjust for the needed menuc change un run.c's log_flip() and script_flip()
functions.
Related PRs:
5777 sysinst does not offer to tweak /etc/localtime
8099 changing the default time zone is non-obvious
9910 sysinst doesn't ask about setting timezone
to prevent menuc(?) from putting all things in one line
(I don't know since when we got this "auto-wrapping" stuff,
and it may be nice for text paragraphs, but it's a PITA for
tables etc.)
do not save address/netmask/default router, if we got them from dhcp.
(we shouldn't do that). if we keep any of dhcp config into /etc, we shoul
update rc.conf to run dhcp again.
- on a IPv6/v4 dual stack network, it makes more sense to configure both.
- also, many of IPv4/v6 dual stack network requires us to contacd DNS
over IPv4 transport.
discussed with cyber@netbsd.org.
that can be specified with CHS, truncate it to the maximum values that
the BIOS provided, not 1023*255*63. Some BIOSs get awfully cranky when
you do that.
overwrite anything important. (The moving down hides some elements
of the selection box, but we can scroll).
Took some digging to find out that aparently all selection boxes default
to a upper row of 12 and some more digging on how to change it.
* Use endwin() strategically so that the child does not corrupt the display
when suspending or exiting.
* Handle backspace.
* Only do one refresh per buffer-full.
* Eliminate redundant code.
orts. Since port specific information is in appropriate arch/.../md.h
bsddisklabel.c is currently #included by arch/.../md.c.
I'm not totally happy about this, but my concience is somewhat salved by the
overall reduction in breakage.
Initially only pmax, sparc, vax and x68k are using bsddisklabel.c.
While I'm here adjust defs.h for more than eight partitions in a generic
fashion.
partitions under any circumstances, allow no swap, do not *overwrite* /usr
when listing additional partitions, and try to abstract at least most of the
magic numbers to #defines at the top.
Also sync up as much as possible to make this easier in future.
Still need to attack the other arch's md.c files.
Fixed PR#7741
If the default swap is smaller than the remaining disk, truncate to the
available space.
Set rc_configured to YES in md_cleanup_install()
XXX Only the callers that actually pass strings were fixed, the rest were
XXX left passing 'NULL'. Eventually they should be cleaned up to pass
XXX MSG_NONE, but I didn't want to do that yet because somebody else
XXX (jonathan) is hacking on the run_prog callers and I didn't want to
XXX cause him a Lot of conflicts. at least right now, MSG_NONE and NULL
XXX are as equivalent as they need to be.
>Removing leading slashes in the url_encode() function is bad, because
>they might be part of a password, but somebody else had apparently made
>url_encode() do that. Here's a patch that stops url_encode() from
>removing leading slashes, changes the encode_leading_slash code to
>fit in with that policy, adds some comments that should dissuade folk
>from removing leading slashes in the future, and fixes a bug where the
>encode_leading_slash code was not decrementing len.
install.sub:
- fix interface grovelling, ifmedia support, allow ifmedia and link
to have a "none" (-> "") answer (which lets you give nothing when
a default answer is given)
- allow installing more than one set at a time, including "all" as
a synonym for all remaining sets
- mount -o async when extracting sets
makeconf.awk:
- put default "libs" section at the end rather than the start, so
you can put other "libs" in before this list
- minor cleanup
mtree.conf:
- create /kern
sparc install.md:
- MDSETS are now "kern xbase xcomp xcontrib xfont xserver"
- use /kern & kernfs (replaces dmesg)
- replace grep & cut pipe lines with sed
- replace grep hackery with sed hackery
- grep and cut are no longer required! yay!
- deal with no /usr/bin/vi -- call disklabel -i
- in md_copy_kern() link the netbsd.GENERIC we got from the kern set,
rather than the miniroot kernel
sparc miniroot list:
- no more dmesg, cut or grep
sparc ramdisk changes:
Makefile:
- `ramdiskbin.conf' is now generated by makeconf.awk
- don't use libhack's opendir, it breaks
dot.profile:
- don't assume terminal is `sun'
- set EDITOR=ed
-
list:
- instbin -> ramdiskbin to make `makeconf.awk' work
- CRUNCHSPECIAL those special dirs
- add our LIBS as necessary
libhack changes:
- if NOLIBHACKOPENDIR is set, don't build opendir.o
Shouldn't bother doing DNS lookups or wait a really long time,
should display verbose output and quit after the host has been
successfully pinged even once. count bumped up to 5 to give boards
which take a while to do media autoselection time to do their thing.
makes some things harder, for instance... Deal correctly with the case
where the user-supplied hostname is already fully qualified with the
domain name they supplied. Addresses PR#6955.
installation would try to continue even if no networking interfaces found,
and, and, when that was fixed, instead of dropping back to the
pick-distribution-medium menu they'd drop all the way back to the opening
menu.
to the toplevel menu, as promised by the media selection menu, without
first going through an "installation is aborted" menu.
* when something causes the installation to fail (e.g. missing set or failure
to extract a set's contents), don't go through N menus
(missing/failed/aborted, sets didn't install/aborted,
sanity check failed/aborted) before getting back to the top level. The
user only needs to be told once that their life sucks.
screen as XXX. Where they were not followed by wclear(stdscr), add
wclear(stdscr). Somebody was let out without adult supervision. If i
were more adventurous, i'd remove the bits that output 'CL', but i'm not
gonna go there right now.
forward them on to subprocesses. nice when running a subprocess in
a display window to allow the user to kill the subprocess w/o nuking
sysinst itself. add handling for QUIT, which gets handled the same
as intr. add handling for HUP which just cleans up. More signals
should be handled.
paths relative to ${.CURDIR} instead. Using BSDSRCDIR here means that
it's impossible to compile these programs out of the source tree they're
a part of, unless that sort tree happens to be the one at BSDSRCDIR.
pseudo-devices. This is done by explicitly listing the driver names
(e.g. "lo") to ignore in an array in this file. Right now, "eon", "gre",
"ipip", "lo", "nsip", "ppp", "sl", "strip", and "tun" are ignored.
use stdscr's maxx and maxy to set up the message window rather than hard
coding 78 and 22, respectively. The latter, combined with large messages
and a relatively small screen (and perhaps badly-placed menus), would seem
to cause the SEGVs reported in PR#7806. (For certain window sizes, the
menu system would reject the menus as too small, but for others sysinst
would just crash.)
password, offer defaults. When displaying the current values, note
that a password has been set and is hidden, rather than displaying
the number of characters entered for the password. (Thanks to wrstuden
for the translation of "hidden"...)
start of the URL so that the request will start from / (rather than
relative to the login directory; makes things work better for
non-anonymous FTP). To make it clearer what's going on, make the
default path (used to get distribution bits) relative. (according
to the 1.4 LAST_MINUTE file, this is OK.)
* Also, %-encode passwords in FTP URLs (doesn't help actual security, but
makes it slightly harder to figure out a password by reading over
somebody's shoulder).
be called. it'd cleanup() then exit(). however, cleanup() is scheduled
to run at exit via atexit(). This means that it gets run twice, and
this causes confusion for things like endwin(). The end result is
that rather than actually exiting and printing the "sysinst terminated"
message, after one control-c it looks like it's still sitting at the
last screen you were viewing even though it's actually at a shell prompt.
squelch the cleanup() in the SIGINTR handler to avoid this problem.
* while here, nuke the annoying space before the "sysinst terminated."
message. it looks bad, and serves no purpose.
read/write that much. Previously, too much was written back to
disk (although it didn't do any harm because of the sequence
of execution).
Also, upgrade the MBR type from 386bsd -> NetBSD if needed during
an upgrade operation.
Check if there's no active partition after MBR editing.
Ask for own MBR to be installed if we're booting from out of CHS range.
Ask for bootselector to be installed if > 1 OS, and configure it.
tables being written on disk:
- when counting non-BSD partitions, use part[i], not part[0]
- when using full disk for NetBSD, initialise all the fileds of the
mbr entries (especially flags)
- When converting to on-disk format, if start and size = 0, initialise
c/h/s to 0 for both start and end. convert_mbr_chs() would make an entry
0/0/0, 0/0/1 which is not bogus, but not what we really want either.
cleanups before extracting a set. Should'nt do anything for an install,
as the filesystem shouldn't contain files that need to be removed.
cleanup_dist() is called before extract_file() for each set (the set name
is passed as parameter). It will open a file /dist/<set name>_obsolete
if it exists. This file should contain a list of files (absolutes
pathnames) that needs to be removed. cleanup_dist() will lstat() each file
to determine if it's there and if it's a directory or not.
It will then unlink() entries that are not directories and then rmdir()
directories. If a directory is not empty (it should now if the list of files
is correct) it will be renamed to <directory.old> and the user will be warned.
Other changes:
- move prototype of target_prefix() in defs.h, don't maintain a copy
of it in each file.
- in install.c, after MSG_disksetupdone, do a wclear(stdscr) (display was
clobbered after it).
- kill MSG_openmsgbuf, it's not used anywhere
- after MSG_disksetupdone in upgrade, don't call MENU_ok, do it the
same way as in install.
- add wclear(stdscr);/wrefresh(stdscr); before calling MENU_distset (another
display problem ...)
- While I'm there, move ask_verbose_dist() before MENU_distmedium. This way,
if all go well the user can go away one ftp starts and come back once
sets are extracted.
- in run_prog(), do an explicit wclear(stdscr); wrefresh(stdscr);
before launching subwindows. This seems to solve all the display
problems associated with run_prog().
enter partitions offet and size. The user can chose unit independantly of
the unit used for display ('M'/'c'/'s'). These functions do the proper
bound checks and alignement/roudups. Used in the edfspart menu and
i386 md_make_bsd_partitions() (other ports should do the change as
well).
- now that getpartsize() does the rigth thing, kill the swapadj hack (which was
buggy anyway).
- in i386 md_make_bsd_partitions(), don't propose defaults that don't fit on
the disk. If the disk is too small, fallback to custom instead.
- fix a bug in mbr.c, where the partition flags would not have always been
reset. sysinst created me a MBR with 2 active partition. The boot code
doesn't like it :)
- added a message for eventual mount failures.
- killed donewfs and extracting messages, as we run the commands in a
subwindow these messages just flashed on the screen.
- Changes a few exit(1) to return(1), to give the user a second chance.
- added msg_clear() or wclear(stdscr) in a place or two, to make
display a bit nicer.
- in run_cmd(), if the command succeeded, don't wait for the user to
press enter.
- Make all the functions called from do_install() return an error code,
so that we can abort install if something went wrong.
- Add a 'errstr' argument to run_prog(), which if not NULL is displayed
with msg_printf() and followed by process_menu(MENU_ok) if the command fail.
Used to warn the user that the current action is aborted.
- in a few places use msg_display() or msg_printf() rather than printf.
It seems that stdout/stderr are not always pointing to the active curses
window.
- garbage-collecd unused messages, add a few new one (error handling).
XXX only tested on i386. Other md parts should be tested as well.
* Use structures, not 2-dimensional arrays..
* Use the DIOCGDEFLABEL ioctl to get the disk information,
to avoid confusion with (older) labels.
* Don't ever call fdisk for partitioning. This was the
source of much confusion.
* For the i386, use the BIOS geometry information passed by
the bootblocks.
Lots of things left to do, but it's a start.
encoded. This means certain passwords, usernames, etc., will not work
with "ftp ftp://...."
This code, submitted by Alan Barrett <apb@iafrica.com>, fixes this by
hex encoding unsafe strings in a clean fashion. This should close a
couple of outstanding PRs. Thanks Alan!