On Aug 1, 2013, at 9:56 AM, Amitabh Kant wrote: > On Thu, Aug 1, 2013 at 10:13 PM, Teske, Devin <devin.te...@fisglobal.com> > wrote: > I'm hoping that my very open development documentation on customizing the > release(7) process for producing DruidBSD releases can help you out here. > > I've documented much of the internals of the release(7) process (albeit, > relevant to the RELENG_8 release(7) Makefile; in RELENG_9 it's still relevant > to /usr/src/release/Makefile.sysinstall ... but I gather that much of the > knobs may still exist in HEAD). > > Have a read through this revision-controlled text file... > > http://druidbsd.cvs.sf.net/viewvc/druidbsd/druidbsd/druid/dep/freebsd/patches/README?revision=1.2&view=markup > > ALSO NOTE: Yes, the file is dated... it talks about cvsup instead of svn. My > hope is that the doco can be a good starting point (even if the data is a bit > dated). > > In there, you'll find things like (relevant to RELENG_9): > > make -f Makefile.sysinstall release \ > MAKE="/usr/bin/env CFLAGS=-DDRUID make" \ > CHROOTDIR=/usr/release EXTSRCDIR=/usr/src KERNELS_BASE= \ > NODOC=YES NO_FLOPPIES=YES NOCDROM=YES NOPORTS=YES \ > WORLD_FLAGS=-DWITHOUT_OPENSSL PATCH_FLAGS=-N \ > LOCAL_PATCHES=/tmp/druid.patches \ > LOCAL_SCRIPT=/tmp/local_script.sh |& tee release.log > > Take special note of the "LOCAL_SCRIPT=" option. > > Maybe, just maybe, the bsdinstall-specific release(7) process supports > LOCAL_SCRIPT too. If it doesn't... why not? > -- > Devin > > Devin > > Do you have any idea if there have an changes to bsdinstall process (on > scripting side) in the upcoming 9.2 ? >
Yes, the partedit portion of bsdinstall is scriptable in 9.2. Also, many bug fixes. Also, you can now create /etc/installerconf (no `dot' between installer and conf) and it will be picked up and run by bsdinstall. For your bsdinstall scripts, 2 new tools and a new framework to learn... Tools: bsdconfig(8) and sysrc(8) Framework: bsdconfig libraries (advanced scripting) If you're behind on your sysinstall(8) *(yes... sysinstall(8)) scripting abilities, then I suggest you brush up. * bsdconfig(8) is [mostly] backward compatible sysinstall(8) scripts So... in your bsdinstal installerconf, you can: # Example A # ( do bsdinstall stuff ) then... bsdconfig packages # Example B # ( do bsdinstall stuff ) then... sysrc sshd_enable="YES" # Example C # ( do bsdinstall stuff ) then... . /usr/share/bsdconfig/script.subr || exit 1 for package in a-1.0 b-2.0 c-3.0; do packageAdd done Here's a full list of items that bsdconfig(8) supports which are documented in sysinstall(8) (to which all you need to do to access is to include "/usr/share/bsdconfig/script.subr"): loadConfig deviceRescan mediaOpen mediaClose mediaGetType mediaSetCDROM mediaSetDOS mediaSetDirectory mediaSetFloppy mediaSetNFS mediaSetUFS mediaSetUSB optionsEditor tcpMenuSelect mediaSetFTP mediaSetFTPActive mediaSetFTPPassive mediaSetFTPUserPass mediaSetHTTP mediaSetHTTPProxy configPCNFSD configPackages packageAdd packageDelete packageReinstall installVarDefaults dumpVariables But that's only the tip of the iceberg. To get a full idea of what you can do with shell-script ALONE, you have to see the bsdconfig includes, which are in /usr/share/bsdconfig (link to what's released into 9.2 below): http://svnweb.freebsd.org/base/stable/9/usr.sbin/bsdconfig/share/ For example, there is: common.subr -- stuff everybody should use (makes your code cleaner and gives you basic abilities missing in shell, like f_getvar -- partner to setvar) device.subr -- scan for known devices and create structures with device info and type. Also provide routines for quickly scanning the array of structures for pre-probed devices of a specific type. Also contains code for presenting a menu of devices (of given type) to the user to select, returning the user's selection for processing. dialog.subr -- a *monster* of a library (uber documented to boot). Allows clean abstraction of dialog to where either dialog(1) or Xdialog(1) is a simple proposition to interface to. mustberoot.subr -- if your shell script needs to be able to run as non-root but escalate to root as-needed, this provides a clean way to transition to where your users seemlessly elevate. script.subr -- a dummy include that includes all the other includes. strings.subr -- handy string manipulation routines (tuned both for convenience and performance). struct.subr -- hold information in structs (using shell!) sysrc.subr -- manage rc.conf(5)! variable.subr -- variable definitions (boring; unless you code on bsdconfig -- hey, think about writing a module sometime! I encourage it, it's fun!) Beyond that... ( ok that's enough for this e-mail ). -- Devin _____________ The information contained in this message is proprietary and/or confidential. If you are not the intended recipient, please: (i) delete the message and all copies; (ii) do not disclose, distribute or use the message in any manner; and (iii) notify the sender immediately. In addition, please be aware that any message addressed to our domain is subject to archiving and review by persons other than the intended recipient. Thank you. _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"