beta release for 0.01
This commit is contained in:
		
							parent
							
								
									126b96e169
								
							
						
					
					
						commit
						83ee6d51ef
					
				| @ -14,7 +14,7 @@ v1.0, 2017-05-05 | |||||||
| [preface] | [preface] | ||||||
| == Preface | == Preface | ||||||
| === About the Author | === About the Author | ||||||
| I am a GNU/Linux Systems/Network Administrator/Engineer- I wear a lot of hats. I have a lot of side projects to keep me busy when I’m not working at _${dayjob}_, mostly to assist in other side projects and become more efficient and proficient at those tasks. “Shaving the yak,” footnote:[See http://catb.org/jargon/html/Y/yak-shaving.html] indeed. | I am a GNU/Linux Systems/Network Administrator/Engineer -- I wear a lot of hats. I have a lot of side projects to keep me busy when I’m not working at _${dayjob}_, mostly to assist in other side projects and become more efficient and proficient at those tasks. “Shaving the yak,” footnote:[See http://catb.org/jargon/html/Y/yak-shaving.html] indeed. | ||||||
| 
 | 
 | ||||||
| I got frustrated at the lack of options for installing Arch from a network or automated deployment environment and decided I needed a tool to do that for me. | I got frustrated at the lack of options for installing Arch from a network or automated deployment environment and decided I needed a tool to do that for me. | ||||||
| 
 | 
 | ||||||
| @ -116,7 +116,7 @@ Configure your bootloader to add the following options as necessary: | |||||||
| [options="header"] | [options="header"] | ||||||
| |====================== | |====================== | ||||||
| ^|Parameter ^|Purpose | ^|Parameter ^|Purpose | ||||||
| ^m|aif |This enables AIF-NG; without this, a run will never be initiated - note that `aif` and `aif=True` are the same, and it can be explicitly disabled by setting `aif=False` | ^m|aif |This enables AIF-NG; without this, a run will never be initiated -- note that `aif` and `aif=True` are the same, and it can be explicitly disabled by setting `aif=False` | ||||||
| ^m|aif_url |The URI to your <<writing_an_xml_configuration_file, XML configuration file>> (see <<aif_url, below>>) | ^m|aif_url |The URI to your <<writing_an_xml_configuration_file, XML configuration file>> (see <<aif_url, below>>) | ||||||
| ^m|aif_auth |(see <<aif_url, below>>) | ^m|aif_auth |(see <<aif_url, below>>) | ||||||
| ^m|aif_username |(see <<aif_url, below>>) | ^m|aif_username |(see <<aif_url, below>>) | ||||||
| @ -138,7 +138,7 @@ Configure your bootloader to add the following options as necessary: | |||||||
| * If `aif_auth` is `digest`, this is the realm we would use (we attempt to "guess" if it isn’t specified); otherwise it is ignored. | * If `aif_auth` is `digest`, this is the realm we would use (we attempt to "guess" if it isn’t specified); otherwise it is ignored. | ||||||
| 
 | 
 | ||||||
| == Debugging | == Debugging | ||||||
| Sometimes it's useful to get a little more information, or to start an installation from within an already-booted environment and you didn't remember (or weren't able to) change the kernel parameters. If this is the case, simply export the `DEBUG` environment variable (it can be set to anything, it doesn't matter) - if this is done, the arguments will be read from /tmp/cmdline instead. e.g.: | Sometimes it's useful to get a little more information, or to start an installation from within an already-booted environment and you didn't remember (or weren't able to) change the kernel parameters. If this is the case, simply export the `DEBUG` environment variable (it can be set to anything, it doesn't matter) -- if this is done, the arguments will be read from /tmp/cmdline instead. e.g.: | ||||||
| 
 | 
 | ||||||
|  rm -f * |  rm -f * | ||||||
|  export DEBUG=true |  export DEBUG=true | ||||||
| @ -149,7 +149,7 @@ Sometimes it's useful to get a little more information, or to start an installat | |||||||
| It will also write the full configuration (*after* parsing) to `/root/log`. | It will also write the full configuration (*after* parsing) to `/root/log`. | ||||||
| 
 | 
 | ||||||
| = Writing an XML Configuration File | = Writing an XML Configuration File | ||||||
| I've included a sample `aif.xml` file with the project which is fully functional. However, it's not ideal- namely because it will add my personal SSH pubkeys to your new install, and you probably don't want that. However, it's fairly complete so it should serve as a good example. If you want to see the full set of supported configuration elements, take a look at the most up-to-date https://aif.square-r00t.net/aif.xsd[aif.xsd^]. For explanation's sake, however, we'll go through it here. The directives are referred to in https://www.w3schools.com/xml/xml_xpath.asp[XPath^] syntax within the documentation text for easier context (but not the titles). | I've included a sample `aif.xml` file with the project which is fully functional. However, it's not ideal -- namely because it will add my personal SSH pubkeys to your new install, and you probably don't want that. However, it's fairly complete so it should serve as a good example. If you want to see the full set of supported configuration elements, take a look at the most up-to-date https://aif.square-r00t.net/aif.xsd[aif.xsd^]. For explanation's sake, however, we'll go through it here. The directives are referred to in https://www.w3schools.com/xml/xml_xpath.asp[XPath^] syntax within the documentation text for easier context (but not the titles). | ||||||
| 
 | 
 | ||||||
| == `<aif>` | == `<aif>` | ||||||
| The `/aif` element is the https://en.wikipedia.org/wiki/Root_element[root element^]. It serves as a container for all the configuration data. The only http://www.xmlfiles.com/xml/xml_attributes.asp[attributes^] it contains are for formatting and verification of the containing XML. | The `/aif` element is the https://en.wikipedia.org/wiki/Root_element[root element^]. It serves as a container for all the configuration data. The only http://www.xmlfiles.com/xml/xml_attributes.asp[attributes^] it contains are for formatting and verification of the containing XML. | ||||||
| @ -184,7 +184,7 @@ The `start` and `size` attributes can be in the form of: | |||||||
| 
 | 
 | ||||||
| * A percentage, indicated by a percentage sign (`"10%"`) | * A percentage, indicated by a percentage sign (`"10%"`) | ||||||
| * A size, indicated by the abbreviation (`"300K"`, `"30G"`, etc.) | * A size, indicated by the abbreviation (`"300K"`, `"30G"`, etc.) | ||||||
| ** Accepts *K* (Kilobytes), *M* (Megabytes), *G* (Gigabytes), *T* (Terabytes), or *P* (Petabytes - I know, I know.) | ** Accepts *K* (Kilobytes), *M* (Megabytes), *G* (Gigabytes), *T* (Terabytes), or *P* (Petabytes -- I know, I know.) | ||||||
| ** Can also accept modifiers for this form (`"+500G"`, `"-400M"`) | ** Can also accept modifiers for this form (`"+500G"`, `"-400M"`) | ||||||
| 
 | 
 | ||||||
| [[fstypes]] | [[fstypes]] | ||||||
| @ -361,7 +361,7 @@ The `/aif/system/users` element is used to specify users you wish to create (if | |||||||
| |====================== | |====================== | ||||||
| 
 | 
 | ||||||
| [[passwordhashes]] | [[passwordhashes]] | ||||||
| NOTE: To generate a proper hashed/salted password, you may want to reference https://bdisk.square-r00t.net/#generating_a_password_salt_hash[this section^] from https://bdisk.square-r00t.net/[BDisk^]'s user manual (another project of mine). You can use https://git.square-r00t.net/BDisk/tree/extra/bin/hashgen.py[this python script^] to generate one. If you specify an empty string, the password will be BLANK (i.e. you can log in with just the username). This is very insecure. If you specify a `!` instead of a salted hash, TTY login will be disabled (though it will still be possible to log in via other means such as SSH pubkey auth - assuming you configure it beforehand. This has some *added* security benefits). | NOTE: To generate a proper hashed/salted password, you may want to reference https://bdisk.square-r00t.net/#generating_a_password_salt_hash[this section^] from https://bdisk.square-r00t.net/[BDisk^]'s user manual (another project of mine). You can use https://git.square-r00t.net/BDisk/tree/extra/bin/hashgen.py[this python script^] to generate one. If you specify an empty string, the password will be BLANK (i.e. you can log in with just the username). This is very insecure. If you specify a `!` instead of a salted hash, TTY login will be disabled (though it will still be possible to log in via other means such as SSH pubkey auth -- assuming you configure it beforehand. This has some *added* security benefits). | ||||||
| 
 | 
 | ||||||
| ===== `<user>` | ===== `<user>` | ||||||
| The `/aif/system/users/user` element specifies user(s) to create. It contains <<code_xgroup_code, xgroup>> and <<code_home_code, home>> elements. | The `/aif/system/users/user` element specifies user(s) to create. It contains <<code_xgroup_code, xgroup>> and <<code_home_code, home>> elements. | ||||||
| @ -498,4 +498,36 @@ There are several script types availabe for `execution`. Currently, these are: | |||||||
| * pkg | * pkg | ||||||
| * post | * post | ||||||
| 
 | 
 | ||||||
| *pre* scripts are run (in numerical `order`) before the disks are even formatted. *pkg* scripts are run (in numerical `order`) right before the <<code_package_code, packages>> are installed (this allows you to configure an <<command, alternate packager>> such as https://aur.archlinux.org/packages/apacman/[apacman^]) - these are run *inside* the chroot of the new install. *pre* scripts are run inside the chroot like *pkg*, but are executed very last thing, just before the reboot. | *pre* scripts are run (in numerical `order`) before the disks are even formatted. *pkg* scripts are run (in numerical `order`) right before the <<code_package_code, packages>> are installed (this allows you to configure an <<command, alternate packager>> such as https://aur.archlinux.org/packages/apacman/[apacman^]) -- these are run *inside* the chroot of the new install. *pre* scripts are run inside the chroot like *pkg*, but are executed very last thing, just before the reboot. | ||||||
|  | 
 | ||||||
|  | = Further Information | ||||||
|  | Here you will find further info, other resources, and such relating to AIF-NG. | ||||||
|  | 
 | ||||||
|  | == Bug Reports/Feature Requests | ||||||
|  | NOTE: It is possible to submit a bug or feature request without registering in my bugtracker. One of my pet peeves is needing to create an account/register on a bugtracker simply to report a bug! The following links only require an email address to file a bug (which is necessary in case I need any further clarification from you or to keep you updated on the status of the bug/feature request -- so please be sure to use a valid email address). | ||||||
|  | 
 | ||||||
|  | === Bugs | ||||||
|  | If you encounter any bugs in *AIF-NG*, you can file a bug report https://bugs.square-r00t.net/index.php?do=newtask&project=9&task_type=1[here^]. | ||||||
|  | 
 | ||||||
|  | If you encounter any bugs (inaccurate information, typos, misformatting, etc.) in *this documentation*, you can file a bug report https://bugs.square-r00t.net/index.php?do=newtask&project=10&task_type=1[here^]. | ||||||
|  | 
 | ||||||
|  | === Feature Requests | ||||||
|  | If you have any features you'd like to see or you think would help *AIF-NG* become even more useful, please file a feature request https://bugs.square-r00t.net/index.php?do=newtask&project=9&task_type=2[here^]. | ||||||
|  | 
 | ||||||
|  | If you have any suggestions on how to improve *this documentation* or feel it's missing information that could be useful, please file a feature request https://bugs.square-r00t.net/index.php?do=newtask&project=10&task_type=2[here^]. | ||||||
|  | 
 | ||||||
|  | === Patches | ||||||
|  | I gladly welcome https://www.gnu.org/software/diffutils/manual/html_node/Unified-Format.html[patches^], but I deplore using GitHub (even though I https://github.com/johnnybubonic/aif-ng[have a mirror there^]). For this reason, please follow the same https://www.kernel.org/doc/Documentation/SubmittingPatches[patch/pull request process] for the Linux kernel and email it to bts@square-r00t.net. | ||||||
|  | 
 | ||||||
|  | Alternatively, you may attach a patch to a <<bugs,bug report>>/<<feature_requests,feature request>>. | ||||||
|  | 
 | ||||||
|  | == Contact the Author | ||||||
|  | If you have any questions, comments, or concerns, you can use the following information to get in touch with me. | ||||||
|  | 
 | ||||||
|  | I am available via mailto:bts@square-r00t.net[email]. If you use GPG, you can find my pubkey and other related info https://devblog.square-r00t.net/about/my-gpg-public-key-verification-of-identity[here^] (and on most keyservers). | ||||||
|  | 
 | ||||||
|  | I occasionally write howto articles, brief tips, and other information in my https://devblog.square-r00t.net[dev blog]. | ||||||
|  | 
 | ||||||
|  | I am on IRC as *r00t^2*, and am usually in the irc://irc.freenode.org/#sysadministrivia[Sysadministrivia channel on Freenode]. Which reminds me, I run a podcast called https://sysadministrivia.com[Sysadministrivia^]. | ||||||
|  | 
 | ||||||
|  | I am on Twitter as https://twitter.com/brentsaner[@brentsaner^], though I don't tweet very often. (I usually tweet from my https://twitter.com/SysAdm_Podcast[podcast's twitter^].) | ||||||
|  | |||||||
							
								
								
									
										10
									
								
								extras/mkinitcpio.hook
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								extras/mkinitcpio.hook
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | run_hook () { | ||||||
|  | 	msg ":: Starting AIF-NG..." | ||||||
|  | 	/usr/bin/aifclient & | ||||||
|  | 	#nohup /usr/bin/aifclient & | ||||||
|  | 	#disown -h %1 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | run_cleanuphook () { | ||||||
|  | 	pkill -9 python | ||||||
|  | } | ||||||
							
								
								
									
										17
									
								
								extras/mkinitcpio.install
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								extras/mkinitcpio.install
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | |||||||
|  | buid() { | ||||||
|  | 	add_binary "/usr/bin/python" | ||||||
|  | 	add_binary "/usr/bin/aifclient" | ||||||
|  | 
 | ||||||
|  | 	add_runscript | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | help()  | ||||||
|  | { | ||||||
|  |         cat <<HELPEOF | ||||||
|  | Starts aifclient from an initramfs. Requires (and should be after): | ||||||
|  | -any networking hooks (unless you embed an XML config inside the initrramfs as well) | ||||||
|  | -aif (or aif-git) be installed OR the aifclient(.py) file located at /usr/bin/aifclient | ||||||
|  | -python (3) be installed | ||||||
|  | A word of warning, this will create a pretty huge initramfs since python is rather large. | ||||||
|  | HELPEOF | ||||||
|  | } | ||||||
							
								
								
									
										10
									
								
								extras/systemd.unit
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								extras/systemd.unit
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | [Unit] | ||||||
|  | Description=AIF-NG Client Service | ||||||
|  | After=network.target | ||||||
|  | 
 | ||||||
|  | [Service] | ||||||
|  | Type=oneshot | ||||||
|  | ExecStart=/usr/bin/aifclient | ||||||
|  | 
 | ||||||
|  | [Install] | ||||||
|  | WantedBy=multi-user.target | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 brent s
						brent s