1) Add an md_post_extract() function. This function is called after
extracting the sets, and allows the arch to do something at that time.
In the case of prep, it is much easier to install the bootcode after all
the sets are extracted, so we do it in md_post_extract(). Added empty
md_post_extract() functions to all other arches so they compile.
2) Add md_mbr_use_wholedisk() and md_check_mbr(). In edit_mbr() I have
split off the code that uses the whole disk for NetBSD, into the
mbr_use_wholedisk() function. On most ports that use mbr.c, I made
md_mbr_use_wholedisk() just call that and return. On prep we create the
magical prep boot partition here. The md_check_mbr() function allows the
arch to add additional checks after the user had manually edited the MBR
to make sure the choices he made allow NetBSD to function. Added a dummy
routine to all mbr.c using arches.
3) Added code to bsdlabel.c to create a partition of type boot if
PART_BOOT is defined, but BOOT_SIZE is not defined. Also added two more
globals "bootsize" and "bootstart" which must be seeded in order to do
so. This is done on prep in md_check_mbr().
4) Added MBR_PTYPE_PREP to the list of MBR partitions.
5) Made the prep port actually install sanely. It now creates a prep
boot partition, labels it correctly, installs all the sets, and then runs
mkbootimage and dd's the bootimage into the prep partition. The result
is a prep installer that creates a bootable NetBSD installation
automatically.
6) Edited the prep menus and messages files to add new labels. In the
case of the translated files, I just added the words in english for
someone to translate later.
I tried to xcompile a few arches to make sure I didn't break anything,
but I could have missed something. Please let me know if I have broken
your arch in any way. I'll watch the autobuilds for the next few days
too. For all ports other than prep there should be no functional changes
at all.
Ask whether the user wants to delete the fetched files (ftp and floppy) after
install. Delete after sucessful install of each file.
Kill bufferred tty input in a couple of places when typeahead will be wrong.
Code added to run.c to do a 'cd' in the child, unused (so far).
asks you where to load stuff from.
Initialise stuff so that 'install default set of sets' works.
Fix install loop, removing infinite loop if/when first kernel not selected.
of the sets after an error.
A side effect is that it now does fetch-install-fetch-install..., not
fetch-...-fetch-install-...install.
The set selection code now uses a byte per set (not a bit-pattern) removing
the restriction of 32 sets, and allowing a per set status display (TBC).
Also TBC is deleting sets from /usr/INSTALL.
However I believe it works...
want to keep or delete the dist files.
Stop the "type enter to continue" if the rmdir fails - may not be empty.
Report an error if the chroot() (for RUN_CHROOT) fails.
fflush log and script files before writing to them from a child.
Remove a 'Press <enter> to continue' message that was accidently left
in by a previous commit.
Fixes PR/18555 (and a recent discussion on a mailing list)
Move info about cylinders to the 'ask for units' menu.
(translations need checking, done by cutting sentences)
Stop i386 always asking for units.
Use BIOS cylinders for MBR and disk cylinders for the disklabel.
(code intended to do this, but got it wrong...)
Mark some menus as 'sub menu' or MC_SUBMENU so that the screen underneath
is saved.
Add GENERIC.MPACPI to i386 menu.
a single function, the latter is now the return value of get_ramsize().
Changed all uses of rammb to get_ramsize().
Used the 64bit HW_PHYSMEM64 so silly things don't happen if the memory size
approaches (or even exceeds) 4GB.
Save the result in /etc/wscons.conf at the end of the install/upgrade.
Currently only builds for i386 - change arch/*/Makefile and add the
extra messages (though they could go into the msg.mi.* files).
Needs the 'Keyboard type' message translated in to German, French and polish.
Maybe the keyboard type names could be less cryptic...
I've made the error retry loops go back as far as the input menus.
Split all the pathname inputs into 2 pieces (base directory and set directory).
Reduced the size of some fixed strings.
Stopped the install aborting if ftp can't find a set (eg the X ones).
The French and Polish transations don't differenciate between Base_dir and
Set_dir - but that can be fixed later.
- Rename run_prog() to run_program() and remove the 'errmsg' argument (almost
never used).
- Be consistent about #define<space> in defs.h
- Allow BSDFFS partitions to be FFSv1 or FFSv2 (fixes PR install/23547)
- i386: install correct bootblocks for root filesystem type.
- Do 'fsck -p' before all mounts (but never a full fsck), rename fsck_xxx()
to mount_xxx() and remove some wrapper functions.
- Allow root to be an APPLEUFS partition - and allow them to be newfsed,
should fix PR install/23198
- Redo fstab processing for upgrade to avoid large static data items and
memory leaks. Change walk() to abort on user defined error.
(the fstab stuff really needs more work though...)
- i386: 'Warp' cursor to alternate option when selecting console/bootblocks,
should fix PR port-i386/23546.
- Allow MENU_ok and MENU_yesno to take user defined title.
- Ensure that mountpoint not defined for swap (and similar issues) when
editing netbsd label.
- Tweaks to error handling in run_program(), allow user to say that errors
are expected or that the display shouldn't be cleared before returning.
- Remove some old code that has been festering under #if 0
* use cd0a rather than cd0[cd] as the CDROM installation device.
This fixes problems with platforms that install from iso9660 images
encapsulated in a partition, and should not affect platforms that
don't.
* add RUN_PROGRESS to the run_prog() flags for ftp installs.
Okay'ed by David Laight.
- rework run_prog() so that the program name (etc) is usually displayed if
the program generates any output, or terminates with an error.
Allow arguments to included in single quotes.
Try to collect console output so it doesn't interfere with curses.
- Add a '*' to the cylinder count if non-integral number of cylinders
(on disklabel editor)
- Only show partition type for unused partitions.
- Show size including unused space on '+' partition, remove a..z since
the don't relate to partition IDs (netbsd partition sizes)
- Fix deleting of 'user' partitions - killed size of next ptn.
- Don't default a swap partition is the disk already has one.
- Fix deleting of extended MBR partitions - changed size of ptn 2.
- Show error message if user tries something illegal in mbr editor.
- Default to old diskname (actually disk type - dunno why!)
- Use MI enable_rc_conf() to set RC_CONFIGURED=YES, use a single sed
command instead of a raft of code playing with files etc.
- Float some menus to just below header text, saves counting and lets
language variants have different height headers (use y=-1)
- Track whether anything is mounted on /mnt2 better.
- Put more texts into message file.
- Change english prose texts to be more correct.
- Stop french and polish versions core dumping if ptn start/size changed.
- Fix processing logic for saving /etc (action is still borked)
- Do tail-end setup if any sets (eg X) can't be found (but not if you give
in (yet)).
add support for setting mount options of async, noatime, nodevmtine and softdep.
add noauto if 'mount' was not requested.
add entry for /proc (with noauto)
Display fragment size and block size on the correct line.
Ask for numeric fragment size (not # fragments/block).
Show one unused partition when editing disklabel.
Zap all fields when a partition is made FS_UNSED.
Tweak some menu texts (a space at the end of a line causes a line break!).
Simplify code that displays output from commands - curses is requied to not DTRT
with CR/LF sequences, I need to revert libcurses :-(
Make disk_desc[], disk and numdisks local to get_disks (instead of globals).
Fix a little fallout from the above.
A bit of mbr.c was missing #ifdef BOOTSEL...
This should stop the i386 code splatting all over the start of the disk
during upgrade.
Upgrade will still use partition 'a' (unless you loop through the install
far enough first!)
Use swapctl() for all swap operations.
Remove md_upgrade_mbrtype() from arc and hpcmips ports.
(I haven't finalised what I'm doing about type 165 partitions, but the
existing code is borked.)
Remove pointless 'len' parameter from read_mbr and write_mbr.
Make read_mbr initialise mbr if it can't be read (delete MD code).
Make i386 always ask at least once about the bootcode.
Move LIB_MOVE and LIB_COUNT from md.h to aout2elf.c
4 times system memory). (These numbers need moving to a different menu still.)
Remove size of /usr from default sized / when /usr created.
Shrink swap in order to get partitions into available disk space.
Add twice ram size to / if space available (for system dumps).
Keep all but last partition cylinder aligned when the disk isn't a whole
number of cylinders.
I've also made the set selection happen first. This lets me test it!
also measn the selected sets could be used in the disk partition code.
Removed the 'with X' disk layout question (now too late to change the sets).
Fix menu size so that user defined partitions can be allocated instead of
standard ones (need > MAXPARTITIONS entries in menu).
Make partition size info static - with a view to including it in a longer loop.