<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.guungle.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pyromania</id>
	<title>Guungle - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.guungle.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pyromania"/>
	<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Special:Contributions/Pyromania"/>
	<updated>2026-11-07T20:45:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=88</id>
		<title>Linux/Xen/DomU/Devuan/Devuan Beowulf</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=88"/>
		<updated>2020-12-11T23:52:39Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Devuan Beowulf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan Beowulf===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_beowulf.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_beowulf.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_beowulf.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process. The version of &#039;su&#039; that ships with beowulf no longer runs /etc/profile by default. So either run &#039;su -&#039; to initiate a login shell that will source /etc/profile or add /usr/sbin to your path. &#039;export PATH=$PATH:/usr/sbin&#039; debootstrap will not run correctly without /usr/sbin in your path. You will get the error message &amp;quot;E: Unable to execute target architecture&amp;quot; when trying to run debootstrap. &lt;br /&gt;
 &lt;br /&gt;
 debootstrap --arch=i386 --variant=minbase beowulf /mnt/img http://deb.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-updates main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 /usr/sbin/chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
The en_US.UTF-8 locale has changed the time format so it no longer displays in 24 hour time. &lt;br /&gt;
 &lt;br /&gt;
 locale date_fmt&lt;br /&gt;
 %a %d %b %Y %r %Z&lt;br /&gt;
&lt;br /&gt;
This can be fixed by using the basic &#039;C&#039; locale for time.&lt;br /&gt;
&lt;br /&gt;
 update-locale LC_TIME=C.UTF-8&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping isc-dhcp-client&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-686&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
&lt;br /&gt;
Beowulf defaults to mouse=a (Set via &#039;/usr/share/vim/vim81/defaults.vim&#039;) which is great if you are using VIM in a graphical interface but breaks pasting when using a console/SSH. To fix this edit &#039;/etc/vim/vimrc&#039;&lt;br /&gt;
&lt;br /&gt;
 Uncomment &#039;let g:skip_defaults_vim = 1&#039;&lt;br /&gt;
 Uncomment &#039;syntax on&#039;&lt;br /&gt;
 Add &#039;set mouse=r&#039;&lt;br /&gt;
&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xl console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan Beowulf&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.19.0-13-686-pae root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.19.0-13-686-pae&lt;br /&gt;
&lt;br /&gt;
title           Devuan Beowulf (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.19.0-13-686-pae root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.19.0-13-686-pae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 19:05:39.647919366 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,11 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Remove the old leases file so that the VM will request a fresh IP address each time.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /var/lib/dhcp/dhclient.eth0.leases&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=87</id>
		<title>Linux/Xen/DomU/Devuan/Devuan Beowulf</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=87"/>
		<updated>2020-12-11T22:53:29Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Devuan Beowulf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan Beowulf===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_beowulf.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_beowulf.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_beowulf.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process. The version of &#039;su&#039; that ships with beowulf no longer runs /etc/profile by default. So either run &#039;su -&#039; to initiate a login shell that will source /etc/profile or add /usr/sbin to your path. &#039;export PATH=$PATH:/usr/sbin&#039; debootstrap will not run correctly without /usr/sbin in your path. You will get the error message &amp;quot;E: Unable to execute target architecture&amp;quot; when trying to run debootstrap. &lt;br /&gt;
 &lt;br /&gt;
 debootstrap --arch=i386 --variant=minbase beowulf /mnt/img http://deb.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-updates main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 /usr/sbin/chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
The en_US.UTF-8 locale has changed the time format so it no longer displays in 24 hour time. &lt;br /&gt;
 &lt;br /&gt;
 locale date_fmt&lt;br /&gt;
 %a %d %b %Y %r %Z&lt;br /&gt;
&lt;br /&gt;
This can be fixed by using the basic &#039;C&#039; locale for time.&lt;br /&gt;
&lt;br /&gt;
 update-locale LC_TIME=C.UTF-8&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping isc-dhcp-client&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-686&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
&lt;br /&gt;
Beowulf defaults to mouse=a (Set via &#039;/usr/share/vim/vim81/defaults.vim&#039;) which is great if you are using VIM in a graphical interface but breaks pasting when using a console/SSH. To fix this edit &#039;/etc/vim/vimrc&#039;&lt;br /&gt;
&lt;br /&gt;
 Uncomment &#039;let g:skip_defaults_vim = 1&#039;&lt;br /&gt;
 Uncomment &#039;syntax on&#039;&lt;br /&gt;
 Add mouse=r&lt;br /&gt;
&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xl console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan Beowulf&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.19.0-13-686-pae root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.19.0-13-686-pae&lt;br /&gt;
&lt;br /&gt;
title           Devuan Beowulf (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.19.0-13-686-pae root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.19.0-13-686-pae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 19:05:39.647919366 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,11 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Remove the old leases file so that the VM will request a fresh IP address each time.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /var/lib/dhcp/dhclient.eth0.leases&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=86</id>
		<title>Linux/Xen/DomU/Devuan/Devuan Beowulf</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=86"/>
		<updated>2020-12-11T22:25:31Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* GRUB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan Beowulf===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_beowulf.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_beowulf.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_beowulf.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process. The version of &#039;su&#039; that ships with beowulf no longer runs /etc/profile by default. So either run &#039;su -&#039; to initiate a login shell that will source /etc/profile or add /usr/sbin to your path. &#039;export PATH=$PATH:/usr/sbin&#039; debootstrap will not run correctly without /usr/sbin in your path. You will get the error message &amp;quot;E: Unable to execute target architecture&amp;quot; when trying to run debootstrap. &lt;br /&gt;
 &lt;br /&gt;
 debootstrap --arch=i386 --variant=minbase beowulf /mnt/img http://deb.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-updates main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 /usr/sbin/chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
The en_US.UTF-8 locale has changed the time format so it no longer displays in 24 hour time. &lt;br /&gt;
 &lt;br /&gt;
 locale date_fmt&lt;br /&gt;
 %a %d %b %Y %r %Z&lt;br /&gt;
&lt;br /&gt;
This can be fixed by using the basic &#039;C&#039; locale for time.&lt;br /&gt;
&lt;br /&gt;
 update-locale LC_TIME=C.UTF-8&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-686&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
&lt;br /&gt;
Beowulf defaults to mouse=a (Set via &#039;/usr/share/vim/vim81/defaults.vim&#039;) which is great if you are using VIM in a graphical interface but breaks pasting when using a console/SSH. To fix this edit &#039;/etc/vim/vimrc&#039;&lt;br /&gt;
&lt;br /&gt;
 Uncomment &#039;let g:skip_defaults_vim = 1&#039;&lt;br /&gt;
 Uncomment &#039;syntax on&#039;&lt;br /&gt;
 Add mouse=r&lt;br /&gt;
&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xl console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan Beowulf&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.19.0-13-686-pae root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.19.0-13-686-pae&lt;br /&gt;
&lt;br /&gt;
title           Devuan Beowulf (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.19.0-13-686-pae root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.19.0-13-686-pae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 19:05:39.647919366 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,11 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Remove the old leases file so that the VM will request a fresh IP address each time.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /var/lib/dhcp/dhclient.eth0.leases&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=85</id>
		<title>Linux/Xen/DomU/Devuan/Devuan Beowulf</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=85"/>
		<updated>2020-12-11T22:21:22Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Devuan Beowulf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan Beowulf===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_beowulf.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_beowulf.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_beowulf.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process. The version of &#039;su&#039; that ships with beowulf no longer runs /etc/profile by default. So either run &#039;su -&#039; to initiate a login shell that will source /etc/profile or add /usr/sbin to your path. &#039;export PATH=$PATH:/usr/sbin&#039; debootstrap will not run correctly without /usr/sbin in your path. You will get the error message &amp;quot;E: Unable to execute target architecture&amp;quot; when trying to run debootstrap. &lt;br /&gt;
 &lt;br /&gt;
 debootstrap --arch=i386 --variant=minbase beowulf /mnt/img http://deb.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-updates main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 /usr/sbin/chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
The en_US.UTF-8 locale has changed the time format so it no longer displays in 24 hour time. &lt;br /&gt;
 &lt;br /&gt;
 locale date_fmt&lt;br /&gt;
 %a %d %b %Y %r %Z&lt;br /&gt;
&lt;br /&gt;
This can be fixed by using the basic &#039;C&#039; locale for time.&lt;br /&gt;
&lt;br /&gt;
 update-locale LC_TIME=C.UTF-8&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-686&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
&lt;br /&gt;
Beowulf defaults to mouse=a (Set via &#039;/usr/share/vim/vim81/defaults.vim&#039;) which is great if you are using VIM in a graphical interface but breaks pasting when using a console/SSH. To fix this edit &#039;/etc/vim/vimrc&#039;&lt;br /&gt;
&lt;br /&gt;
 Uncomment &#039;let g:skip_defaults_vim = 1&#039;&lt;br /&gt;
 Uncomment &#039;syntax on&#039;&lt;br /&gt;
 Add mouse=r&lt;br /&gt;
&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xl console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan Beowulf&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.19.0-12-686 root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.19.0-12-686&lt;br /&gt;
&lt;br /&gt;
title           Devuan Beowulf (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.19.0-12-686 root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.19.0-12-686&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 19:05:39.647919366 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,11 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Remove the old leases file so that the VM will request a fresh IP address each time.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /var/lib/dhcp/dhclient.eth0.leases&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=84</id>
		<title>Linux/Xen/DomU/Devuan/Devuan Beowulf</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=84"/>
		<updated>2020-12-11T22:20:25Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Devuan Beowulf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan Beowulf===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_beowulf.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_beowulf.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_beowulf.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process. The version of &#039;su&#039; that ships with beowulf no longer runs /etc/profile by default. So either run &#039;su -&#039; to initiate a login shell that will source /etc/profile or add /usr/sbin to your path. &#039;export PATH=$PATH:/usr/sbin&#039; debootstrap will not run correctly without /usr/sbin in your path. You will get the error message &amp;quot;E: Unable to execute target architecture&amp;quot; when trying to run debootstrap. &lt;br /&gt;
 &lt;br /&gt;
 debootstrap --arch=i386 --variant=minbase beowulf /mnt/img http://deb.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-updates main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 /usr/sbin/chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
The en_US.UTF-8 locale has changed the time format so it no longer displays in 24 hour time. &lt;br /&gt;
 &lt;br /&gt;
 locale date_fmt&lt;br /&gt;
 %a %d %b %Y %r %Z&lt;br /&gt;
&lt;br /&gt;
This can be fixed by using the basic &#039;C&#039; locale for time.&lt;br /&gt;
&lt;br /&gt;
 update-locale LC_TIME=C.UTF-8&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-686&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
&lt;br /&gt;
Beowulf defaults to mouse=a (Set via &#039;/usr/share/vim/vim81/defaults.vim&#039;) which is great if you are using VIM in a graphical interface but breaks pasting when using a console/SSH. To fix this edit &#039;/etc/vim/vimrc&#039;&lt;br /&gt;
&lt;br /&gt;
Uncomment &#039;let g:skip_defaults_vim = 1&#039;&lt;br /&gt;
Uncomment &#039;syntax on&#039;&lt;br /&gt;
Add mouse=r&lt;br /&gt;
&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xl console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan Beowulf&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.19.0-12-686 root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.19.0-12-686&lt;br /&gt;
&lt;br /&gt;
title           Devuan Beowulf (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.19.0-12-686 root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.19.0-12-686&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 19:05:39.647919366 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,11 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Remove the old leases file so that the VM will request a fresh IP address each time.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /var/lib/dhcp/dhclient.eth0.leases&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=83</id>
		<title>Linux/Xen/DomU/Devuan/Devuan Beowulf</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=83"/>
		<updated>2020-12-11T21:22:29Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan Beowulf===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_beowulf.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_beowulf.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_beowulf.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process. The version of &#039;su&#039; that ships with beowulf no longer runs /etc/profile by default. So either run &#039;su -&#039; to initiate a login shell that will source /etc/profile or add /usr/sbin to your path. &#039;export PATH=$PATH:/usr/sbin&#039; debootstrap will not run correctly without /usr/sbin in your path. You will get the error message &amp;quot;E: Unable to execute target architecture&amp;quot; when trying to run debootstrap. &lt;br /&gt;
 &lt;br /&gt;
 debootstrap --arch=i386 --variant=minbase beowulf /mnt/img http://deb.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-updates main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 /usr/sbin/chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-686&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xl console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan Beowulf&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.19.0-12-686 root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.19.0-12-686&lt;br /&gt;
&lt;br /&gt;
title           Devuan Beowulf (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.19.0-12-686 root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.19.0-12-686&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 19:05:39.647919366 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,11 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Remove the old leases file so that the VM will request a fresh IP address each time.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /var/lib/dhcp/dhclient.eth0.leases&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=82</id>
		<title>Linux/Xen/DomU/Devuan/Devuan Beowulf</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=82"/>
		<updated>2020-12-11T21:16:23Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan Beowulf===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_beowulf.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_beowulf.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_beowulf.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process. The version of &#039;su&#039; that ships with beowulf no longer runs /etc/profile by default. So either run &#039;su -&#039; to initiate a login shell that will source /etc/profile or add /usr/sbin to your path. &#039;export PATH=$PATH:/usr/sbin&#039; debootstrap will not run correctly without /usr/sbin in your path. You will get the error message &amp;quot;E: Unable to execute target architecture&amp;quot; when trying to run debootstrap. &lt;br /&gt;
 &lt;br /&gt;
 debootstrap --arch=i386 --variant=minbase beowulf /mnt/img http://deb.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-updates main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 /usr/sbin/chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-686&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xl console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan Beowulf&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.19.0-12-686 root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.19.0-12-686&lt;br /&gt;
&lt;br /&gt;
title           Devuan Beowulf (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.19.0-12-686 root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.19.0-12-686&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 19:05:39.647919366 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,11 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Remove the old leases file so that the VM will request a fresh IP address each time.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /var/lib/dhcp/dhclient.eth0.leases&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=81</id>
		<title>Linux/Xen/DomU/Devuan/Devuan Beowulf</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=81"/>
		<updated>2020-12-11T20:54:54Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Devuan Beowulf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan Beowulf===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_beowulf.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_beowulf.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_beowulf.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process. The PATH variable on beowulf has removed /usr/sbin so we need to add it back for debootstrap to run correctly. &lt;br /&gt;
 &lt;br /&gt;
 export PATH=$PATH:/usr/sbin&lt;br /&gt;
 &lt;br /&gt;
 debootstrap --arch=i386 --variant=minbase beowulf /mnt/img http://deb.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-updates main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 /usr/sbin/chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-686&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xl console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan Beowulf&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.19.0-12-686 root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.19.0-12-686&lt;br /&gt;
&lt;br /&gt;
title           Devuan Beowulf (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.19.0-12-686 root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.19.0-12-686&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 19:05:39.647919366 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,11 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Remove the old leases file so that the VM will request a fresh IP address each time.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /var/lib/dhcp/dhclient.eth0.leases&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=80</id>
		<title>Linux/Xen/DomU/Devuan/Devuan Beowulf</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=80"/>
		<updated>2020-11-14T22:01:50Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* GRUB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan Beowulf===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_beowulf.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_beowulf.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_beowulf.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --arch=i386 --variant=minbase beowulf /mnt/img http://deb.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-updates main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 /usr/sbin/chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-686&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xl console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan Beowulf&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.19.0-12-686 root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.19.0-12-686&lt;br /&gt;
&lt;br /&gt;
title           Devuan Beowulf (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.19.0-12-686 root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.19.0-12-686&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 19:05:39.647919366 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,11 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Remove the old leases file so that the VM will request a fresh IP address each time.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /var/lib/dhcp/dhclient.eth0.leases&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=79</id>
		<title>Linux/Xen/DomU/Devuan/Devuan Beowulf</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=79"/>
		<updated>2020-11-14T21:28:42Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan Beowulf===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_beowulf.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_beowulf.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_beowulf.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --arch=i386 --variant=minbase beowulf /mnt/img http://deb.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-updates main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 /usr/sbin/chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-686&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xl console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 19:05:39.647919366 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,11 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Remove the old leases file so that the VM will request a fresh IP address each time.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /var/lib/dhcp/dhclient.eth0.leases&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=78</id>
		<title>Linux/Xen/DomU/Devuan/Devuan Beowulf</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=78"/>
		<updated>2020-11-14T21:21:55Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan Beowulf===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_beowulf.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_beowulf.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_beowulf.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --arch=i386 --variant=minbase beowulf /mnt/img http://deb.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-updates main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 /usr/sbin/chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-`dpkg --print-architecture`&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 19:05:39.647919366 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,11 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Remove the old leases file so that the VM will request a fresh IP address each time.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /var/lib/dhcp/dhclient.eth0.leases&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=77</id>
		<title>Linux/Xen/DomU/Devuan/Devuan Beowulf</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=77"/>
		<updated>2020-11-14T20:43:45Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan Beowulf===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_beowulf.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_beowulf.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_beowulf.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --arch=i386 --variant=minbase beowulf /mnt/img http://deb.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-updates main&lt;br /&gt;
 deb http://deb.devuan.org/merged beowulf-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-`dpkg --print-architecture`&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 19:05:39.647919366 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,11 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Remove the old leases file so that the VM will request a fresh IP address each time.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /var/lib/dhcp/dhclient.eth0.leases&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=76</id>
		<title>Linux/Xen/DomU/Devuan/Devuan Beowulf</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=76"/>
		<updated>2020-11-14T20:36:54Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan Beowulf===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_beowulf.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_beowulf.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_beowulf.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --arch=i386 --variant=minbase beowulf /mnt/img http://deb.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged beowulf main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged beowulf-updates main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged beowulf-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-`dpkg --print-architecture`&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 19:05:39.647919366 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,11 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Remove the old leases file so that the VM will request a fresh IP address each time.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /var/lib/dhcp/dhclient.eth0.leases&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=75</id>
		<title>Linux/Xen/DomU/Devuan/Devuan Beowulf</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Beowulf&amp;diff=75"/>
		<updated>2020-07-04T20:18:07Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: Created page with &amp;quot;===Devuan Beowulf===  Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.  Create a empty image file and...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan Beowulf===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_beowulf.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_beowulf.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_beowulf.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase beowulf /mnt/img http://auto.mirror.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged beowulf main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged beowulf-updates main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged beowulf-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-`dpkg --print-architecture`&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 19:05:39.647919366 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,11 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Remove the old leases file so that the VM will request a fresh IP address each time.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /var/lib/dhcp/dhclient.eth0.leases&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/Building_Xen_DomU_images&amp;diff=74</id>
		<title>Linux/Xen/Building Xen DomU images</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/Building_Xen_DomU_images&amp;diff=74"/>
		<updated>2020-07-04T20:15:14Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Devuan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==CentOS==&lt;br /&gt;
&lt;br /&gt;
===[[Linux/Xen/DomU/CentOS/CentOS 7|CentOS 7]]===&lt;br /&gt;
&lt;br /&gt;
==Debian==&lt;br /&gt;
&lt;br /&gt;
==Devuan==&lt;br /&gt;
&lt;br /&gt;
===[[Linux/Xen/DomU/Devuan/Devuan Jessie|Devuan Jessie]]===&lt;br /&gt;
===[[Linux/Xen/DomU/Devuan/Devuan ASCII|Devuan ASCII]]===&lt;br /&gt;
===[[Linux/Xen/DomU/Devuan/Devuan Beowulf|Devuan Beowulf]]===&lt;br /&gt;
&lt;br /&gt;
==Ubuntu==&lt;br /&gt;
&lt;br /&gt;
===[[Linux/Xen/DomU/Ubuntu/Ubuntu 13.10|Ubuntu 13.10]]===&lt;br /&gt;
&lt;br /&gt;
===[[Linux/Xen/DomU/Ubuntu/Ubuntu 14.04 LTS|Ubuntu 14.04 LTS]]===&lt;br /&gt;
&lt;br /&gt;
===[[Linux/Xen/DomU/Ubuntu/Ubuntu 18.04 LTS|Ubuntu 18.04 LTS]]===&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=73</id>
		<title>Linux/Xen/DomU/CentOS/CentOS 7</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=73"/>
		<updated>2019-02-16T19:50:07Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Final Cleanup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===CentOS 7===&lt;br /&gt;
&lt;br /&gt;
The CentOS 7 installer won&#039;t install to a disk smaller then 10-20GB but its still possible to copy the finished install into a smaller image for easier distribution and cloning.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with xfs. We are making the file 20GB so CentOS will install.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=centos_ks.img bs=1M count=1 seek=20000&lt;br /&gt;
 mkfs.xfs centos_ks.img&lt;br /&gt;
&lt;br /&gt;
The easiest way to install CentOS is using the kickstart system. You will need a webserver to host the kickstart config file. You will also need a kernel and ramdisk image from a CentOS mirror. &lt;br /&gt;
&lt;br /&gt;
Download the vmlinuz and initrd.img files from your favorite CentOS mirror.&lt;br /&gt;
&lt;br /&gt;
http://mirror.centos.org/centos/7/os/x86_64/images/pxeboot/&lt;br /&gt;
&lt;br /&gt;
You will be booting the CentOS kickstart image with these files. &lt;br /&gt;
&lt;br /&gt;
Here is the kickstart config that will need to be put on a webserver. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#version=1.0.0&lt;br /&gt;
&lt;br /&gt;
install&lt;br /&gt;
&lt;br /&gt;
# System authorization information&lt;br /&gt;
auth --enableshadow --passalgo=sha512&lt;br /&gt;
# Use network installation&lt;br /&gt;
url --url=&amp;quot;http://mirror.centos.org/centos/7/os/x86_64/&amp;quot;&lt;br /&gt;
# Use text mode install&lt;br /&gt;
text&lt;br /&gt;
# Run the Setup Agent on first boot&lt;br /&gt;
firstboot --enable&lt;br /&gt;
ignoredisk --only-use=xvda&lt;br /&gt;
# Keyboard layouts&lt;br /&gt;
keyboard --vckeymap=us --xlayouts=&#039;&#039;&lt;br /&gt;
# System language&lt;br /&gt;
lang en_US.UTF-8&lt;br /&gt;
&lt;br /&gt;
# Network information&lt;br /&gt;
network --hostname=centos7 --bootproto=dhcp --device=eth0 --onboot=on&lt;br /&gt;
&lt;br /&gt;
# Root password&lt;br /&gt;
rootpw --iscrypted $6$QgAmrd86o3M8qQIa$0LMJo9zwIe3j1e.hnc5G.6bXyhduRF03McofIDGSb7lrso6mbl9kt.WzxYOCXysC4Fb6Rdlu8OkXNAL22BLUW0&lt;br /&gt;
# System services&lt;br /&gt;
services --enabled=&amp;quot;network&amp;quot;&lt;br /&gt;
# Do not configure the X Window System&lt;br /&gt;
skipx&lt;br /&gt;
# System timezone&lt;br /&gt;
timezone Etc/UTC --isUtc&lt;br /&gt;
# System bootloader configuration&lt;br /&gt;
bootloader --timeout=5 --driveorder=xvda --append=&amp;quot;console=hvc0&amp;quot;&lt;br /&gt;
# Partition clearing information&lt;br /&gt;
zerombr&lt;br /&gt;
clearpart --all --initlabel --drives=xvda&lt;br /&gt;
part / --fstype=xfs --grow --size=1 --asprimary --ondisk=xvda&lt;br /&gt;
&lt;br /&gt;
# Shutdown when the kickstart is done&lt;br /&gt;
halt&lt;br /&gt;
&lt;br /&gt;
%packages&lt;br /&gt;
@core --nodefaults&lt;br /&gt;
-grub2&lt;br /&gt;
-chrony&lt;br /&gt;
-NetworkManager&lt;br /&gt;
-NetworkManager-team&lt;br /&gt;
-NetworkManager-tui&lt;br /&gt;
-NetworkManager-libnm&lt;br /&gt;
-wireless-tools&lt;br /&gt;
-plymouth&lt;br /&gt;
-fprintd-pam&lt;br /&gt;
-*-firmware&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%addon com_redhat_kdump --disable --reserve-mb=&#039;auto&#039;&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%anaconda&lt;br /&gt;
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok&lt;br /&gt;
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
%end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kickstart Xen Config====&lt;br /&gt;
&lt;br /&gt;
Once you have the kickstart config file on a webserver you need to create a new Xen config file that will be used to install the base image. &lt;br /&gt;
&lt;br /&gt;
The Xen config will look something like this. You will need to edit the &amp;quot;disk&amp;quot;, &amp;quot;kernel&amp;quot; and &amp;quot;ramdisk&amp;quot; paths to match where you are storing the files.&lt;br /&gt;
Also in the &amp;quot;extra&amp;quot; section, &amp;quot;inst.ks&amp;quot; will be the URL to the kickstart config file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
name=&amp;quot;centos7ks&amp;quot;&lt;br /&gt;
vcpus=2&lt;br /&gt;
memory=2048&lt;br /&gt;
disk=[&#039;file:/mnt/xen_images/centos/centos_ks.img,xvda,w&#039; ]&lt;br /&gt;
vif=[&#039;bridge=xenbr0&#039;]&lt;br /&gt;
on_reboot=&amp;quot;restart&amp;quot;&lt;br /&gt;
on_crash=&amp;quot;restart&amp;quot;&lt;br /&gt;
kernel=&amp;quot;/mnt/xen_images/centos/x86_64/vmlinuz&amp;quot;&lt;br /&gt;
ramdisk=&amp;quot;/mnt/xen_images/centos/x86_64/initrd.img&amp;quot;&lt;br /&gt;
extra=&amp;quot;inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=eth0:dhcp inst.ks=http://192.168.1.80/kickstart/centos_domu.cfg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are not using DHCP you can set a static IP in the &amp;quot;extra&amp;quot; section like this,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extra=&amp;quot;inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=192.168.1.20::192.168.1.1:255.255.255.0:centos7ks:eth0:none nameserver=192.168.1.1 inst.ks=http://192.168.1.80/kickstart/centos_domu.cfg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Boot the Xen config and access the console.&lt;br /&gt;
&lt;br /&gt;
 xl create centos7_ks.cfg -c&lt;br /&gt;
&lt;br /&gt;
The virtual machine should boot up and launch anaconda to begin the automated install process.&lt;br /&gt;
&lt;br /&gt;
You will get an error when it tries to install the bootloader. Since we don&#039;t use GRUB2 with Xen you can safely say &amp;quot;yes&amp;quot; to continue the installation.&lt;br /&gt;
&lt;br /&gt;
It will ask you to hit Return to finish and then the virtual machine will shutdown and halt.&lt;br /&gt;
&lt;br /&gt;
====Building the compact image====&lt;br /&gt;
&lt;br /&gt;
The installation has finished but the virtual machine file size had to be 20G for CentOS to install. The installation can be copied into a smaller image for easier cloning and distribution. &lt;br /&gt;
&lt;br /&gt;
Create a 1G image and format it with XFS&lt;br /&gt;
&lt;br /&gt;
  dd if=/dev/zero of=centos7.img bs=1M count=1 seek=1024&lt;br /&gt;
  mkfs.xfs centos7.img&lt;br /&gt;
&lt;br /&gt;
The finished installation image was partitioned during the install so we have to use kpartx to access the filesystem.&lt;br /&gt;
&lt;br /&gt;
 kpartx -av centos_ks.img&lt;br /&gt;
&lt;br /&gt;
This will create a loopback device ( /dev/mapper/loop0p1 ) that you can mount.&lt;br /&gt;
&lt;br /&gt;
 mount /dev/mapper/loop0p1 /mnt/img&lt;br /&gt;
&lt;br /&gt;
Mount the compact image&lt;br /&gt;
&lt;br /&gt;
 mount centos7.img /mnt/img2&lt;br /&gt;
&lt;br /&gt;
Use rsync to copy everything from the finished installation to the compact image.&lt;br /&gt;
&lt;br /&gt;
 rsync -avH /mnt/img/ /mnt/img2/&lt;br /&gt;
&lt;br /&gt;
CentOS defaults to using the UUID syntax for /etc/fstab. This won&#039;t work since we copied the OS to a new file system.&lt;br /&gt;
&lt;br /&gt;
vi /mnt/img2/etc/fstab&lt;br /&gt;
&lt;br /&gt;
Make fstab look like this,&lt;br /&gt;
&lt;br /&gt;
 /dev/sda1        /                       xfs     defaults        0 0&lt;br /&gt;
&lt;br /&gt;
You can remove the UUID section from /mnt/img2/etc/sysconfig/network-scripts/ifcfg-eth0 since we won&#039;t be using NetworkManager.&lt;br /&gt;
DHCP_HOSTNAME can also be removed.&lt;br /&gt;
 &lt;br /&gt;
When the OS was copied to the compact image, the SELinux contexts were not copied over. If you were to try and boot the compact image now, things would fail to start and you would not be able to login because SELinux would prevent you from running a shell. So we need to set SELinux to permissive for the first boot so we can fix the contexts.&lt;br /&gt;
&lt;br /&gt;
 vi /mnt/img2/etc/selinux/config&lt;br /&gt;
&lt;br /&gt;
Change &#039;SELINUX=&#039; to permissive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This file controls the state of SELinux on the system.&lt;br /&gt;
# SELINUX= can take one of these three values:&lt;br /&gt;
#     enforcing - SELinux security policy is enforced.&lt;br /&gt;
#     permissive - SELinux prints warnings instead of enforcing.&lt;br /&gt;
#     disabled - No SELinux policy is loaded.&lt;br /&gt;
SELINUX=permissive&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create a basic Xen config so we can boot the image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
name=&amp;quot;centos7base&amp;quot;&lt;br /&gt;
vcpus=2&lt;br /&gt;
memory=512&lt;br /&gt;
disk=[&#039;file:/mnt/xen_images/centos/centos7.img,xvda1,w&#039; ]&lt;br /&gt;
vif=[&#039;bridge=xenbr0&#039;]&lt;br /&gt;
on_reboot=&amp;quot;restart&amp;quot;&lt;br /&gt;
on_crash=&amp;quot;restart&amp;quot;&lt;br /&gt;
bootloader = &amp;quot;pygrub&amp;quot;&lt;br /&gt;
root = &amp;quot;/dev/xvda1 ro&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Boot the compact image and log in. Then run the command,&lt;br /&gt;
&lt;br /&gt;
 restorecon -R -v /&lt;br /&gt;
&lt;br /&gt;
This will reset all the SELinux contexts for the file system. When that finishes you can set SELinux back to enforcing.&lt;br /&gt;
&lt;br /&gt;
 vi /etc/selinux/config&lt;br /&gt;
&lt;br /&gt;
Change &#039;SELINUX=&#039; to enforcing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Remove the DHCP lease file for eth0&lt;br /&gt;
&lt;br /&gt;
 rm /var/lib/dhclient/dhclient--eth0.lease&lt;br /&gt;
&lt;br /&gt;
Remove the SSH host keys so you don&#039;t get duplicates when cloning the image.&lt;br /&gt;
&lt;br /&gt;
 rm /etc/ssh/ssh_host*&lt;br /&gt;
&lt;br /&gt;
Zero out log files to save space.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 echo &#039;&#039; &amp;gt; /var/log/dmesg&lt;br /&gt;
 echo &#039;&#039; &amp;gt; /var/log/maillog&lt;br /&gt;
 echo &#039;&#039; &amp;gt; /var/log/boot.log&lt;br /&gt;
 echo &#039;&#039; &amp;gt; /var/log/secure&lt;br /&gt;
 echo &#039;&#039; &amp;gt; /var/log/cron&lt;br /&gt;
 echo &#039;&#039; &amp;gt; /var/log/messages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Shutdown the virtual machine and you can start cloning this image.&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=72</id>
		<title>Linux/Xen/DomU/CentOS/CentOS 7</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=72"/>
		<updated>2019-02-16T19:47:34Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===CentOS 7===&lt;br /&gt;
&lt;br /&gt;
The CentOS 7 installer won&#039;t install to a disk smaller then 10-20GB but its still possible to copy the finished install into a smaller image for easier distribution and cloning.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with xfs. We are making the file 20GB so CentOS will install.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=centos_ks.img bs=1M count=1 seek=20000&lt;br /&gt;
 mkfs.xfs centos_ks.img&lt;br /&gt;
&lt;br /&gt;
The easiest way to install CentOS is using the kickstart system. You will need a webserver to host the kickstart config file. You will also need a kernel and ramdisk image from a CentOS mirror. &lt;br /&gt;
&lt;br /&gt;
Download the vmlinuz and initrd.img files from your favorite CentOS mirror.&lt;br /&gt;
&lt;br /&gt;
http://mirror.centos.org/centos/7/os/x86_64/images/pxeboot/&lt;br /&gt;
&lt;br /&gt;
You will be booting the CentOS kickstart image with these files. &lt;br /&gt;
&lt;br /&gt;
Here is the kickstart config that will need to be put on a webserver. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#version=1.0.0&lt;br /&gt;
&lt;br /&gt;
install&lt;br /&gt;
&lt;br /&gt;
# System authorization information&lt;br /&gt;
auth --enableshadow --passalgo=sha512&lt;br /&gt;
# Use network installation&lt;br /&gt;
url --url=&amp;quot;http://mirror.centos.org/centos/7/os/x86_64/&amp;quot;&lt;br /&gt;
# Use text mode install&lt;br /&gt;
text&lt;br /&gt;
# Run the Setup Agent on first boot&lt;br /&gt;
firstboot --enable&lt;br /&gt;
ignoredisk --only-use=xvda&lt;br /&gt;
# Keyboard layouts&lt;br /&gt;
keyboard --vckeymap=us --xlayouts=&#039;&#039;&lt;br /&gt;
# System language&lt;br /&gt;
lang en_US.UTF-8&lt;br /&gt;
&lt;br /&gt;
# Network information&lt;br /&gt;
network --hostname=centos7 --bootproto=dhcp --device=eth0 --onboot=on&lt;br /&gt;
&lt;br /&gt;
# Root password&lt;br /&gt;
rootpw --iscrypted $6$QgAmrd86o3M8qQIa$0LMJo9zwIe3j1e.hnc5G.6bXyhduRF03McofIDGSb7lrso6mbl9kt.WzxYOCXysC4Fb6Rdlu8OkXNAL22BLUW0&lt;br /&gt;
# System services&lt;br /&gt;
services --enabled=&amp;quot;network&amp;quot;&lt;br /&gt;
# Do not configure the X Window System&lt;br /&gt;
skipx&lt;br /&gt;
# System timezone&lt;br /&gt;
timezone Etc/UTC --isUtc&lt;br /&gt;
# System bootloader configuration&lt;br /&gt;
bootloader --timeout=5 --driveorder=xvda --append=&amp;quot;console=hvc0&amp;quot;&lt;br /&gt;
# Partition clearing information&lt;br /&gt;
zerombr&lt;br /&gt;
clearpart --all --initlabel --drives=xvda&lt;br /&gt;
part / --fstype=xfs --grow --size=1 --asprimary --ondisk=xvda&lt;br /&gt;
&lt;br /&gt;
# Shutdown when the kickstart is done&lt;br /&gt;
halt&lt;br /&gt;
&lt;br /&gt;
%packages&lt;br /&gt;
@core --nodefaults&lt;br /&gt;
-grub2&lt;br /&gt;
-chrony&lt;br /&gt;
-NetworkManager&lt;br /&gt;
-NetworkManager-team&lt;br /&gt;
-NetworkManager-tui&lt;br /&gt;
-NetworkManager-libnm&lt;br /&gt;
-wireless-tools&lt;br /&gt;
-plymouth&lt;br /&gt;
-fprintd-pam&lt;br /&gt;
-*-firmware&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%addon com_redhat_kdump --disable --reserve-mb=&#039;auto&#039;&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%anaconda&lt;br /&gt;
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok&lt;br /&gt;
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
%end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kickstart Xen Config====&lt;br /&gt;
&lt;br /&gt;
Once you have the kickstart config file on a webserver you need to create a new Xen config file that will be used to install the base image. &lt;br /&gt;
&lt;br /&gt;
The Xen config will look something like this. You will need to edit the &amp;quot;disk&amp;quot;, &amp;quot;kernel&amp;quot; and &amp;quot;ramdisk&amp;quot; paths to match where you are storing the files.&lt;br /&gt;
Also in the &amp;quot;extra&amp;quot; section, &amp;quot;inst.ks&amp;quot; will be the URL to the kickstart config file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
name=&amp;quot;centos7ks&amp;quot;&lt;br /&gt;
vcpus=2&lt;br /&gt;
memory=2048&lt;br /&gt;
disk=[&#039;file:/mnt/xen_images/centos/centos_ks.img,xvda,w&#039; ]&lt;br /&gt;
vif=[&#039;bridge=xenbr0&#039;]&lt;br /&gt;
on_reboot=&amp;quot;restart&amp;quot;&lt;br /&gt;
on_crash=&amp;quot;restart&amp;quot;&lt;br /&gt;
kernel=&amp;quot;/mnt/xen_images/centos/x86_64/vmlinuz&amp;quot;&lt;br /&gt;
ramdisk=&amp;quot;/mnt/xen_images/centos/x86_64/initrd.img&amp;quot;&lt;br /&gt;
extra=&amp;quot;inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=eth0:dhcp inst.ks=http://192.168.1.80/kickstart/centos_domu.cfg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are not using DHCP you can set a static IP in the &amp;quot;extra&amp;quot; section like this,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extra=&amp;quot;inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=192.168.1.20::192.168.1.1:255.255.255.0:centos7ks:eth0:none nameserver=192.168.1.1 inst.ks=http://192.168.1.80/kickstart/centos_domu.cfg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Boot the Xen config and access the console.&lt;br /&gt;
&lt;br /&gt;
 xl create centos7_ks.cfg -c&lt;br /&gt;
&lt;br /&gt;
The virtual machine should boot up and launch anaconda to begin the automated install process.&lt;br /&gt;
&lt;br /&gt;
You will get an error when it tries to install the bootloader. Since we don&#039;t use GRUB2 with Xen you can safely say &amp;quot;yes&amp;quot; to continue the installation.&lt;br /&gt;
&lt;br /&gt;
It will ask you to hit Return to finish and then the virtual machine will shutdown and halt.&lt;br /&gt;
&lt;br /&gt;
====Building the compact image====&lt;br /&gt;
&lt;br /&gt;
The installation has finished but the virtual machine file size had to be 20G for CentOS to install. The installation can be copied into a smaller image for easier cloning and distribution. &lt;br /&gt;
&lt;br /&gt;
Create a 1G image and format it with XFS&lt;br /&gt;
&lt;br /&gt;
  dd if=/dev/zero of=centos7.img bs=1M count=1 seek=1024&lt;br /&gt;
  mkfs.xfs centos7.img&lt;br /&gt;
&lt;br /&gt;
The finished installation image was partitioned during the install so we have to use kpartx to access the filesystem.&lt;br /&gt;
&lt;br /&gt;
 kpartx -av centos_ks.img&lt;br /&gt;
&lt;br /&gt;
This will create a loopback device ( /dev/mapper/loop0p1 ) that you can mount.&lt;br /&gt;
&lt;br /&gt;
 mount /dev/mapper/loop0p1 /mnt/img&lt;br /&gt;
&lt;br /&gt;
Mount the compact image&lt;br /&gt;
&lt;br /&gt;
 mount centos7.img /mnt/img2&lt;br /&gt;
&lt;br /&gt;
Use rsync to copy everything from the finished installation to the compact image.&lt;br /&gt;
&lt;br /&gt;
 rsync -avH /mnt/img/ /mnt/img2/&lt;br /&gt;
&lt;br /&gt;
CentOS defaults to using the UUID syntax for /etc/fstab. This won&#039;t work since we copied the OS to a new file system.&lt;br /&gt;
&lt;br /&gt;
vi /mnt/img2/etc/fstab&lt;br /&gt;
&lt;br /&gt;
Make fstab look like this,&lt;br /&gt;
&lt;br /&gt;
 /dev/sda1        /                       xfs     defaults        0 0&lt;br /&gt;
&lt;br /&gt;
You can remove the UUID section from /mnt/img2/etc/sysconfig/network-scripts/ifcfg-eth0 since we won&#039;t be using NetworkManager.&lt;br /&gt;
DHCP_HOSTNAME can also be removed.&lt;br /&gt;
 &lt;br /&gt;
When the OS was copied to the compact image, the SELinux contexts were not copied over. If you were to try and boot the compact image now, things would fail to start and you would not be able to login because SELinux would prevent you from running a shell. So we need to set SELinux to permissive for the first boot so we can fix the contexts.&lt;br /&gt;
&lt;br /&gt;
 vi /mnt/img2/etc/selinux/config&lt;br /&gt;
&lt;br /&gt;
Change &#039;SELINUX=&#039; to permissive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This file controls the state of SELinux on the system.&lt;br /&gt;
# SELINUX= can take one of these three values:&lt;br /&gt;
#     enforcing - SELinux security policy is enforced.&lt;br /&gt;
#     permissive - SELinux prints warnings instead of enforcing.&lt;br /&gt;
#     disabled - No SELinux policy is loaded.&lt;br /&gt;
SELINUX=permissive&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create a basic Xen config so we can boot the image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
name=&amp;quot;centos7base&amp;quot;&lt;br /&gt;
vcpus=2&lt;br /&gt;
memory=512&lt;br /&gt;
disk=[&#039;file:/mnt/xen_images/centos/centos7.img,xvda1,w&#039; ]&lt;br /&gt;
vif=[&#039;bridge=xenbr0&#039;]&lt;br /&gt;
on_reboot=&amp;quot;restart&amp;quot;&lt;br /&gt;
on_crash=&amp;quot;restart&amp;quot;&lt;br /&gt;
bootloader = &amp;quot;pygrub&amp;quot;&lt;br /&gt;
root = &amp;quot;/dev/xvda1 ro&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Boot the compact image and log in. Then run the command,&lt;br /&gt;
&lt;br /&gt;
 restorecon -R -v /&lt;br /&gt;
&lt;br /&gt;
This will reset all the SELinux contexts for the file system. When that finishes you can set SELinux back to enforcing.&lt;br /&gt;
&lt;br /&gt;
 vi /etc/selinux/config&lt;br /&gt;
&lt;br /&gt;
Change &#039;SELINUX=&#039; to enforcing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Remove the DHCP lease file for eth0&lt;br /&gt;
&lt;br /&gt;
 rm /var/lib/dhclient/dhclient--eth0.lease&lt;br /&gt;
&lt;br /&gt;
Remove the SSH host keys so you don&#039;t get duplicates when cloning the image.&lt;br /&gt;
&lt;br /&gt;
 rm /etc/ssh/ssh_host*&lt;br /&gt;
&lt;br /&gt;
Zero out log files to save space.&lt;br /&gt;
&lt;br /&gt;
 echo &#039;&#039; &amp;gt; /var/log/dmesg&lt;br /&gt;
 echo &#039;&#039; &amp;gt; /var/log/maillog&lt;br /&gt;
 echo &#039;&#039; &amp;gt; /var/log/boot.log&lt;br /&gt;
 echo &#039;&#039; &amp;gt; /var/log/secure&lt;br /&gt;
 echo &#039;&#039; &amp;gt; /var/log/cron&lt;br /&gt;
 echo &#039;&#039; &amp;gt; /var/log/messages&lt;br /&gt;
&lt;br /&gt;
Shutdown the virtual machine and you can start cloning this image.&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=71</id>
		<title>Linux/Xen/DomU/CentOS/CentOS 7</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=71"/>
		<updated>2019-02-16T19:42:49Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Building the compact image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===CentOS 7===&lt;br /&gt;
&lt;br /&gt;
The CentOS 7 installer won&#039;t install to a disk smaller then 10-20GB but its still possible to copy the finished install into a smaller image for easier distribution and cloning.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with xfs. We are making the file 20GB so CentOS will install.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=centos_ks.img bs=1M count=1 seek=20000&lt;br /&gt;
 mkfs.xfs centos_ks.img&lt;br /&gt;
&lt;br /&gt;
The easiest way to install CentOS is using the kickstart system. You will need a webserver to host the kickstart config file. You will also need a kernel and ramdisk image from a CentOS mirror. &lt;br /&gt;
&lt;br /&gt;
Download the vmlinuz and initrd.img files from your favorite CentOS mirror.&lt;br /&gt;
&lt;br /&gt;
http://mirror.centos.org/centos/7/os/x86_64/images/pxeboot/&lt;br /&gt;
&lt;br /&gt;
You will be booting the CentOS kickstart image with these files. &lt;br /&gt;
&lt;br /&gt;
Here is the kickstart config that will need to be put on a webserver. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#version=1.0.0&lt;br /&gt;
&lt;br /&gt;
install&lt;br /&gt;
&lt;br /&gt;
# System authorization information&lt;br /&gt;
auth --enableshadow --passalgo=sha512&lt;br /&gt;
# Use network installation&lt;br /&gt;
url --url=&amp;quot;http://mirror.centos.org/centos/7/os/x86_64/&amp;quot;&lt;br /&gt;
# Use text mode install&lt;br /&gt;
text&lt;br /&gt;
# Run the Setup Agent on first boot&lt;br /&gt;
firstboot --enable&lt;br /&gt;
ignoredisk --only-use=xvda&lt;br /&gt;
# Keyboard layouts&lt;br /&gt;
keyboard --vckeymap=us --xlayouts=&#039;&#039;&lt;br /&gt;
# System language&lt;br /&gt;
lang en_US.UTF-8&lt;br /&gt;
&lt;br /&gt;
# Network information&lt;br /&gt;
network --hostname=centos7 --bootproto=dhcp --device=eth0 --onboot=on&lt;br /&gt;
&lt;br /&gt;
# Root password&lt;br /&gt;
rootpw --iscrypted $6$QgAmrd86o3M8qQIa$0LMJo9zwIe3j1e.hnc5G.6bXyhduRF03McofIDGSb7lrso6mbl9kt.WzxYOCXysC4Fb6Rdlu8OkXNAL22BLUW0&lt;br /&gt;
# System services&lt;br /&gt;
services --enabled=&amp;quot;network&amp;quot;&lt;br /&gt;
# Do not configure the X Window System&lt;br /&gt;
skipx&lt;br /&gt;
# System timezone&lt;br /&gt;
timezone Etc/UTC --isUtc&lt;br /&gt;
# System bootloader configuration&lt;br /&gt;
bootloader --timeout=5 --driveorder=xvda --append=&amp;quot;console=hvc0&amp;quot;&lt;br /&gt;
# Partition clearing information&lt;br /&gt;
zerombr&lt;br /&gt;
clearpart --all --initlabel --drives=xvda&lt;br /&gt;
part / --fstype=xfs --grow --size=1 --asprimary --ondisk=xvda&lt;br /&gt;
&lt;br /&gt;
# Shutdown when the kickstart is done&lt;br /&gt;
halt&lt;br /&gt;
&lt;br /&gt;
%packages&lt;br /&gt;
@core --nodefaults&lt;br /&gt;
-grub2&lt;br /&gt;
-chrony&lt;br /&gt;
-NetworkManager&lt;br /&gt;
-NetworkManager-team&lt;br /&gt;
-NetworkManager-tui&lt;br /&gt;
-NetworkManager-libnm&lt;br /&gt;
-wireless-tools&lt;br /&gt;
-plymouth&lt;br /&gt;
-fprintd-pam&lt;br /&gt;
-*-firmware&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%addon com_redhat_kdump --disable --reserve-mb=&#039;auto&#039;&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%anaconda&lt;br /&gt;
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok&lt;br /&gt;
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
%end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kickstart Xen Config====&lt;br /&gt;
&lt;br /&gt;
Once you have the kickstart config file on a webserver you need to create a new Xen config file that will be used to install the base image. &lt;br /&gt;
&lt;br /&gt;
The Xen config will look something like this. You will need to edit the &amp;quot;disk&amp;quot;, &amp;quot;kernel&amp;quot; and &amp;quot;ramdisk&amp;quot; paths to match where you are storing the files.&lt;br /&gt;
Also in the &amp;quot;extra&amp;quot; section, &amp;quot;inst.ks&amp;quot; will be the URL to the kickstart config file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
name=&amp;quot;centos7ks&amp;quot;&lt;br /&gt;
vcpus=2&lt;br /&gt;
memory=2048&lt;br /&gt;
disk=[&#039;file:/mnt/xen_images/centos/centos_ks.img,xvda,w&#039; ]&lt;br /&gt;
vif=[&#039;bridge=xenbr0&#039;]&lt;br /&gt;
on_reboot=&amp;quot;restart&amp;quot;&lt;br /&gt;
on_crash=&amp;quot;restart&amp;quot;&lt;br /&gt;
kernel=&amp;quot;/mnt/xen_images/centos/x86_64/vmlinuz&amp;quot;&lt;br /&gt;
ramdisk=&amp;quot;/mnt/xen_images/centos/x86_64/initrd.img&amp;quot;&lt;br /&gt;
extra=&amp;quot;inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=eth0:dhcp inst.ks=http://192.168.1.80/kickstart/centos_domu.cfg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are not using DHCP you can set a static IP in the &amp;quot;extra&amp;quot; section like this,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extra=&amp;quot;inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=192.168.1.20::192.168.1.1:255.255.255.0:centos7ks:eth0:none nameserver=192.168.1.1 inst.ks=http://192.168.1.80/kickstart/centos_domu.cfg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Boot the Xen config and access the console.&lt;br /&gt;
&lt;br /&gt;
 xl create centos7_ks.cfg -c&lt;br /&gt;
&lt;br /&gt;
The virtual machine should boot up and launch anaconda to begin the automated install process.&lt;br /&gt;
&lt;br /&gt;
You will get an error when it tries to install the bootloader. Since we don&#039;t use GRUB2 with Xen you can safely say &amp;quot;yes&amp;quot; to continue the installation.&lt;br /&gt;
&lt;br /&gt;
It will ask you to hit Return to finish and then the virtual machine will shutdown and halt.&lt;br /&gt;
&lt;br /&gt;
====Building the compact image====&lt;br /&gt;
&lt;br /&gt;
The installation has finished but the virtual machine file size had to be 20G for CentOS to install. The installation can be copied into a smaller image for easier cloning and distribution. &lt;br /&gt;
&lt;br /&gt;
Create a 1G image and format it with XFS&lt;br /&gt;
&lt;br /&gt;
  dd if=/dev/zero of=centos7.img bs=1M count=1 seek=1024&lt;br /&gt;
  mkfs.xfs centos7.img&lt;br /&gt;
&lt;br /&gt;
The finished installation image was partitioned during the install so we have to use kpartx to access the filesystem.&lt;br /&gt;
&lt;br /&gt;
 kpartx -av centos_ks.img&lt;br /&gt;
&lt;br /&gt;
This will create a loopback device ( /dev/mapper/loop0p1 ) that you can mount.&lt;br /&gt;
&lt;br /&gt;
 mount /dev/mapper/loop0p1 /mnt/img&lt;br /&gt;
&lt;br /&gt;
Mount the compact image&lt;br /&gt;
&lt;br /&gt;
 mount centos7.img /mnt/img2&lt;br /&gt;
&lt;br /&gt;
Use rsync to copy everything from the finished installation to the compact image.&lt;br /&gt;
&lt;br /&gt;
 rsync -avH /mnt/img/ /mnt/img2/&lt;br /&gt;
&lt;br /&gt;
CentOS defaults to using the UUID syntax for /etc/fstab. This won&#039;t work since we copied the OS to a new file system.&lt;br /&gt;
&lt;br /&gt;
vi /mnt/img2/etc/fstab&lt;br /&gt;
&lt;br /&gt;
Make fstab look like this,&lt;br /&gt;
&lt;br /&gt;
 /dev/sda1        /                       xfs     defaults        0 0&lt;br /&gt;
&lt;br /&gt;
You can remove the UUID section from /mnt/img2/etc/sysconfig/network-scripts/ifcfg-eth0 since we won&#039;t be using NetworkManager.&lt;br /&gt;
DHCP_HOSTNAME can also be removed.&lt;br /&gt;
 &lt;br /&gt;
When the OS was copied to the compact image, the SELinux contexts were not copied over. If you were to try and boot the compact image now, things would fail to start and you would not be able to login because SELinux would prevent you from running a shell. So we need to set SELinux to permissive for the first boot so we can fix the contexts.&lt;br /&gt;
&lt;br /&gt;
 vi /mnt/img2/etc/selinux/config&lt;br /&gt;
&lt;br /&gt;
Change &#039;SELINUX=&#039; to permissive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This file controls the state of SELinux on the system.&lt;br /&gt;
# SELINUX= can take one of these three values:&lt;br /&gt;
#     enforcing - SELinux security policy is enforced.&lt;br /&gt;
#     permissive - SELinux prints warnings instead of enforcing.&lt;br /&gt;
#     disabled - No SELinux policy is loaded.&lt;br /&gt;
SELINUX=permissive&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create a basic Xen config so we can boot the image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
name=&amp;quot;centos7base&amp;quot;&lt;br /&gt;
vcpus=2&lt;br /&gt;
memory=512&lt;br /&gt;
disk=[&#039;file:/mnt/xen_images/centos/centos7.img,xvda1,w&#039; ]&lt;br /&gt;
vif=[&#039;bridge=xenbr0&#039;]&lt;br /&gt;
on_reboot=&amp;quot;restart&amp;quot;&lt;br /&gt;
on_crash=&amp;quot;restart&amp;quot;&lt;br /&gt;
bootloader = &amp;quot;pygrub&amp;quot;&lt;br /&gt;
root = &amp;quot;/dev/xvda1 ro&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Boot the compact image and log in. Then run the command,&lt;br /&gt;
&lt;br /&gt;
 restorecon -R -v /&lt;br /&gt;
&lt;br /&gt;
This will reset all the SELinux contexts for the file system. When that finishes you can set SELinux back to enforcing.&lt;br /&gt;
&lt;br /&gt;
 vi /etc/selinux/config&lt;br /&gt;
&lt;br /&gt;
Change &#039;SELINUX=&#039; to enforcing.&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=70</id>
		<title>Linux/Xen/DomU/CentOS/CentOS 7</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=70"/>
		<updated>2019-02-16T18:39:23Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Building the compact image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===CentOS 7===&lt;br /&gt;
&lt;br /&gt;
The CentOS 7 installer won&#039;t install to a disk smaller then 10-20GB but its still possible to copy the finished install into a smaller image for easier distribution and cloning.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with xfs. We are making the file 20GB so CentOS will install.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=centos_ks.img bs=1M count=1 seek=20000&lt;br /&gt;
 mkfs.xfs centos_ks.img&lt;br /&gt;
&lt;br /&gt;
The easiest way to install CentOS is using the kickstart system. You will need a webserver to host the kickstart config file. You will also need a kernel and ramdisk image from a CentOS mirror. &lt;br /&gt;
&lt;br /&gt;
Download the vmlinuz and initrd.img files from your favorite CentOS mirror.&lt;br /&gt;
&lt;br /&gt;
http://mirror.centos.org/centos/7/os/x86_64/images/pxeboot/&lt;br /&gt;
&lt;br /&gt;
You will be booting the CentOS kickstart image with these files. &lt;br /&gt;
&lt;br /&gt;
Here is the kickstart config that will need to be put on a webserver. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#version=1.0.0&lt;br /&gt;
&lt;br /&gt;
install&lt;br /&gt;
&lt;br /&gt;
# System authorization information&lt;br /&gt;
auth --enableshadow --passalgo=sha512&lt;br /&gt;
# Use network installation&lt;br /&gt;
url --url=&amp;quot;http://mirror.centos.org/centos/7/os/x86_64/&amp;quot;&lt;br /&gt;
# Use text mode install&lt;br /&gt;
text&lt;br /&gt;
# Run the Setup Agent on first boot&lt;br /&gt;
firstboot --enable&lt;br /&gt;
ignoredisk --only-use=xvda&lt;br /&gt;
# Keyboard layouts&lt;br /&gt;
keyboard --vckeymap=us --xlayouts=&#039;&#039;&lt;br /&gt;
# System language&lt;br /&gt;
lang en_US.UTF-8&lt;br /&gt;
&lt;br /&gt;
# Network information&lt;br /&gt;
network --hostname=centos7 --bootproto=dhcp --device=eth0 --onboot=on&lt;br /&gt;
&lt;br /&gt;
# Root password&lt;br /&gt;
rootpw --iscrypted $6$QgAmrd86o3M8qQIa$0LMJo9zwIe3j1e.hnc5G.6bXyhduRF03McofIDGSb7lrso6mbl9kt.WzxYOCXysC4Fb6Rdlu8OkXNAL22BLUW0&lt;br /&gt;
# System services&lt;br /&gt;
services --enabled=&amp;quot;network&amp;quot;&lt;br /&gt;
# Do not configure the X Window System&lt;br /&gt;
skipx&lt;br /&gt;
# System timezone&lt;br /&gt;
timezone Etc/UTC --isUtc&lt;br /&gt;
# System bootloader configuration&lt;br /&gt;
bootloader --timeout=5 --driveorder=xvda --append=&amp;quot;console=hvc0&amp;quot;&lt;br /&gt;
# Partition clearing information&lt;br /&gt;
zerombr&lt;br /&gt;
clearpart --all --initlabel --drives=xvda&lt;br /&gt;
part / --fstype=xfs --grow --size=1 --asprimary --ondisk=xvda&lt;br /&gt;
&lt;br /&gt;
# Shutdown when the kickstart is done&lt;br /&gt;
halt&lt;br /&gt;
&lt;br /&gt;
%packages&lt;br /&gt;
@core --nodefaults&lt;br /&gt;
-grub2&lt;br /&gt;
-chrony&lt;br /&gt;
-NetworkManager&lt;br /&gt;
-NetworkManager-team&lt;br /&gt;
-NetworkManager-tui&lt;br /&gt;
-NetworkManager-libnm&lt;br /&gt;
-wireless-tools&lt;br /&gt;
-plymouth&lt;br /&gt;
-fprintd-pam&lt;br /&gt;
-*-firmware&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%addon com_redhat_kdump --disable --reserve-mb=&#039;auto&#039;&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%anaconda&lt;br /&gt;
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok&lt;br /&gt;
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
%end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kickstart Xen Config====&lt;br /&gt;
&lt;br /&gt;
Once you have the kickstart config file on a webserver you need to create a new Xen config file that will be used to install the base image. &lt;br /&gt;
&lt;br /&gt;
The Xen config will look something like this. You will need to edit the &amp;quot;disk&amp;quot;, &amp;quot;kernel&amp;quot; and &amp;quot;ramdisk&amp;quot; paths to match where you are storing the files.&lt;br /&gt;
Also in the &amp;quot;extra&amp;quot; section, &amp;quot;inst.ks&amp;quot; will be the URL to the kickstart config file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
name=&amp;quot;centos7ks&amp;quot;&lt;br /&gt;
vcpus=2&lt;br /&gt;
memory=2048&lt;br /&gt;
disk=[&#039;file:/mnt/xen_images/centos/centos_ks.img,xvda,w&#039; ]&lt;br /&gt;
vif=[&#039;bridge=xenbr0&#039;]&lt;br /&gt;
on_reboot=&amp;quot;restart&amp;quot;&lt;br /&gt;
on_crash=&amp;quot;restart&amp;quot;&lt;br /&gt;
kernel=&amp;quot;/mnt/xen_images/centos/x86_64/vmlinuz&amp;quot;&lt;br /&gt;
ramdisk=&amp;quot;/mnt/xen_images/centos/x86_64/initrd.img&amp;quot;&lt;br /&gt;
extra=&amp;quot;inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=eth0:dhcp inst.ks=http://192.168.1.80/kickstart/centos_domu.cfg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are not using DHCP you can set a static IP in the &amp;quot;extra&amp;quot; section like this,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extra=&amp;quot;inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=192.168.1.20::192.168.1.1:255.255.255.0:centos7ks:eth0:none nameserver=192.168.1.1 inst.ks=http://192.168.1.80/kickstart/centos_domu.cfg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Boot the Xen config and access the console.&lt;br /&gt;
&lt;br /&gt;
 xl create centos7_ks.cfg -c&lt;br /&gt;
&lt;br /&gt;
The virtual machine should boot up and launch anaconda to begin the automated install process.&lt;br /&gt;
&lt;br /&gt;
You will get an error when it tries to install the bootloader. Since we don&#039;t use GRUB2 with Xen you can safely say &amp;quot;yes&amp;quot; to continue the installation.&lt;br /&gt;
&lt;br /&gt;
It will ask you to hit Return to finish and then the virtual machine will shutdown and halt.&lt;br /&gt;
&lt;br /&gt;
====Building the compact image====&lt;br /&gt;
&lt;br /&gt;
The installation has finished but the virtual machine file size had to be 20G for CentOS to install. The installation can be copied into a smaller image for easier cloning and distribution. &lt;br /&gt;
&lt;br /&gt;
Create a 1G image and format it with XFS&lt;br /&gt;
&lt;br /&gt;
  dd if=/dev/zero of=centos7.img bs=1M count=1 seek=1024&lt;br /&gt;
  mkfs.xfs centos7.img&lt;br /&gt;
&lt;br /&gt;
The finished installation image was partitioned during the install so we have to use kpartx to access the filesystem.&lt;br /&gt;
&lt;br /&gt;
 kpartx -av centos_ks.img&lt;br /&gt;
&lt;br /&gt;
This will create a loopback device ( /dev/mapper/loop0p1 ) that you can mount.&lt;br /&gt;
&lt;br /&gt;
 mount /dev/mapper/loop0p1 /mnt/img&lt;br /&gt;
&lt;br /&gt;
Mount the compact image&lt;br /&gt;
&lt;br /&gt;
 mount centos7.img /mnt/img2&lt;br /&gt;
&lt;br /&gt;
Use rsync to copy everything from the finished installation to the compact image.&lt;br /&gt;
&lt;br /&gt;
 rsync -avH /mnt/img/ /mnt/img2/&lt;br /&gt;
&lt;br /&gt;
CentOS defaults to using the UUID syntac for /etc/fstab. This won&#039;t work since we copied the OS to a new filesystem.&lt;br /&gt;
&lt;br /&gt;
vi /mnt/img2/etc/fstab&lt;br /&gt;
&lt;br /&gt;
Make fstab look like this,&lt;br /&gt;
&lt;br /&gt;
 /dev/sda1        /                       xfs     defaults        0 0&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
When the OS was copied to the compact image, the SELinux contexts were not copied over. If you were to try and boot the compact image now, things would fail to start and you would not be able to login because SELinux would prevent you from running a shell. So we need to set SELinux to permissive for the first boot so we can fix the contexts.&lt;br /&gt;
&lt;br /&gt;
 vi /mnt/img2/etc/selinux/config&lt;br /&gt;
&lt;br /&gt;
Change &#039;SELINUX=&#039; to permissive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This file controls the state of SELinux on the system.&lt;br /&gt;
# SELINUX= can take one of these three values:&lt;br /&gt;
#     enforcing - SELinux security policy is enforced.&lt;br /&gt;
#     permissive - SELinux prints warnings instead of enforcing.&lt;br /&gt;
#     disabled - No SELinux policy is loaded.&lt;br /&gt;
SELINUX=permissive&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create a basic Xen config so we can boot the image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
name=&amp;quot;centos7base&amp;quot;&lt;br /&gt;
vcpus=2&lt;br /&gt;
memory=512&lt;br /&gt;
disk=[&#039;file:/mnt/xen_images/centos/centos7.img,xvda1,w&#039; ]&lt;br /&gt;
vif=[&#039;bridge=xenbr0&#039;]&lt;br /&gt;
on_reboot=&amp;quot;restart&amp;quot;&lt;br /&gt;
on_crash=&amp;quot;restart&amp;quot;&lt;br /&gt;
bootloader = &amp;quot;pygrub&amp;quot;&lt;br /&gt;
root = &amp;quot;/dev/xvda1 ro&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=69</id>
		<title>Linux/Xen/DomU/CentOS/CentOS 7</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=69"/>
		<updated>2019-02-16T18:38:16Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Building the compact image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===CentOS 7===&lt;br /&gt;
&lt;br /&gt;
The CentOS 7 installer won&#039;t install to a disk smaller then 10-20GB but its still possible to copy the finished install into a smaller image for easier distribution and cloning.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with xfs. We are making the file 20GB so CentOS will install.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=centos_ks.img bs=1M count=1 seek=20000&lt;br /&gt;
 mkfs.xfs centos_ks.img&lt;br /&gt;
&lt;br /&gt;
The easiest way to install CentOS is using the kickstart system. You will need a webserver to host the kickstart config file. You will also need a kernel and ramdisk image from a CentOS mirror. &lt;br /&gt;
&lt;br /&gt;
Download the vmlinuz and initrd.img files from your favorite CentOS mirror.&lt;br /&gt;
&lt;br /&gt;
http://mirror.centos.org/centos/7/os/x86_64/images/pxeboot/&lt;br /&gt;
&lt;br /&gt;
You will be booting the CentOS kickstart image with these files. &lt;br /&gt;
&lt;br /&gt;
Here is the kickstart config that will need to be put on a webserver. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#version=1.0.0&lt;br /&gt;
&lt;br /&gt;
install&lt;br /&gt;
&lt;br /&gt;
# System authorization information&lt;br /&gt;
auth --enableshadow --passalgo=sha512&lt;br /&gt;
# Use network installation&lt;br /&gt;
url --url=&amp;quot;http://mirror.centos.org/centos/7/os/x86_64/&amp;quot;&lt;br /&gt;
# Use text mode install&lt;br /&gt;
text&lt;br /&gt;
# Run the Setup Agent on first boot&lt;br /&gt;
firstboot --enable&lt;br /&gt;
ignoredisk --only-use=xvda&lt;br /&gt;
# Keyboard layouts&lt;br /&gt;
keyboard --vckeymap=us --xlayouts=&#039;&#039;&lt;br /&gt;
# System language&lt;br /&gt;
lang en_US.UTF-8&lt;br /&gt;
&lt;br /&gt;
# Network information&lt;br /&gt;
network --hostname=centos7 --bootproto=dhcp --device=eth0 --onboot=on&lt;br /&gt;
&lt;br /&gt;
# Root password&lt;br /&gt;
rootpw --iscrypted $6$QgAmrd86o3M8qQIa$0LMJo9zwIe3j1e.hnc5G.6bXyhduRF03McofIDGSb7lrso6mbl9kt.WzxYOCXysC4Fb6Rdlu8OkXNAL22BLUW0&lt;br /&gt;
# System services&lt;br /&gt;
services --enabled=&amp;quot;network&amp;quot;&lt;br /&gt;
# Do not configure the X Window System&lt;br /&gt;
skipx&lt;br /&gt;
# System timezone&lt;br /&gt;
timezone Etc/UTC --isUtc&lt;br /&gt;
# System bootloader configuration&lt;br /&gt;
bootloader --timeout=5 --driveorder=xvda --append=&amp;quot;console=hvc0&amp;quot;&lt;br /&gt;
# Partition clearing information&lt;br /&gt;
zerombr&lt;br /&gt;
clearpart --all --initlabel --drives=xvda&lt;br /&gt;
part / --fstype=xfs --grow --size=1 --asprimary --ondisk=xvda&lt;br /&gt;
&lt;br /&gt;
# Shutdown when the kickstart is done&lt;br /&gt;
halt&lt;br /&gt;
&lt;br /&gt;
%packages&lt;br /&gt;
@core --nodefaults&lt;br /&gt;
-grub2&lt;br /&gt;
-chrony&lt;br /&gt;
-NetworkManager&lt;br /&gt;
-NetworkManager-team&lt;br /&gt;
-NetworkManager-tui&lt;br /&gt;
-NetworkManager-libnm&lt;br /&gt;
-wireless-tools&lt;br /&gt;
-plymouth&lt;br /&gt;
-fprintd-pam&lt;br /&gt;
-*-firmware&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%addon com_redhat_kdump --disable --reserve-mb=&#039;auto&#039;&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%anaconda&lt;br /&gt;
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok&lt;br /&gt;
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
%end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kickstart Xen Config====&lt;br /&gt;
&lt;br /&gt;
Once you have the kickstart config file on a webserver you need to create a new Xen config file that will be used to install the base image. &lt;br /&gt;
&lt;br /&gt;
The Xen config will look something like this. You will need to edit the &amp;quot;disk&amp;quot;, &amp;quot;kernel&amp;quot; and &amp;quot;ramdisk&amp;quot; paths to match where you are storing the files.&lt;br /&gt;
Also in the &amp;quot;extra&amp;quot; section, &amp;quot;inst.ks&amp;quot; will be the URL to the kickstart config file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
name=&amp;quot;centos7ks&amp;quot;&lt;br /&gt;
vcpus=2&lt;br /&gt;
memory=2048&lt;br /&gt;
disk=[&#039;file:/mnt/xen_images/centos/centos_ks.img,xvda,w&#039; ]&lt;br /&gt;
vif=[&#039;bridge=xenbr0&#039;]&lt;br /&gt;
on_reboot=&amp;quot;restart&amp;quot;&lt;br /&gt;
on_crash=&amp;quot;restart&amp;quot;&lt;br /&gt;
kernel=&amp;quot;/mnt/xen_images/centos/x86_64/vmlinuz&amp;quot;&lt;br /&gt;
ramdisk=&amp;quot;/mnt/xen_images/centos/x86_64/initrd.img&amp;quot;&lt;br /&gt;
extra=&amp;quot;inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=eth0:dhcp inst.ks=http://192.168.1.80/kickstart/centos_domu.cfg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are not using DHCP you can set a static IP in the &amp;quot;extra&amp;quot; section like this,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extra=&amp;quot;inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=192.168.1.20::192.168.1.1:255.255.255.0:centos7ks:eth0:none nameserver=192.168.1.1 inst.ks=http://192.168.1.80/kickstart/centos_domu.cfg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Boot the Xen config and access the console.&lt;br /&gt;
&lt;br /&gt;
 xl create centos7_ks.cfg -c&lt;br /&gt;
&lt;br /&gt;
The virtual machine should boot up and launch anaconda to begin the automated install process.&lt;br /&gt;
&lt;br /&gt;
You will get an error when it tries to install the bootloader. Since we don&#039;t use GRUB2 with Xen you can safely say &amp;quot;yes&amp;quot; to continue the installation.&lt;br /&gt;
&lt;br /&gt;
It will ask you to hit Return to finish and then the virtual machine will shutdown and halt.&lt;br /&gt;
&lt;br /&gt;
====Building the compact image====&lt;br /&gt;
&lt;br /&gt;
The installation has finished but the virtual machine file size had to be 20G for CentOS to install. The installation can be copied into a smaller image for easier cloning and distribution. &lt;br /&gt;
&lt;br /&gt;
Create a 1G image and format it with XFS&lt;br /&gt;
&lt;br /&gt;
  dd if=/dev/zero of=centos7.img bs=1M count=1 seek=1024&lt;br /&gt;
  mkfs.xfs centos7.img&lt;br /&gt;
&lt;br /&gt;
The finished installation image was partitioned during the install so we have to use kpartx to access the filesystem.&lt;br /&gt;
&lt;br /&gt;
 kpartx -av centos_ks.img&lt;br /&gt;
&lt;br /&gt;
This will create a loopback device ( /dev/mapper/loop0p1 ) that you can mount.&lt;br /&gt;
&lt;br /&gt;
 mount /dev/mapper/loop0p1 /mnt/img&lt;br /&gt;
&lt;br /&gt;
Mount the compact image&lt;br /&gt;
&lt;br /&gt;
 mount centos7.img /mnt/img2&lt;br /&gt;
&lt;br /&gt;
Use rsync to copy everything from the finished installation to the compact image.&lt;br /&gt;
&lt;br /&gt;
 rsync -avH /mnt/img/ /mnt/img2/&lt;br /&gt;
&lt;br /&gt;
CentOS defaults to using the UUID syntac for /etc/fstab. This won&#039;t work since we copied the OS to a new filesystem.&lt;br /&gt;
&lt;br /&gt;
vi /mnt/img2/etc/fstab&lt;br /&gt;
&lt;br /&gt;
Make fstab look like this,&lt;br /&gt;
&lt;br /&gt;
 /dev/sda1        /                       xfs     defaults        0 0&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
When the OS was copied to the compact image, the SELinux contexts were not copied over. If you were to try and boot the compact image now, things would fail to start and you would not be able to login because SELinux would prevent you from running a shell. So we need to set SELinux to permissive for the first boot so we can fix the contexts.&lt;br /&gt;
&lt;br /&gt;
 vi /mnt/img2/etc/selinux/config&lt;br /&gt;
&lt;br /&gt;
Change &#039;SELINUX=&#039; to permissive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight type=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This file controls the state of SELinux on the system.&lt;br /&gt;
# SELINUX= can take one of these three values:&lt;br /&gt;
#     enforcing - SELinux security policy is enforced.&lt;br /&gt;
#     permissive - SELinux prints warnings instead of enforcing.&lt;br /&gt;
#     disabled - No SELinux policy is loaded.&lt;br /&gt;
SELINUX=permissive&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create a basic Xen config so we can boot the image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight type=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
name=&amp;quot;centos7base&amp;quot;&lt;br /&gt;
vcpus=2&lt;br /&gt;
memory=512&lt;br /&gt;
disk=[&#039;file:/mnt/xen_images/centos/centos7.img,xvda1,w&#039; ]&lt;br /&gt;
vif=[&#039;bridge=xenbr0&#039;]&lt;br /&gt;
on_reboot=&amp;quot;restart&amp;quot;&lt;br /&gt;
on_crash=&amp;quot;restart&amp;quot;&lt;br /&gt;
bootloader = &amp;quot;pygrub&amp;quot;&lt;br /&gt;
root = &amp;quot;/dev/xvda1 ro&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=68</id>
		<title>Linux/Xen/DomU/CentOS/CentOS 7</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=68"/>
		<updated>2019-02-16T18:21:30Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Building the compact image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===CentOS 7===&lt;br /&gt;
&lt;br /&gt;
The CentOS 7 installer won&#039;t install to a disk smaller then 10-20GB but its still possible to copy the finished install into a smaller image for easier distribution and cloning.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with xfs. We are making the file 20GB so CentOS will install.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=centos_ks.img bs=1M count=1 seek=20000&lt;br /&gt;
 mkfs.xfs centos_ks.img&lt;br /&gt;
&lt;br /&gt;
The easiest way to install CentOS is using the kickstart system. You will need a webserver to host the kickstart config file. You will also need a kernel and ramdisk image from a CentOS mirror. &lt;br /&gt;
&lt;br /&gt;
Download the vmlinuz and initrd.img files from your favorite CentOS mirror.&lt;br /&gt;
&lt;br /&gt;
http://mirror.centos.org/centos/7/os/x86_64/images/pxeboot/&lt;br /&gt;
&lt;br /&gt;
You will be booting the CentOS kickstart image with these files. &lt;br /&gt;
&lt;br /&gt;
Here is the kickstart config that will need to be put on a webserver. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#version=1.0.0&lt;br /&gt;
&lt;br /&gt;
install&lt;br /&gt;
&lt;br /&gt;
# System authorization information&lt;br /&gt;
auth --enableshadow --passalgo=sha512&lt;br /&gt;
# Use network installation&lt;br /&gt;
url --url=&amp;quot;http://mirror.centos.org/centos/7/os/x86_64/&amp;quot;&lt;br /&gt;
# Use text mode install&lt;br /&gt;
text&lt;br /&gt;
# Run the Setup Agent on first boot&lt;br /&gt;
firstboot --enable&lt;br /&gt;
ignoredisk --only-use=xvda&lt;br /&gt;
# Keyboard layouts&lt;br /&gt;
keyboard --vckeymap=us --xlayouts=&#039;&#039;&lt;br /&gt;
# System language&lt;br /&gt;
lang en_US.UTF-8&lt;br /&gt;
&lt;br /&gt;
# Network information&lt;br /&gt;
network --hostname=centos7 --bootproto=dhcp --device=eth0 --onboot=on&lt;br /&gt;
&lt;br /&gt;
# Root password&lt;br /&gt;
rootpw --iscrypted $6$QgAmrd86o3M8qQIa$0LMJo9zwIe3j1e.hnc5G.6bXyhduRF03McofIDGSb7lrso6mbl9kt.WzxYOCXysC4Fb6Rdlu8OkXNAL22BLUW0&lt;br /&gt;
# System services&lt;br /&gt;
services --enabled=&amp;quot;network&amp;quot;&lt;br /&gt;
# Do not configure the X Window System&lt;br /&gt;
skipx&lt;br /&gt;
# System timezone&lt;br /&gt;
timezone Etc/UTC --isUtc&lt;br /&gt;
# System bootloader configuration&lt;br /&gt;
bootloader --timeout=5 --driveorder=xvda --append=&amp;quot;console=hvc0&amp;quot;&lt;br /&gt;
# Partition clearing information&lt;br /&gt;
zerombr&lt;br /&gt;
clearpart --all --initlabel --drives=xvda&lt;br /&gt;
part / --fstype=xfs --grow --size=1 --asprimary --ondisk=xvda&lt;br /&gt;
&lt;br /&gt;
# Shutdown when the kickstart is done&lt;br /&gt;
halt&lt;br /&gt;
&lt;br /&gt;
%packages&lt;br /&gt;
@core --nodefaults&lt;br /&gt;
-grub2&lt;br /&gt;
-chrony&lt;br /&gt;
-NetworkManager&lt;br /&gt;
-NetworkManager-team&lt;br /&gt;
-NetworkManager-tui&lt;br /&gt;
-NetworkManager-libnm&lt;br /&gt;
-wireless-tools&lt;br /&gt;
-plymouth&lt;br /&gt;
-fprintd-pam&lt;br /&gt;
-*-firmware&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%addon com_redhat_kdump --disable --reserve-mb=&#039;auto&#039;&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%anaconda&lt;br /&gt;
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok&lt;br /&gt;
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
%end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kickstart Xen Config====&lt;br /&gt;
&lt;br /&gt;
Once you have the kickstart config file on a webserver you need to create a new Xen config file that will be used to install the base image. &lt;br /&gt;
&lt;br /&gt;
The Xen config will look something like this. You will need to edit the &amp;quot;disk&amp;quot;, &amp;quot;kernel&amp;quot; and &amp;quot;ramdisk&amp;quot; paths to match where you are storing the files.&lt;br /&gt;
Also in the &amp;quot;extra&amp;quot; section, &amp;quot;inst.ks&amp;quot; will be the URL to the kickstart config file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
name=&amp;quot;centos7ks&amp;quot;&lt;br /&gt;
vcpus=2&lt;br /&gt;
memory=2048&lt;br /&gt;
disk=[&#039;file:/mnt/xen_images/centos/centos_ks.img,xvda,w&#039; ]&lt;br /&gt;
vif=[&#039;bridge=xenbr0&#039;]&lt;br /&gt;
on_reboot=&amp;quot;restart&amp;quot;&lt;br /&gt;
on_crash=&amp;quot;restart&amp;quot;&lt;br /&gt;
kernel=&amp;quot;/mnt/xen_images/centos/x86_64/vmlinuz&amp;quot;&lt;br /&gt;
ramdisk=&amp;quot;/mnt/xen_images/centos/x86_64/initrd.img&amp;quot;&lt;br /&gt;
extra=&amp;quot;inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=eth0:dhcp inst.ks=http://192.168.1.80/kickstart/centos_domu.cfg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are not using DHCP you can set a static IP in the &amp;quot;extra&amp;quot; section like this,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extra=&amp;quot;inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=192.168.1.20::192.168.1.1:255.255.255.0:centos7ks:eth0:none nameserver=192.168.1.1 inst.ks=http://192.168.1.80/kickstart/centos_domu.cfg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Boot the Xen config and access the console.&lt;br /&gt;
&lt;br /&gt;
 xl create centos7_ks.cfg -c&lt;br /&gt;
&lt;br /&gt;
The virtual machine should boot up and launch anaconda to begin the automated install process.&lt;br /&gt;
&lt;br /&gt;
You will get an error when it tries to install the bootloader. Since we don&#039;t use GRUB2 with Xen you can safely say &amp;quot;yes&amp;quot; to continue the installation.&lt;br /&gt;
&lt;br /&gt;
It will ask you to hit Return to finish and then the virtual machine will shutdown and halt.&lt;br /&gt;
&lt;br /&gt;
====Building the compact image====&lt;br /&gt;
&lt;br /&gt;
The installation has finished but the virtual machine file size had to be 20G for CentOS to install. The installation can be copied into a smaller image for easier cloning and distribution. &lt;br /&gt;
&lt;br /&gt;
Create a 1G image and format it with XFS&lt;br /&gt;
&lt;br /&gt;
  dd if=/dev/zero of=centos7.img bs=1M count=1 seek=1024&lt;br /&gt;
  mkfs.xfs centos7.img&lt;br /&gt;
&lt;br /&gt;
The finished installation image was partitioned during the install so we have to use kpartx to access the filesystem.&lt;br /&gt;
&lt;br /&gt;
 kpartx -av centos_ks.img&lt;br /&gt;
&lt;br /&gt;
This will create a loopback device ( /dev/mapper/loop0p1 ) that you can mount.&lt;br /&gt;
&lt;br /&gt;
 mount /dev/mapper/loop0p1 /mnt/img&lt;br /&gt;
&lt;br /&gt;
Mount the compact image&lt;br /&gt;
&lt;br /&gt;
 mount centos7.img /mnt/img2&lt;br /&gt;
&lt;br /&gt;
Use rsync to copy everything from the finished installation to the compact image.&lt;br /&gt;
&lt;br /&gt;
 rsync -avH /mnt/img/ /mnt/img2/&lt;br /&gt;
&lt;br /&gt;
When the OS was copied to the compact image, the SELinux contexts were not copied over. If you were to try and boot the compact image now, things would fail to start and you would not be able to login because SELinux would prevent you from running a shell. So we need to set SELinux to permissive for the first boot so we can fix the contexts.&lt;br /&gt;
&lt;br /&gt;
 vi /mnt/img2/etc/selinux/config&lt;br /&gt;
&lt;br /&gt;
Change &#039;SELINUX=&#039; to permissive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight type=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This file controls the state of SELinux on the system.&lt;br /&gt;
# SELINUX= can take one of these three values:&lt;br /&gt;
#     enforcing - SELinux security policy is enforced.&lt;br /&gt;
#     permissive - SELinux prints warnings instead of enforcing.&lt;br /&gt;
#     disabled - No SELinux policy is loaded.&lt;br /&gt;
SELINUX=permissive&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=67</id>
		<title>Linux/Xen/DomU/CentOS/CentOS 7</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=67"/>
		<updated>2019-02-02T22:20:06Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* CentOS 7 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===CentOS 7===&lt;br /&gt;
&lt;br /&gt;
The CentOS 7 installer won&#039;t install to a disk smaller then 10-20GB but its still possible to copy the finished install into a smaller image for easier distribution and cloning.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with xfs. We are making the file 20GB so CentOS will install.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=centos_ks.img bs=1M count=1 seek=20000&lt;br /&gt;
 mkfs.xfs centos_ks.img&lt;br /&gt;
&lt;br /&gt;
The easiest way to install CentOS is using the kickstart system. You will need a webserver to host the kickstart config file. You will also need a kernel and ramdisk image from a CentOS mirror. &lt;br /&gt;
&lt;br /&gt;
Download the vmlinuz and initrd.img files from your favorite CentOS mirror.&lt;br /&gt;
&lt;br /&gt;
http://mirror.centos.org/centos/7/os/x86_64/images/pxeboot/&lt;br /&gt;
&lt;br /&gt;
You will be booting the CentOS kickstart image with these files. &lt;br /&gt;
&lt;br /&gt;
Here is the kickstart config that will need to be put on a webserver. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#version=1.0.0&lt;br /&gt;
&lt;br /&gt;
install&lt;br /&gt;
&lt;br /&gt;
# System authorization information&lt;br /&gt;
auth --enableshadow --passalgo=sha512&lt;br /&gt;
# Use network installation&lt;br /&gt;
url --url=&amp;quot;http://mirror.centos.org/centos/7/os/x86_64/&amp;quot;&lt;br /&gt;
# Use text mode install&lt;br /&gt;
text&lt;br /&gt;
# Run the Setup Agent on first boot&lt;br /&gt;
firstboot --enable&lt;br /&gt;
ignoredisk --only-use=xvda&lt;br /&gt;
# Keyboard layouts&lt;br /&gt;
keyboard --vckeymap=us --xlayouts=&#039;&#039;&lt;br /&gt;
# System language&lt;br /&gt;
lang en_US.UTF-8&lt;br /&gt;
&lt;br /&gt;
# Network information&lt;br /&gt;
network --hostname=centos7 --bootproto=dhcp --device=eth0 --onboot=on&lt;br /&gt;
&lt;br /&gt;
# Root password&lt;br /&gt;
rootpw --iscrypted $6$QgAmrd86o3M8qQIa$0LMJo9zwIe3j1e.hnc5G.6bXyhduRF03McofIDGSb7lrso6mbl9kt.WzxYOCXysC4Fb6Rdlu8OkXNAL22BLUW0&lt;br /&gt;
# System services&lt;br /&gt;
services --enabled=&amp;quot;network&amp;quot;&lt;br /&gt;
# Do not configure the X Window System&lt;br /&gt;
skipx&lt;br /&gt;
# System timezone&lt;br /&gt;
timezone Etc/UTC --isUtc&lt;br /&gt;
# System bootloader configuration&lt;br /&gt;
bootloader --timeout=5 --driveorder=xvda --append=&amp;quot;console=hvc0&amp;quot;&lt;br /&gt;
# Partition clearing information&lt;br /&gt;
zerombr&lt;br /&gt;
clearpart --all --initlabel --drives=xvda&lt;br /&gt;
part / --fstype=xfs --grow --size=1 --asprimary --ondisk=xvda&lt;br /&gt;
&lt;br /&gt;
# Shutdown when the kickstart is done&lt;br /&gt;
halt&lt;br /&gt;
&lt;br /&gt;
%packages&lt;br /&gt;
@core --nodefaults&lt;br /&gt;
-grub2&lt;br /&gt;
-chrony&lt;br /&gt;
-NetworkManager&lt;br /&gt;
-NetworkManager-team&lt;br /&gt;
-NetworkManager-tui&lt;br /&gt;
-NetworkManager-libnm&lt;br /&gt;
-wireless-tools&lt;br /&gt;
-plymouth&lt;br /&gt;
-fprintd-pam&lt;br /&gt;
-*-firmware&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%addon com_redhat_kdump --disable --reserve-mb=&#039;auto&#039;&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%anaconda&lt;br /&gt;
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok&lt;br /&gt;
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
%end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kickstart Xen Config====&lt;br /&gt;
&lt;br /&gt;
Once you have the kickstart config file on a webserver you need to create a new Xen config file that will be used to install the base image. &lt;br /&gt;
&lt;br /&gt;
The Xen config will look something like this. You will need to edit the &amp;quot;disk&amp;quot;, &amp;quot;kernel&amp;quot; and &amp;quot;ramdisk&amp;quot; paths to match where you are storing the files.&lt;br /&gt;
Also in the &amp;quot;extra&amp;quot; section, &amp;quot;inst.ks&amp;quot; will be the URL to the kickstart config file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
name=&amp;quot;centos7ks&amp;quot;&lt;br /&gt;
vcpus=2&lt;br /&gt;
memory=2048&lt;br /&gt;
disk=[&#039;file:/mnt/xen_images/centos/centos_ks.img,xvda,w&#039; ]&lt;br /&gt;
vif=[&#039;bridge=xenbr0&#039;]&lt;br /&gt;
on_reboot=&amp;quot;restart&amp;quot;&lt;br /&gt;
on_crash=&amp;quot;restart&amp;quot;&lt;br /&gt;
kernel=&amp;quot;/mnt/xen_images/centos/x86_64/vmlinuz&amp;quot;&lt;br /&gt;
ramdisk=&amp;quot;/mnt/xen_images/centos/x86_64/initrd.img&amp;quot;&lt;br /&gt;
extra=&amp;quot;inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=eth0:dhcp inst.ks=http://192.168.1.80/kickstart/centos_domu.cfg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are not using DHCP you can set a static IP in the &amp;quot;extra&amp;quot; section like this,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extra=&amp;quot;inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=192.168.1.20::192.168.1.1:255.255.255.0:centos7ks:eth0:none nameserver=192.168.1.1 inst.ks=http://192.168.1.80/kickstart/centos_domu.cfg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Boot the Xen config and access the console.&lt;br /&gt;
&lt;br /&gt;
 xl create centos7_ks.cfg -c&lt;br /&gt;
&lt;br /&gt;
The virtual machine should boot up and launch anaconda to begin the automated install process.&lt;br /&gt;
&lt;br /&gt;
You will get an error when it tries to install the bootloader. Since we don&#039;t use GRUB2 with Xen you can safely say &amp;quot;yes&amp;quot; to continue the installation.&lt;br /&gt;
&lt;br /&gt;
It will ask you to hit Return to finish and then the virtual machine will shutdown and halt.&lt;br /&gt;
&lt;br /&gt;
====Building the compact image====&lt;br /&gt;
&lt;br /&gt;
The installation has finished but the virtual machine file size had to be 20G for CentOS to install. The installation can be copied into a smaller image for easier cloning and distribution. &lt;br /&gt;
&lt;br /&gt;
Create a 1G image and format it with XFS&lt;br /&gt;
&lt;br /&gt;
  dd if=/dev/zero of=centos7.img bs=1M count=1 seek=1024&lt;br /&gt;
  mkfs.xfs centos7.img&lt;br /&gt;
&lt;br /&gt;
The finished installation image was partitioned during the install so we have to use kpartx to access the filesystem.&lt;br /&gt;
&lt;br /&gt;
 kpartx -av centos_ks.img&lt;br /&gt;
&lt;br /&gt;
This will create a loopback device ( /dev/mapper/loop0p1 ) that you can mount.&lt;br /&gt;
&lt;br /&gt;
 mount /dev/mapper/loop0p1 /mnt/img&lt;br /&gt;
&lt;br /&gt;
Mount the compact image&lt;br /&gt;
&lt;br /&gt;
 mount centos7.img /mnt/img2&lt;br /&gt;
&lt;br /&gt;
Use rsync to copy everything from the finished installation to the compact image.&lt;br /&gt;
&lt;br /&gt;
 rsync -avH /mnt/img/ /mnt/img2/&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=66</id>
		<title>Linux/Xen/DomU/CentOS/CentOS 7</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=66"/>
		<updated>2019-02-02T21:42:54Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Kickstart Xen Config */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===CentOS 7===&lt;br /&gt;
&lt;br /&gt;
The CentOS 7 installer won&#039;t install to a disk smaller then 10-20GB but its still possible to copy the finished install into a smaller image for easier distribution and cloning.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with xfs. We are making the file 20GB so CentOS will install.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=centos_ks.img bs=1M count=1 seek=20000&lt;br /&gt;
 mkfs.xfs centos_ks.img&lt;br /&gt;
&lt;br /&gt;
The easiest way to install CentOS is using the kickstart system. You will need a webserver to host the kickstart config file. You will also need a kernel and ramdisk image from a CentOS mirror. &lt;br /&gt;
&lt;br /&gt;
Download the vmlinuz and initrd.img files from your favorite CentOS mirror.&lt;br /&gt;
&lt;br /&gt;
http://mirror.centos.org/centos/7/os/x86_64/images/pxeboot/&lt;br /&gt;
&lt;br /&gt;
You will be booting the CentOS kickstart image with these files. &lt;br /&gt;
&lt;br /&gt;
Here is the kickstart config that will need to be put on a webserver. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#version=1.0.0&lt;br /&gt;
&lt;br /&gt;
install&lt;br /&gt;
&lt;br /&gt;
# System authorization information&lt;br /&gt;
auth --enableshadow --passalgo=sha512&lt;br /&gt;
# Use network installation&lt;br /&gt;
url --url=&amp;quot;http://mirror.centos.org/centos/7/os/x86_64/&amp;quot;&lt;br /&gt;
# Use text mode install&lt;br /&gt;
text&lt;br /&gt;
# Run the Setup Agent on first boot&lt;br /&gt;
firstboot --enable&lt;br /&gt;
ignoredisk --only-use=xvda&lt;br /&gt;
# Keyboard layouts&lt;br /&gt;
keyboard --vckeymap=us --xlayouts=&#039;&#039;&lt;br /&gt;
# System language&lt;br /&gt;
lang en_US.UTF-8&lt;br /&gt;
&lt;br /&gt;
# Network information&lt;br /&gt;
network --hostname=centos7 --bootproto=dhcp --device=eth0 --onboot=on&lt;br /&gt;
&lt;br /&gt;
# Root password&lt;br /&gt;
rootpw --iscrypted $6$QgAmrd86o3M8qQIa$0LMJo9zwIe3j1e.hnc5G.6bXyhduRF03McofIDGSb7lrso6mbl9kt.WzxYOCXysC4Fb6Rdlu8OkXNAL22BLUW0&lt;br /&gt;
# System services&lt;br /&gt;
services --enabled=&amp;quot;network&amp;quot;&lt;br /&gt;
# Do not configure the X Window System&lt;br /&gt;
skipx&lt;br /&gt;
# System timezone&lt;br /&gt;
timezone Etc/UTC --isUtc&lt;br /&gt;
# System bootloader configuration&lt;br /&gt;
bootloader --timeout=5 --driveorder=xvda --append=&amp;quot;console=hvc0&amp;quot;&lt;br /&gt;
# Partition clearing information&lt;br /&gt;
zerombr&lt;br /&gt;
clearpart --all --initlabel --drives=xvda&lt;br /&gt;
part / --fstype=xfs --grow --size=1 --asprimary --ondisk=xvda&lt;br /&gt;
&lt;br /&gt;
# Shutdown when the kickstart is done&lt;br /&gt;
halt&lt;br /&gt;
&lt;br /&gt;
%packages&lt;br /&gt;
@core --nodefaults&lt;br /&gt;
-grub2&lt;br /&gt;
-chrony&lt;br /&gt;
-NetworkManager&lt;br /&gt;
-NetworkManager-team&lt;br /&gt;
-NetworkManager-tui&lt;br /&gt;
-NetworkManager-libnm&lt;br /&gt;
-wireless-tools&lt;br /&gt;
-plymouth&lt;br /&gt;
-fprintd-pam&lt;br /&gt;
-*-firmware&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%addon com_redhat_kdump --disable --reserve-mb=&#039;auto&#039;&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%anaconda&lt;br /&gt;
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok&lt;br /&gt;
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
%end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kickstart Xen Config====&lt;br /&gt;
&lt;br /&gt;
Once you have the kickstart config file on a webserver you need to create a new Xen config file that will be used to install the base image. &lt;br /&gt;
&lt;br /&gt;
The Xen config will look something like this. You will need to edit the &amp;quot;disk&amp;quot;, &amp;quot;kernel&amp;quot; and &amp;quot;ramdisk&amp;quot; paths to match where you are storing the files.&lt;br /&gt;
Also in the &amp;quot;extra&amp;quot; section, &amp;quot;inst.ks&amp;quot; will be the URL to the kickstart config file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
name=&amp;quot;centos7ks&amp;quot;&lt;br /&gt;
vcpus=2&lt;br /&gt;
memory=2048&lt;br /&gt;
disk=[&#039;file:/mnt/xen_images/centos/centos_ks.img,xvda,w&#039; ]&lt;br /&gt;
vif=[&#039;bridge=xenbr0&#039;]&lt;br /&gt;
on_reboot=&amp;quot;restart&amp;quot;&lt;br /&gt;
on_crash=&amp;quot;restart&amp;quot;&lt;br /&gt;
kernel=&amp;quot;/mnt/xen_images/centos/x86_64/vmlinuz&amp;quot;&lt;br /&gt;
ramdisk=&amp;quot;/mnt/xen_images/centos/x86_64/initrd.img&amp;quot;&lt;br /&gt;
extra=&amp;quot;inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=eth0:dhcp inst.ks=http://192.168.1.80/kickstart/centos_domu.cfg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are not using DHCP you can set a static IP in the &amp;quot;extra&amp;quot; section like this,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extra=&amp;quot;inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=192.168.1.20::192.168.1.1:255.255.255.0:centos7ks:eth0:none nameserver=192.168.1.1 inst.ks=http://192.168.1.80/kickstart/centos_domu.cfg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Boot the Xen config and access the console.&lt;br /&gt;
&lt;br /&gt;
 xl create centos7_ks.cfg -c&lt;br /&gt;
&lt;br /&gt;
The virtual machine should boot up and launch anaconda to begin the automated install process.&lt;br /&gt;
&lt;br /&gt;
You will get an error when it tries to install the bootloader. Since we don&#039;t use GRUB2 with Xen you can &amp;quot;yes&amp;quot; to continue the installation.&lt;br /&gt;
&lt;br /&gt;
It will ask you to hit Return to finish and then the vitual machine will shutdown and halt.&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=65</id>
		<title>Linux/Xen/DomU/CentOS/CentOS 7</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=65"/>
		<updated>2019-02-02T21:11:54Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* CentOS 7 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===CentOS 7===&lt;br /&gt;
&lt;br /&gt;
The CentOS 7 installer won&#039;t install to a disk smaller then 10-20GB but its still possible to copy the finished install into a smaller image for easier distribution and cloning.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with xfs. We are making the file 20GB so CentOS will install.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=centos_ks.img bs=1M count=1 seek=20000&lt;br /&gt;
 mkfs.xfs centos_ks.img&lt;br /&gt;
&lt;br /&gt;
The easiest way to install CentOS is using the kickstart system. You will need a webserver to host the kickstart config file. You will also need a kernel and ramdisk image from a CentOS mirror. &lt;br /&gt;
&lt;br /&gt;
Download the vmlinuz and initrd.img files from your favorite CentOS mirror.&lt;br /&gt;
&lt;br /&gt;
http://mirror.centos.org/centos/7/os/x86_64/images/pxeboot/&lt;br /&gt;
&lt;br /&gt;
You will be booting the CentOS kickstart image with these files. &lt;br /&gt;
&lt;br /&gt;
Here is the kickstart config that will need to be put on a webserver. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#version=1.0.0&lt;br /&gt;
&lt;br /&gt;
install&lt;br /&gt;
&lt;br /&gt;
# System authorization information&lt;br /&gt;
auth --enableshadow --passalgo=sha512&lt;br /&gt;
# Use network installation&lt;br /&gt;
url --url=&amp;quot;http://mirror.centos.org/centos/7/os/x86_64/&amp;quot;&lt;br /&gt;
# Use text mode install&lt;br /&gt;
text&lt;br /&gt;
# Run the Setup Agent on first boot&lt;br /&gt;
firstboot --enable&lt;br /&gt;
ignoredisk --only-use=xvda&lt;br /&gt;
# Keyboard layouts&lt;br /&gt;
keyboard --vckeymap=us --xlayouts=&#039;&#039;&lt;br /&gt;
# System language&lt;br /&gt;
lang en_US.UTF-8&lt;br /&gt;
&lt;br /&gt;
# Network information&lt;br /&gt;
network --hostname=centos7 --bootproto=dhcp --device=eth0 --onboot=on&lt;br /&gt;
&lt;br /&gt;
# Root password&lt;br /&gt;
rootpw --iscrypted $6$QgAmrd86o3M8qQIa$0LMJo9zwIe3j1e.hnc5G.6bXyhduRF03McofIDGSb7lrso6mbl9kt.WzxYOCXysC4Fb6Rdlu8OkXNAL22BLUW0&lt;br /&gt;
# System services&lt;br /&gt;
services --enabled=&amp;quot;network&amp;quot;&lt;br /&gt;
# Do not configure the X Window System&lt;br /&gt;
skipx&lt;br /&gt;
# System timezone&lt;br /&gt;
timezone Etc/UTC --isUtc&lt;br /&gt;
# System bootloader configuration&lt;br /&gt;
bootloader --timeout=5 --driveorder=xvda --append=&amp;quot;console=hvc0&amp;quot;&lt;br /&gt;
# Partition clearing information&lt;br /&gt;
zerombr&lt;br /&gt;
clearpart --all --initlabel --drives=xvda&lt;br /&gt;
part / --fstype=xfs --grow --size=1 --asprimary --ondisk=xvda&lt;br /&gt;
&lt;br /&gt;
# Shutdown when the kickstart is done&lt;br /&gt;
halt&lt;br /&gt;
&lt;br /&gt;
%packages&lt;br /&gt;
@core --nodefaults&lt;br /&gt;
-grub2&lt;br /&gt;
-chrony&lt;br /&gt;
-NetworkManager&lt;br /&gt;
-NetworkManager-team&lt;br /&gt;
-NetworkManager-tui&lt;br /&gt;
-NetworkManager-libnm&lt;br /&gt;
-wireless-tools&lt;br /&gt;
-plymouth&lt;br /&gt;
-fprintd-pam&lt;br /&gt;
-*-firmware&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%addon com_redhat_kdump --disable --reserve-mb=&#039;auto&#039;&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%anaconda&lt;br /&gt;
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok&lt;br /&gt;
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
%end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kickstart Xen Config====&lt;br /&gt;
&lt;br /&gt;
Once you have the kickstart config file on a webserver you need to create a new Xen config file that will be used to install the base image. &lt;br /&gt;
&lt;br /&gt;
The Xen config will look something like this. You will need to edit the &amp;quot;disk&amp;quot;, &amp;quot;kernel&amp;quot; and &amp;quot;ramdisk&amp;quot; paths to match where you are storing the files.&lt;br /&gt;
Also in the &amp;quot;extra&amp;quot; section, &amp;quot;inst.ks&amp;quot; will be the URL to the kickstart config file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
name=&amp;quot;centos7ks&amp;quot;&lt;br /&gt;
vcpus=2&lt;br /&gt;
memory=2048&lt;br /&gt;
disk=[&#039;file:/mnt/xen_images/centos/centos_ks.img,xvda,w&#039; ]&lt;br /&gt;
vif=[&#039;bridge=xenbr0&#039;]&lt;br /&gt;
on_reboot=&amp;quot;restart&amp;quot;&lt;br /&gt;
on_crash=&amp;quot;restart&amp;quot;&lt;br /&gt;
kernel=&amp;quot;/mnt/xen_images/centos/x86_64/vmlinuz&amp;quot;&lt;br /&gt;
ramdisk=&amp;quot;/mnt/xen_images/centos/x86_64/initrd.img&amp;quot;&lt;br /&gt;
extra=&amp;quot;inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=eth0:dhcp inst.ks=http://192.168.1.80/kickstart/centos_domu.cfg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are not using DHCP you can set a static IP in the &amp;quot;extra&amp;quot; section like this,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
extra=&amp;quot;inst.repo=http://mirror.centos.org/centos/7/os/x86_64/ ip=192.168.1.20::192.168.1.1:255.255.255.0:centos7ks:eth0:none nameserver=192.168.1.1 inst.ks=http://192.168.1.80/kickstart/centos_domu.cfg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=64</id>
		<title>Linux/Xen/DomU/CentOS/CentOS 7</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=64"/>
		<updated>2019-01-20T23:01:20Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* CentOS 7 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===CentOS 7===&lt;br /&gt;
&lt;br /&gt;
The CentOS 7 installer won&#039;t install to a disk smaller then 10-20GB but its still possible to copy the finished install into a smaller image for easier distribution and cloning.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with xfs. We are making the file 20GB so CentOS will install.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=centos_ks.img bs=1M count=1 seek=20000&lt;br /&gt;
 mkfs.xfs centos_ks.img&lt;br /&gt;
&lt;br /&gt;
The easiest way to install CentOS is using the kickstart system. You will need a webserver to host the kickstart config file. You will also need a kernel and ramdisk image from a CentOS mirror. &lt;br /&gt;
&lt;br /&gt;
Download the vmlinuz and initrd.img files from your favorite CentOS mirror.&lt;br /&gt;
&lt;br /&gt;
http://mirror.centos.org/centos/7/os/x86_64/images/pxeboot/&lt;br /&gt;
&lt;br /&gt;
You will be booting the CentOS kickstart image with these files. &lt;br /&gt;
&lt;br /&gt;
Here is the kickstart config that will need to be put on a webserver. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#version=1.0.0&lt;br /&gt;
&lt;br /&gt;
install&lt;br /&gt;
&lt;br /&gt;
# System authorization information&lt;br /&gt;
auth --enableshadow --passalgo=sha512&lt;br /&gt;
# Use network installation&lt;br /&gt;
url --url=&amp;quot;http://mirror.centos.org/centos/7/os/x86_64/&amp;quot;&lt;br /&gt;
# Use text mode install&lt;br /&gt;
text&lt;br /&gt;
# Run the Setup Agent on first boot&lt;br /&gt;
firstboot --enable&lt;br /&gt;
ignoredisk --only-use=xvda&lt;br /&gt;
# Keyboard layouts&lt;br /&gt;
keyboard --vckeymap=us --xlayouts=&#039;&#039;&lt;br /&gt;
# System language&lt;br /&gt;
lang en_US.UTF-8&lt;br /&gt;
&lt;br /&gt;
# Network information&lt;br /&gt;
network --hostname=centos7 --bootproto=dhcp --device=eth0 --onboot=on&lt;br /&gt;
&lt;br /&gt;
# Root password&lt;br /&gt;
rootpw --iscrypted $6$QgAmrd86o3M8qQIa$0LMJo9zwIe3j1e.hnc5G.6bXyhduRF03McofIDGSb7lrso6mbl9kt.WzxYOCXysC4Fb6Rdlu8OkXNAL22BLUW0&lt;br /&gt;
# System services&lt;br /&gt;
services --enabled=&amp;quot;network&amp;quot;&lt;br /&gt;
# Do not configure the X Window System&lt;br /&gt;
skipx&lt;br /&gt;
# System timezone&lt;br /&gt;
timezone Etc/UTC --isUtc&lt;br /&gt;
# System bootloader configuration&lt;br /&gt;
bootloader --timeout=5 --driveorder=xvda --append=&amp;quot;console=hvc0&amp;quot;&lt;br /&gt;
# Partition clearing information&lt;br /&gt;
zerombr&lt;br /&gt;
clearpart --all --initlabel --drives=xvda&lt;br /&gt;
part / --fstype=xfs --grow --size=1 --asprimary --ondisk=xvda&lt;br /&gt;
&lt;br /&gt;
# Shutdown when the kickstart is done&lt;br /&gt;
halt&lt;br /&gt;
&lt;br /&gt;
%packages&lt;br /&gt;
@core --nodefaults&lt;br /&gt;
-grub2&lt;br /&gt;
-chrony&lt;br /&gt;
-NetworkManager&lt;br /&gt;
-NetworkManager-team&lt;br /&gt;
-NetworkManager-tui&lt;br /&gt;
-NetworkManager-libnm&lt;br /&gt;
-wireless-tools&lt;br /&gt;
-plymouth&lt;br /&gt;
-fprintd-pam&lt;br /&gt;
-*-firmware&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%addon com_redhat_kdump --disable --reserve-mb=&#039;auto&#039;&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%anaconda&lt;br /&gt;
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok&lt;br /&gt;
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
%end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=63</id>
		<title>Linux/Xen/DomU/CentOS/CentOS 7</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=63"/>
		<updated>2019-01-20T22:51:48Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===CentOS 7===&lt;br /&gt;
&lt;br /&gt;
The CentOS 7 installer won&#039;t install to a disk smaller then 10-20GB but its still possible to copy the finished install into a smaller image for easier distribution and cloning.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with xfs. We are making the file 20GB so CentOS will install.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=centos_ks.img bs=1M count=1 seek=20000&lt;br /&gt;
 mkfs.xfs centos_ks.img&lt;br /&gt;
&lt;br /&gt;
The easiest way to install CentOS is using the kickstart system. You will need a webserver to host the kickstart config file. You will also need a kernel and ramdisk image from a CentOS mirror. &lt;br /&gt;
&lt;br /&gt;
Download the vmlinuz and initrd.img files from your favorite CentOS mirror.&lt;br /&gt;
&lt;br /&gt;
http://mirror.centos.org/centos/7/os/x86_64/images/pxeboot/&lt;br /&gt;
&lt;br /&gt;
You will be booting the CentOS kickstart image with these files. &lt;br /&gt;
&lt;br /&gt;
Here is the kickstart config that will need to be put on a webserver. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
#version=1.0.0&lt;br /&gt;
&lt;br /&gt;
install&lt;br /&gt;
&lt;br /&gt;
# System authorization information&lt;br /&gt;
auth --enableshadow --passalgo=sha512&lt;br /&gt;
# Use network installation&lt;br /&gt;
url --url=&amp;quot;http://mirror.centos.org/centos/7/os/x86_64/&amp;quot;&lt;br /&gt;
# Use text mode install&lt;br /&gt;
text&lt;br /&gt;
# Run the Setup Agent on first boot&lt;br /&gt;
firstboot --enable&lt;br /&gt;
ignoredisk --only-use=xvda&lt;br /&gt;
# Keyboard layouts&lt;br /&gt;
keyboard --vckeymap=us --xlayouts=&#039;&#039;&lt;br /&gt;
# System language&lt;br /&gt;
lang en_US.UTF-8&lt;br /&gt;
&lt;br /&gt;
# Network information&lt;br /&gt;
network --hostname=centos7 --bootproto=dhcp --device=eth0 --onboot=on&lt;br /&gt;
&lt;br /&gt;
# Root password&lt;br /&gt;
rootpw --iscrypted $6$QgAmrd86o3M8qQIa$0LMJo9zwIe3j1e.hnc5G.6bXyhduRF03McofIDGSb7lrso6mbl9kt.WzxYOCXysC4Fb6Rdlu8OkXNAL22BLUW0&lt;br /&gt;
# System services&lt;br /&gt;
services --enabled=&amp;quot;network&amp;quot;&lt;br /&gt;
# Do not configure the X Window System&lt;br /&gt;
skipx&lt;br /&gt;
# System timezone&lt;br /&gt;
timezone Etc/UTC --isUtc&lt;br /&gt;
# System bootloader configuration&lt;br /&gt;
bootloader --timeout=5 --driveorder=xvda --append=&amp;quot;console=hvc0&amp;quot;&lt;br /&gt;
# Partition clearing information&lt;br /&gt;
zerombr&lt;br /&gt;
clearpart --all --initlabel --drives=xvda&lt;br /&gt;
part / --fstype=xfs --grow --size=1 --asprimary --ondisk=xvda&lt;br /&gt;
&lt;br /&gt;
# Shutdown when the kickstart is done&lt;br /&gt;
halt&lt;br /&gt;
&lt;br /&gt;
%packages&lt;br /&gt;
@core --nodefaults&lt;br /&gt;
-grub2&lt;br /&gt;
-chrony&lt;br /&gt;
-NetworkManager&lt;br /&gt;
-NetworkManager-team&lt;br /&gt;
-NetworkManager-tui&lt;br /&gt;
-NetworkManager-libnm&lt;br /&gt;
-wireless-tools&lt;br /&gt;
-plymouth&lt;br /&gt;
-fprintd-pam&lt;br /&gt;
-*-firmware&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%addon com_redhat_kdump --disable --reserve-mb=&#039;auto&#039;&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%anaconda&lt;br /&gt;
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok&lt;br /&gt;
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
%end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=60</id>
		<title>Linux/Xen/DomU/CentOS/CentOS 7</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/CentOS/CentOS_7&amp;diff=60"/>
		<updated>2019-01-20T20:37:22Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: Created page with &amp;quot;===CentOS 7===  The CentOS 7 installer won&amp;#039;t install to a disk smaller then 10-20GB but its still possible to copy the finished install into a smaller image for easier distrib...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===CentOS 7===&lt;br /&gt;
&lt;br /&gt;
The CentOS 7 installer won&#039;t install to a disk smaller then 10-20GB but its still possible to copy the finished install into a smaller image for easier distribution and cloning.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with xfs. We are making the file 20GB so CentOS will install.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=centos_ks.img bs=1M count=1 seek=20000&lt;br /&gt;
 mkfs.xfs centos_ks.img&lt;br /&gt;
&lt;br /&gt;
The easiest way to install CentOS is using the kickstart system. You will need a webserver to host the kickstart config file. You will also need a kernel and ramdisk image from a CentOS mirror. &lt;br /&gt;
&lt;br /&gt;
Download the vmlinuz and initrd.img files from your favorite CentOS mirror.&lt;br /&gt;
&lt;br /&gt;
http://mirror.centos.org/centos/7/os/x86_64/images/pxeboot/&lt;br /&gt;
&lt;br /&gt;
You will be booting the CentOS kickstart image with these files. &lt;br /&gt;
&lt;br /&gt;
Here is the kickstart config that will need to be put on a webserver. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#version=1.0.0&lt;br /&gt;
&lt;br /&gt;
install&lt;br /&gt;
&lt;br /&gt;
# System authorization information&lt;br /&gt;
auth --enableshadow --passalgo=sha512&lt;br /&gt;
# Use network installation&lt;br /&gt;
url --url=&amp;quot;http://mirror.centos.org/centos/7/os/x86_64/&amp;quot;&lt;br /&gt;
# Use text mode install&lt;br /&gt;
text&lt;br /&gt;
# Run the Setup Agent on first boot&lt;br /&gt;
firstboot --enable&lt;br /&gt;
ignoredisk --only-use=xvda&lt;br /&gt;
# Keyboard layouts&lt;br /&gt;
keyboard --vckeymap=us --xlayouts=&#039;&#039;&lt;br /&gt;
# System language&lt;br /&gt;
lang en_US.UTF-8&lt;br /&gt;
&lt;br /&gt;
# Network information&lt;br /&gt;
network --hostname=centos7 --bootproto=dhcp --device=eth0 --onboot=on&lt;br /&gt;
&lt;br /&gt;
# Root password&lt;br /&gt;
rootpw --iscrypted $6$QgAmrd86o3M8qQIa$0LMJo9zwIe3j1e.hnc5G.6bXyhduRF03McofIDGSb7lrso6mbl9kt.WzxYOCXysC4Fb6Rdlu8OkXNAL22BLUW0&lt;br /&gt;
# System services&lt;br /&gt;
services --enabled=&amp;quot;network&amp;quot;&lt;br /&gt;
# Do not configure the X Window System&lt;br /&gt;
skipx&lt;br /&gt;
# System timezone&lt;br /&gt;
timezone Etc/UTC --isUtc&lt;br /&gt;
# System bootloader configuration&lt;br /&gt;
bootloader --timeout=5 --driveorder=xvda --append=&amp;quot;console=hvc0&amp;quot;&lt;br /&gt;
# Partition clearing information&lt;br /&gt;
zerombr&lt;br /&gt;
clearpart --all --initlabel --drives=xvda&lt;br /&gt;
part / --fstype=xfs --grow --size=1 --asprimary --ondisk=xvda&lt;br /&gt;
&lt;br /&gt;
# Shutdown when the kickstart is done&lt;br /&gt;
halt&lt;br /&gt;
&lt;br /&gt;
%packages&lt;br /&gt;
@core --nodefaults&lt;br /&gt;
-grub2&lt;br /&gt;
-chrony&lt;br /&gt;
-NetworkManager&lt;br /&gt;
-NetworkManager-team&lt;br /&gt;
-NetworkManager-tui&lt;br /&gt;
-NetworkManager-libnm&lt;br /&gt;
-wireless-tools&lt;br /&gt;
-plymouth&lt;br /&gt;
-fprintd-pam&lt;br /&gt;
-*-firmware&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%addon com_redhat_kdump --disable --reserve-mb=&#039;auto&#039;&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
%anaconda&lt;br /&gt;
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok&lt;br /&gt;
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty&lt;br /&gt;
%end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/Building_Xen_DomU_images&amp;diff=59</id>
		<title>Linux/Xen/Building Xen DomU images</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/Building_Xen_DomU_images&amp;diff=59"/>
		<updated>2019-01-20T19:55:52Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==CentOS==&lt;br /&gt;
&lt;br /&gt;
===[[Linux/Xen/DomU/CentOS/CentOS 7|CentOS 7]]===&lt;br /&gt;
&lt;br /&gt;
==Debian==&lt;br /&gt;
&lt;br /&gt;
==Devuan==&lt;br /&gt;
&lt;br /&gt;
===[[Linux/Xen/DomU/Devuan/Devuan Jessie|Devuan Jessie]]===&lt;br /&gt;
===[[Linux/Xen/DomU/Devuan/Devuan ASCII|Devuan ASCII]]===&lt;br /&gt;
&lt;br /&gt;
==Ubuntu==&lt;br /&gt;
&lt;br /&gt;
===[[Linux/Xen/DomU/Ubuntu/Ubuntu 13.10|Ubuntu 13.10]]===&lt;br /&gt;
&lt;br /&gt;
===[[Linux/Xen/DomU/Ubuntu/Ubuntu 14.04 LTS|Ubuntu 14.04 LTS]]===&lt;br /&gt;
&lt;br /&gt;
===[[Linux/Xen/DomU/Ubuntu/Ubuntu 18.04 LTS|Ubuntu 18.04 LTS]]===&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=58</id>
		<title>Linux/Xen/DomU/Devuan/Devuan ASCII</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=58"/>
		<updated>2018-12-23T19:21:00Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Final Cleanup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan ASCII===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_ascii.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_ascii.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_ascii.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase ascii /mnt/img http://auto.mirror.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-updates main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-`dpkg --print-architecture`&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 19:05:39.647919366 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,11 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Remove the old leases file so that the VM will request a fresh IP address each time.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /var/lib/dhcp/dhclient.eth0.leases&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=57</id>
		<title>Linux/Xen/DomU/Devuan/Devuan ASCII</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=57"/>
		<updated>2018-12-23T19:08:14Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* SSH host keys fix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan ASCII===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_ascii.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_ascii.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_ascii.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase ascii /mnt/img http://auto.mirror.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-updates main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-`dpkg --print-architecture`&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 19:05:39.647919366 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,11 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=56</id>
		<title>Linux/Xen/DomU/Devuan/Devuan ASCII</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=56"/>
		<updated>2018-12-23T19:03:48Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Devuan ASCII */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan ASCII===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_ascii.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_ascii.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_ascii.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase ascii /mnt/img http://auto.mirror.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-updates main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-`dpkg --print-architecture`&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 18:52:01.653415639 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,12 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_dsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=55</id>
		<title>Linux/Xen/DomU/Devuan/Devuan ASCII</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=55"/>
		<updated>2018-12-23T19:02:49Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Final Cleanup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan ASCII===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_ascii.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_ascii.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_ascii.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase ascii /mnt/img http://auto.mirror.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-updates main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-`dpkg --print-architecture`&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The default udev rules for Devuan ignore Xen generated MAC addresses so you won&#039;t get a &#039;/etc/udev/rules.d/70-persistent-net.rules&#039; This causes your network interfaces not to come up.&lt;br /&gt;
&lt;br /&gt;
Edit &#039;/lib/udev/rules.d/75-persistent-net-generator.rules&#039; and comment these lines. Here&#039;s the changes in patch/diff format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
--- 75-persistent-net-generator.rules.old       2018-10-20 12:40:48.812000000 -0500&lt;br /&gt;
+++ 75-persistent-net-generator.rules   2018-10-20 12:41:35.264000000 -0500&lt;br /&gt;
@@ -26,7 +26,7 @@&lt;br /&gt;
                                        GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Xen virtual interfaces&lt;br /&gt;
-SUBSYSTEMS==&amp;quot;xen&amp;quot;,                     GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
+#SUBSYSTEMS==&amp;quot;xen&amp;quot;,                    GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore UML virtual interfaces&lt;br /&gt;
 DRIVERS==&amp;quot;uml-netdev&amp;quot;,                 GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
@@ -78,7 +78,7 @@&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:15:5d:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;52:54:00:*|54:52:00:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;08:00:27:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
-ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
+#ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,         ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Windows Azure Hyper-V virtual interfaces&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:03:ff:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 18:52:01.653415639 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,12 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_dsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=54</id>
		<title>Linux/Xen/DomU/Devuan/Devuan ASCII</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=54"/>
		<updated>2018-12-23T18:59:19Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* SSH host keys fix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan ASCII===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_ascii.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_ascii.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_ascii.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase ascii /mnt/img http://auto.mirror.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-updates main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-`dpkg --print-architecture`&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The default udev rules for Devuan ignore Xen generated MAC addresses so you won&#039;t get a &#039;/etc/udev/rules.d/70-persistent-net.rules&#039; This causes your network interfaces not to come up.&lt;br /&gt;
&lt;br /&gt;
Edit &#039;/lib/udev/rules.d/75-persistent-net-generator.rules&#039; and comment these lines. Here&#039;s the changes in patch/diff format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
--- 75-persistent-net-generator.rules.old       2018-10-20 12:40:48.812000000 -0500&lt;br /&gt;
+++ 75-persistent-net-generator.rules   2018-10-20 12:41:35.264000000 -0500&lt;br /&gt;
@@ -26,7 +26,7 @@&lt;br /&gt;
                                        GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Xen virtual interfaces&lt;br /&gt;
-SUBSYSTEMS==&amp;quot;xen&amp;quot;,                     GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
+#SUBSYSTEMS==&amp;quot;xen&amp;quot;,                    GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore UML virtual interfaces&lt;br /&gt;
 DRIVERS==&amp;quot;uml-netdev&amp;quot;,                 GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
@@ -78,7 +78,7 @@&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:15:5d:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;52:54:00:*|54:52:00:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;08:00:27:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
-ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
+#ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,         ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Windows Azure Hyper-V virtual interfaces&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:03:ff:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2018-12-16 21:33:01.193415639 +0000&lt;br /&gt;
+++ ssh	2018-12-23 18:52:01.653415639 +0000&lt;br /&gt;
@@ -72,6 +72,57 @@ check_privsep_dir() {&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 check_config() {&lt;br /&gt;
     if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then&lt;br /&gt;
 	/usr/sbin/sshd $SSHD_OPTS -t || exit 1&lt;br /&gt;
@@ -86,6 +137,12 @@ case &amp;quot;$1&amp;quot; in&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_dsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove /etc/udev/rules.d/70-persistent-net.rules so that network comes up clean when the image is booted for the first time.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=53</id>
		<title>Linux/Xen/DomU/Devuan/Devuan ASCII</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=53"/>
		<updated>2018-12-23T18:56:59Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan ASCII===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_ascii.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_ascii.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_ascii.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase ascii /mnt/img http://auto.mirror.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-updates main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-`dpkg --print-architecture`&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The default udev rules for Devuan ignore Xen generated MAC addresses so you won&#039;t get a &#039;/etc/udev/rules.d/70-persistent-net.rules&#039; This causes your network interfaces not to come up.&lt;br /&gt;
&lt;br /&gt;
Edit &#039;/lib/udev/rules.d/75-persistent-net-generator.rules&#039; and comment these lines. Here&#039;s the changes in patch/diff format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
--- 75-persistent-net-generator.rules.old       2018-10-20 12:40:48.812000000 -0500&lt;br /&gt;
+++ 75-persistent-net-generator.rules   2018-10-20 12:41:35.264000000 -0500&lt;br /&gt;
@@ -26,7 +26,7 @@&lt;br /&gt;
                                        GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Xen virtual interfaces&lt;br /&gt;
-SUBSYSTEMS==&amp;quot;xen&amp;quot;,                     GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
+#SUBSYSTEMS==&amp;quot;xen&amp;quot;,                    GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore UML virtual interfaces&lt;br /&gt;
 DRIVERS==&amp;quot;uml-netdev&amp;quot;,                 GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
@@ -78,7 +78,7 @@&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:15:5d:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;52:54:00:*|54:52:00:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;08:00:27:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
-ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
+#ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,         ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Windows Azure Hyper-V virtual interfaces&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:03:ff:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2017-01-15 10:04:56.399284075 -0600&lt;br /&gt;
+++ ssh	2017-01-15 10:09:02.999284075 -0600&lt;br /&gt;
@@ -78,6 +78,74 @@&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA1_KEY=/etc/ssh/ssh_host_key&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+DSA_KEY=/etc/ssh/ssh_host_dsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_dsa_keygen() {&lt;br /&gt;
+        if [ ! -s $DSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 DSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $DSA_KEY&lt;br /&gt;
+                if test ! -f $DSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t dsa -f $DSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $DSA_KEY&lt;br /&gt;
+                        chmod 644 $DSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 export PATH=&amp;quot;${PATH:+$PATH:}/usr/sbin:/sbin&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
@@ -86,6 +154,12 @@&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_dsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove /etc/udev/rules.d/70-persistent-net.rules so that network comes up clean when the image is booted for the first time.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Ubuntu/Ubuntu_18.04_LTS&amp;diff=52</id>
		<title>Linux/Xen/DomU/Ubuntu/Ubuntu 18.04 LTS</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Ubuntu/Ubuntu_18.04_LTS&amp;diff=52"/>
		<updated>2018-12-14T18:50:33Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* SSH host keys fix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Ubuntu 18.04 LTS===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Ubuntu system. Does not have to be a 18.04 system. You will need to have debootstrap installed and may need to update debootstrap so it has the correct script for 18.04.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=ubuntu_bionic.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 ubuntu_bionic.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop ubuntu_bionic.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.m&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase --include=iproute2,net-tools,isc-dhcp-client,isc-dhcp-common,rsyslog  bionic /mnt/img/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install language-pack-en-base&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install Timezone data&lt;br /&gt;
&lt;br /&gt;
 apt-get install tzdata&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server and the full version of vim&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-4.15.0-42-generic&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Ubuntu 18.04 no longer used the traditional, &#039;/etc/network/interfaces&#039;. They have switched to netplan.io&lt;br /&gt;
&lt;br /&gt;
 apt-get install netplan.io&lt;br /&gt;
&lt;br /&gt;
Configure /etc/netplan/01-netcfg.yaml for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This file describes the network interfaces available on your system&lt;br /&gt;
# For more information, see netplan(5).&lt;br /&gt;
network:&lt;br /&gt;
  version: 2&lt;br /&gt;
  renderer: networkd&lt;br /&gt;
  ethernets:&lt;br /&gt;
    eth0:&lt;br /&gt;
      dhcp4: yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
In order for &amp;quot;xl console&amp;quot; to work we need to spawn a console on hvc0. So add &amp;quot;console=hvc0&amp;quot; to the kernel lines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Ubuntu 18.04.1 LTS, kernel 4.15.0-42-generic&lt;br /&gt;
root            (hd0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.15.0-42-generic root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.15.0-42-generic&lt;br /&gt;
&lt;br /&gt;
title           Ubuntu 18.04.1 LTS, kernel 4.15.0-42-generic (recovery mode)&lt;br /&gt;
root            (hd0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.15.0-42-generic root=/dev/xvda1 ro  single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.15.0-42-generic&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Ubuntu won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need a script to check the host keys and regenerate them if needed. The script will get called by systemd during sshd start/restart&lt;br /&gt;
&lt;br /&gt;
Ubuntu 18.04 is running OpenSSH version 7 and DSA keys are being deprecated so we don&#039;t need to generate a DSA host key. &lt;br /&gt;
&lt;br /&gt;
Create /usr/sbin/rebuild-sshd-keys and paste this in,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Some variables to make things more readable&lt;br /&gt;
KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
do_rsa_keygen() {&lt;br /&gt;
        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
                rm -f $RSA_KEY&lt;br /&gt;
                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $RSA_KEY&lt;br /&gt;
                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_ecdsa_keygen() {&lt;br /&gt;
        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
                rm -f $ECDSA_KEY&lt;br /&gt;
                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $ECDSA_KEY&lt;br /&gt;
                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_ed25519_keygen() {&lt;br /&gt;
        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
                rm -f $ED25519_KEY&lt;br /&gt;
                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $ED25519_KEY&lt;br /&gt;
                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_rsa_keygen&lt;br /&gt;
do_ecdsa_keygen&lt;br /&gt;
do_ed25519_keygen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 chmod 755 /usr/sbin/rebuild-sshd-keys&lt;br /&gt;
&lt;br /&gt;
Create a new systemd unit file, &amp;quot;/lib/systemd/system/rebuild-sshd-keys.service&amp;quot; and paste this in,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=OpenSSH Server Key Generation&lt;br /&gt;
ConditionFileNotEmpty=|!/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
ConditionFileNotEmpty=|!/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
ConditionFileNotEmpty=|!/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
PartOf=ssh.service ssh.socket&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=/usr/sbin/rebuild-sshd-keys&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;quot;/lib/systemd/system/ssh.service&amp;quot; and make these changes to use the new rebuild-sshd-keys.service unit file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- ssh.service.old     2018-12-09 23:51:39.687140401 +0000&lt;br /&gt;
+++ ssh.service 2018-12-09 23:53:14.364249439 +0000&lt;br /&gt;
@@ -1,7 +1,8 @@&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=OpenBSD Secure Shell server&lt;br /&gt;
-After=network.target auditd.service&lt;br /&gt;
+After=network.target auditd.service rebuild-sshd-keys.service&lt;br /&gt;
 ConditionPathExists=!/etc/ssh/sshd_not_to_be_run&lt;br /&gt;
+Wants=rebuild-sshd-keys.service&lt;br /&gt;
&lt;br /&gt;
 [Service]&lt;br /&gt;
 EnvironmentFile=-/etc/default/ssh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable the new systemd unit files.&lt;br /&gt;
&lt;br /&gt;
 systemctl enable rebuild-sshd-keys.service&lt;br /&gt;
 systemctl enable ssh.service&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;bionic&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Ubuntu/Ubuntu_18.04_LTS&amp;diff=51</id>
		<title>Linux/Xen/DomU/Ubuntu/Ubuntu 18.04 LTS</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Ubuntu/Ubuntu_18.04_LTS&amp;diff=51"/>
		<updated>2018-12-14T17:36:53Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Network */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Ubuntu 18.04 LTS===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Ubuntu system. Does not have to be a 18.04 system. You will need to have debootstrap installed and may need to update debootstrap so it has the correct script for 18.04.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=ubuntu_bionic.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 ubuntu_bionic.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop ubuntu_bionic.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.m&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase --include=iproute2,net-tools,isc-dhcp-client,isc-dhcp-common,rsyslog  bionic /mnt/img/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install language-pack-en-base&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install Timezone data&lt;br /&gt;
&lt;br /&gt;
 apt-get install tzdata&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server and the full version of vim&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-4.15.0-42-generic&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Ubuntu 18.04 no longer used the traditional, &#039;/etc/network/interfaces&#039;. They have switched to netplan.io&lt;br /&gt;
&lt;br /&gt;
 apt-get install netplan.io&lt;br /&gt;
&lt;br /&gt;
Configure /etc/netplan/01-netcfg.yaml for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This file describes the network interfaces available on your system&lt;br /&gt;
# For more information, see netplan(5).&lt;br /&gt;
network:&lt;br /&gt;
  version: 2&lt;br /&gt;
  renderer: networkd&lt;br /&gt;
  ethernets:&lt;br /&gt;
    eth0:&lt;br /&gt;
      dhcp4: yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
 #PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
In order for &amp;quot;xl console&amp;quot; to work we need to spawn a console on hvc0. So add &amp;quot;console=hvc0&amp;quot; to the kernel lines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Ubuntu 18.04.1 LTS, kernel 4.15.0-42-generic&lt;br /&gt;
root            (hd0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.15.0-42-generic root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.15.0-42-generic&lt;br /&gt;
&lt;br /&gt;
title           Ubuntu 18.04.1 LTS, kernel 4.15.0-42-generic (recovery mode)&lt;br /&gt;
root            (hd0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.15.0-42-generic root=/dev/xvda1 ro  single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.15.0-42-generic&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Ubuntu won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need a script to check the host keys and regenerate them if needed. The script will get called by systemd during sshd start/restart&lt;br /&gt;
&lt;br /&gt;
Ubuntu 18.04 is running OpenSSH version 7 and DSA keys are being deprecated so we don&#039;t need to generate a DSA host key. &lt;br /&gt;
&lt;br /&gt;
Create /usr/sbin/rebuild-sshd-keys and paste this in,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Some variables to make things more readable&lt;br /&gt;
KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
do_rsa_keygen() {&lt;br /&gt;
        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
                rm -f $RSA_KEY&lt;br /&gt;
                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $RSA_KEY&lt;br /&gt;
                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_ecdsa_keygen() {&lt;br /&gt;
        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
                rm -f $ECDSA_KEY&lt;br /&gt;
                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $ECDSA_KEY&lt;br /&gt;
                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_ed25519_keygen() {&lt;br /&gt;
        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
                rm -f $ED25519_KEY&lt;br /&gt;
                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $ED25519_KEY&lt;br /&gt;
                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_rsa_keygen&lt;br /&gt;
do_ecdsa_keygen&lt;br /&gt;
do_ed25519_keygen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 chmod 755 /usr/sbin/rebuild-sshd-keys&lt;br /&gt;
&lt;br /&gt;
Create a new systemd unit file, &amp;quot;/lib/systemd/system/rebuild-sshd-keys.service&amp;quot; and paste this in,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=OpenSSH Server Key Generation&lt;br /&gt;
ConditionFileNotEmpty=|!/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
ConditionFileNotEmpty=|!/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
ConditionFileNotEmpty=|!/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
PartOf=ssh.service ssh.socket&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=/usr/sbin/rebuild-sshd-keys&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;quot;/lib/systemd/system/ssh.service&amp;quot; and make these changes to use the new rebuild-sshd-keys.service unit file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- ssh.service.old     2018-12-09 23:51:39.687140401 +0000&lt;br /&gt;
+++ ssh.service 2018-12-09 23:53:14.364249439 +0000&lt;br /&gt;
@@ -1,7 +1,8 @@&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=OpenBSD Secure Shell server&lt;br /&gt;
-After=network.target auditd.service&lt;br /&gt;
+After=network.target auditd.service rebuild-sshd-keys.service&lt;br /&gt;
 ConditionPathExists=!/etc/ssh/sshd_not_to_be_run&lt;br /&gt;
+Wants=rebuild-sshd-keys.service&lt;br /&gt;
&lt;br /&gt;
 [Service]&lt;br /&gt;
 EnvironmentFile=-/etc/default/ssh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;bionic&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Ubuntu/Ubuntu_18.04_LTS&amp;diff=50</id>
		<title>Linux/Xen/DomU/Ubuntu/Ubuntu 18.04 LTS</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Ubuntu/Ubuntu_18.04_LTS&amp;diff=50"/>
		<updated>2018-12-14T17:36:16Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Network */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Ubuntu 18.04 LTS===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Ubuntu system. Does not have to be a 18.04 system. You will need to have debootstrap installed and may need to update debootstrap so it has the correct script for 18.04.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=ubuntu_bionic.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 ubuntu_bionic.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop ubuntu_bionic.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.m&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase --include=iproute2,net-tools,isc-dhcp-client,isc-dhcp-common,rsyslog  bionic /mnt/img/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install language-pack-en-base&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install Timezone data&lt;br /&gt;
&lt;br /&gt;
 apt-get install tzdata&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server and the full version of vim&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-4.15.0-42-generic&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Ubuntu 18.04 no longer used the traditional, &#039;/etc/network/interfaces&#039;. They have switched to netplan.io&lt;br /&gt;
&lt;br /&gt;
 apt-get install netplan.io&lt;br /&gt;
&lt;br /&gt;
Configure /etc/netplan/01-netcfg.yaml for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This file describes the network interfaces available on your system&lt;br /&gt;
# For more information, see netplan(5).&lt;br /&gt;
network:&lt;br /&gt;
  version: 2&lt;br /&gt;
  renderer: networkd&lt;br /&gt;
  ethernets:&lt;br /&gt;
    eth0:&lt;br /&gt;
      dhcp4: yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to allow root logins over SSH. &lt;br /&gt;
&lt;br /&gt;
Edit /etc/ssh/sshd_config and change,&lt;br /&gt;
&lt;br /&gt;
#PermitRootLogin prohibit-password&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
PermitRootLogin yes&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
In order for &amp;quot;xl console&amp;quot; to work we need to spawn a console on hvc0. So add &amp;quot;console=hvc0&amp;quot; to the kernel lines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Ubuntu 18.04.1 LTS, kernel 4.15.0-42-generic&lt;br /&gt;
root            (hd0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.15.0-42-generic root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.15.0-42-generic&lt;br /&gt;
&lt;br /&gt;
title           Ubuntu 18.04.1 LTS, kernel 4.15.0-42-generic (recovery mode)&lt;br /&gt;
root            (hd0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.15.0-42-generic root=/dev/xvda1 ro  single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.15.0-42-generic&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Ubuntu won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need a script to check the host keys and regenerate them if needed. The script will get called by systemd during sshd start/restart&lt;br /&gt;
&lt;br /&gt;
Ubuntu 18.04 is running OpenSSH version 7 and DSA keys are being deprecated so we don&#039;t need to generate a DSA host key. &lt;br /&gt;
&lt;br /&gt;
Create /usr/sbin/rebuild-sshd-keys and paste this in,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Some variables to make things more readable&lt;br /&gt;
KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
do_rsa_keygen() {&lt;br /&gt;
        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
                rm -f $RSA_KEY&lt;br /&gt;
                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $RSA_KEY&lt;br /&gt;
                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_ecdsa_keygen() {&lt;br /&gt;
        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
                rm -f $ECDSA_KEY&lt;br /&gt;
                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $ECDSA_KEY&lt;br /&gt;
                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_ed25519_keygen() {&lt;br /&gt;
        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
                rm -f $ED25519_KEY&lt;br /&gt;
                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $ED25519_KEY&lt;br /&gt;
                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_rsa_keygen&lt;br /&gt;
do_ecdsa_keygen&lt;br /&gt;
do_ed25519_keygen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 chmod 755 /usr/sbin/rebuild-sshd-keys&lt;br /&gt;
&lt;br /&gt;
Create a new systemd unit file, &amp;quot;/lib/systemd/system/rebuild-sshd-keys.service&amp;quot; and paste this in,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=OpenSSH Server Key Generation&lt;br /&gt;
ConditionFileNotEmpty=|!/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
ConditionFileNotEmpty=|!/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
ConditionFileNotEmpty=|!/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
PartOf=ssh.service ssh.socket&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=/usr/sbin/rebuild-sshd-keys&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;quot;/lib/systemd/system/ssh.service&amp;quot; and make these changes to use the new rebuild-sshd-keys.service unit file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- ssh.service.old     2018-12-09 23:51:39.687140401 +0000&lt;br /&gt;
+++ ssh.service 2018-12-09 23:53:14.364249439 +0000&lt;br /&gt;
@@ -1,7 +1,8 @@&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=OpenBSD Secure Shell server&lt;br /&gt;
-After=network.target auditd.service&lt;br /&gt;
+After=network.target auditd.service rebuild-sshd-keys.service&lt;br /&gt;
 ConditionPathExists=!/etc/ssh/sshd_not_to_be_run&lt;br /&gt;
+Wants=rebuild-sshd-keys.service&lt;br /&gt;
&lt;br /&gt;
 [Service]&lt;br /&gt;
 EnvironmentFile=-/etc/default/ssh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;bionic&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Ubuntu/Ubuntu_18.04_LTS&amp;diff=49</id>
		<title>Linux/Xen/DomU/Ubuntu/Ubuntu 18.04 LTS</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Ubuntu/Ubuntu_18.04_LTS&amp;diff=49"/>
		<updated>2018-12-14T00:55:56Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Ubuntu 18.04 LTS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Ubuntu 18.04 LTS===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Ubuntu system. Does not have to be a 18.04 system. You will need to have debootstrap installed and may need to update debootstrap so it has the correct script for 18.04.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=ubuntu_bionic.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 ubuntu_bionic.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop ubuntu_bionic.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.m&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase --include=iproute2,net-tools,isc-dhcp-client,isc-dhcp-common,rsyslog  bionic /mnt/img/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install language-pack-en-base&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install Timezone data&lt;br /&gt;
&lt;br /&gt;
 apt-get install tzdata&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server and the full version of vim&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-4.15.0-42-generic&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Ubuntu 18.04 no longer used the traditional, &#039;/etc/network/interfaces&#039;. They have switched to netplan.io&lt;br /&gt;
&lt;br /&gt;
 apt-get install netplan.io&lt;br /&gt;
&lt;br /&gt;
Configure /etc/netplan/01-netcfg.yaml for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This file describes the network interfaces available on your system&lt;br /&gt;
# For more information, see netplan(5).&lt;br /&gt;
network:&lt;br /&gt;
  version: 2&lt;br /&gt;
  renderer: networkd&lt;br /&gt;
  ethernets:&lt;br /&gt;
    eth0:&lt;br /&gt;
      dhcp4: yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
In order for &amp;quot;xl console&amp;quot; to work we need to spawn a console on hvc0. So add &amp;quot;console=hvc0&amp;quot; to the kernel lines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Ubuntu 18.04.1 LTS, kernel 4.15.0-42-generic&lt;br /&gt;
root            (hd0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.15.0-42-generic root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.15.0-42-generic&lt;br /&gt;
&lt;br /&gt;
title           Ubuntu 18.04.1 LTS, kernel 4.15.0-42-generic (recovery mode)&lt;br /&gt;
root            (hd0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.15.0-42-generic root=/dev/xvda1 ro  single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.15.0-42-generic&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Ubuntu won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need a script to check the host keys and regenerate them if needed. The script will get called by systemd during sshd start/restart&lt;br /&gt;
&lt;br /&gt;
Ubuntu 18.04 is running OpenSSH version 7 and DSA keys are being deprecated so we don&#039;t need to generate a DSA host key. &lt;br /&gt;
&lt;br /&gt;
Create /usr/sbin/rebuild-sshd-keys and paste this in,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Some variables to make things more readable&lt;br /&gt;
KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
do_rsa_keygen() {&lt;br /&gt;
        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
                rm -f $RSA_KEY&lt;br /&gt;
                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $RSA_KEY&lt;br /&gt;
                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_ecdsa_keygen() {&lt;br /&gt;
        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
                rm -f $ECDSA_KEY&lt;br /&gt;
                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $ECDSA_KEY&lt;br /&gt;
                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_ed25519_keygen() {&lt;br /&gt;
        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
                rm -f $ED25519_KEY&lt;br /&gt;
                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $ED25519_KEY&lt;br /&gt;
                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_rsa_keygen&lt;br /&gt;
do_ecdsa_keygen&lt;br /&gt;
do_ed25519_keygen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 chmod 755 /usr/sbin/rebuild-sshd-keys&lt;br /&gt;
&lt;br /&gt;
Create a new systemd unit file, &amp;quot;/lib/systemd/system/rebuild-sshd-keys.service&amp;quot; and paste this in,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=OpenSSH Server Key Generation&lt;br /&gt;
ConditionFileNotEmpty=|!/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
ConditionFileNotEmpty=|!/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
ConditionFileNotEmpty=|!/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
PartOf=ssh.service ssh.socket&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=/usr/sbin/rebuild-sshd-keys&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;quot;/lib/systemd/system/ssh.service&amp;quot; and make these changes to use the new rebuild-sshd-keys.service unit file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- ssh.service.old     2018-12-09 23:51:39.687140401 +0000&lt;br /&gt;
+++ ssh.service 2018-12-09 23:53:14.364249439 +0000&lt;br /&gt;
@@ -1,7 +1,8 @@&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=OpenBSD Secure Shell server&lt;br /&gt;
-After=network.target auditd.service&lt;br /&gt;
+After=network.target auditd.service rebuild-sshd-keys.service&lt;br /&gt;
 ConditionPathExists=!/etc/ssh/sshd_not_to_be_run&lt;br /&gt;
+Wants=rebuild-sshd-keys.service&lt;br /&gt;
&lt;br /&gt;
 [Service]&lt;br /&gt;
 EnvironmentFile=-/etc/default/ssh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;bionic&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Ubuntu/Ubuntu_18.04_LTS&amp;diff=48</id>
		<title>Linux/Xen/DomU/Ubuntu/Ubuntu 18.04 LTS</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Ubuntu/Ubuntu_18.04_LTS&amp;diff=48"/>
		<updated>2018-12-10T00:03:18Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Ubuntu 18.04 LTS===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Ubuntu system. Does not have to be a 18.04 system. You will need to have debootstrap installed and may need to update debootstrap so it has the correct script for 18.04.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=ubuntu_bionic.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 ubuntu_bionic.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop ubuntu_bionic.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.m&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase --include=iproute2,net-tools,isc-dhcp-client,isc-dhcp-common  bionic /mnt/img/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install language-pack-en-base&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install Timezone data&lt;br /&gt;
&lt;br /&gt;
 apt-get install tzdata&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server and the full version of vim&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-4.15.0-42-generic&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
&lt;br /&gt;
====Network====&lt;br /&gt;
&lt;br /&gt;
Ubuntu 18.04 no longer used the traditional, &#039;/etc/network/interfaces&#039;. They have switched to netplan.io&lt;br /&gt;
&lt;br /&gt;
 apt-get install netplan.io&lt;br /&gt;
&lt;br /&gt;
Configure /etc/netplan/01-netcfg.yaml for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This file describes the network interfaces available on your system&lt;br /&gt;
# For more information, see netplan(5).&lt;br /&gt;
network:&lt;br /&gt;
  version: 2&lt;br /&gt;
  renderer: networkd&lt;br /&gt;
  ethernets:&lt;br /&gt;
    eth0:&lt;br /&gt;
      dhcp4: yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
In order for &amp;quot;xl console&amp;quot; to work we need to spawn a console on hvc0. So add &amp;quot;console=hvc0&amp;quot; to the kernel lines.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Ubuntu 18.04.1 LTS, kernel 4.15.0-42-generic&lt;br /&gt;
root            (hd0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.15.0-42-generic root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.15.0-42-generic&lt;br /&gt;
&lt;br /&gt;
title           Ubuntu 18.04.1 LTS, kernel 4.15.0-42-generic (recovery mode)&lt;br /&gt;
root            (hd0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.15.0-42-generic root=/dev/xvda1 ro  single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.15.0-42-generic&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Ubuntu won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need a script to check the host keys and regenerate them if needed. The script will get called by systemd during sshd start/restart&lt;br /&gt;
&lt;br /&gt;
Ubuntu 18.04 is running OpenSSH version 7 and DSA keys are being deprecated so we don&#039;t need to generate a DSA host key. &lt;br /&gt;
&lt;br /&gt;
Create /usr/sbin/rebuild-sshd-keys and paste this in,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Some variables to make things more readable&lt;br /&gt;
KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
do_rsa_keygen() {&lt;br /&gt;
        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
                rm -f $RSA_KEY&lt;br /&gt;
                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $RSA_KEY&lt;br /&gt;
                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_ecdsa_keygen() {&lt;br /&gt;
        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
                rm -f $ECDSA_KEY&lt;br /&gt;
                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $ECDSA_KEY&lt;br /&gt;
                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_ed25519_keygen() {&lt;br /&gt;
        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
                rm -f $ED25519_KEY&lt;br /&gt;
                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $ED25519_KEY&lt;br /&gt;
                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_rsa_keygen&lt;br /&gt;
do_ecdsa_keygen&lt;br /&gt;
do_ed25519_keygen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 chmod 755 /usr/sbin/rebuild-sshd-keys&lt;br /&gt;
&lt;br /&gt;
Create a new systemd unit file, &amp;quot;/lib/systemd/system/rebuild-sshd-keys.service&amp;quot; and paste this in,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=OpenSSH Server Key Generation&lt;br /&gt;
ConditionFileNotEmpty=|!/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
ConditionFileNotEmpty=|!/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
ConditionFileNotEmpty=|!/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
PartOf=ssh.service ssh.socket&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=/usr/sbin/rebuild-sshd-keys&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit &amp;quot;/lib/systemd/system/ssh.service&amp;quot; and make these changes to use the new rebuild-sshd-keys.service unit file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- ssh.service.old     2018-12-09 23:51:39.687140401 +0000&lt;br /&gt;
+++ ssh.service 2018-12-09 23:53:14.364249439 +0000&lt;br /&gt;
@@ -1,7 +1,8 @@&lt;br /&gt;
 [Unit]&lt;br /&gt;
 Description=OpenBSD Secure Shell server&lt;br /&gt;
-After=network.target auditd.service&lt;br /&gt;
+After=network.target auditd.service rebuild-sshd-keys.service&lt;br /&gt;
 ConditionPathExists=!/etc/ssh/sshd_not_to_be_run&lt;br /&gt;
+Wants=rebuild-sshd-keys.service&lt;br /&gt;
&lt;br /&gt;
 [Service]&lt;br /&gt;
 EnvironmentFile=-/etc/default/ssh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;bionic&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=47</id>
		<title>Linux/Xen/DomU/Devuan/Devuan ASCII</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=47"/>
		<updated>2018-11-18T21:31:55Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan ASCII===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_ascii.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_ascii.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_ascii.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase ascii /mnt/img http://auto.mirror.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-updates main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-`dpkg --print-architecture`&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The default udev rules for Devuan ignore Xen generated MAC addresses so you won&#039;t get a &#039;/etc/udev/rules.d/70-persistent-net.rules&#039; This causes your network interfaces not to come up.&lt;br /&gt;
&lt;br /&gt;
Edit &#039;/lib/udev/rules.d/75-persistent-net-generator.rules&#039; and comment these lines. Here&#039;s the changes in patch/diff format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
--- 75-persistent-net-generator.rules.old       2018-10-20 12:40:48.812000000 -0500&lt;br /&gt;
+++ 75-persistent-net-generator.rules   2018-10-20 12:41:35.264000000 -0500&lt;br /&gt;
@@ -26,7 +26,7 @@&lt;br /&gt;
                                        GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Xen virtual interfaces&lt;br /&gt;
-SUBSYSTEMS==&amp;quot;xen&amp;quot;,                     GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
+#SUBSYSTEMS==&amp;quot;xen&amp;quot;,                    GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore UML virtual interfaces&lt;br /&gt;
 DRIVERS==&amp;quot;uml-netdev&amp;quot;,                 GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
@@ -78,7 +78,7 @@&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:15:5d:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;52:54:00:*|54:52:00:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;08:00:27:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
-ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
+#ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,         ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Windows Azure Hyper-V virtual interfaces&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:03:ff:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2017-01-15 10:04:56.399284075 -0600&lt;br /&gt;
+++ ssh	2017-01-15 10:09:02.999284075 -0600&lt;br /&gt;
@@ -78,6 +78,74 @@&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA1_KEY=/etc/ssh/ssh_host_key&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+DSA_KEY=/etc/ssh/ssh_host_dsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_dsa_keygen() {&lt;br /&gt;
+        if [ ! -s $DSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 DSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $DSA_KEY&lt;br /&gt;
+                if test ! -f $DSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t dsa -f $DSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $DSA_KEY&lt;br /&gt;
+                        chmod 644 $DSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 export PATH=&amp;quot;${PATH:+$PATH:}/usr/sbin:/sbin&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
@@ -86,6 +154,12 @@&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_dsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove /etc/udev/rules.d/70-persistent-net.rules so that network comes up clean when the image is booted for the first time.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Ubuntu/Ubuntu_18.04_LTS&amp;diff=46</id>
		<title>Linux/Xen/DomU/Ubuntu/Ubuntu 18.04 LTS</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Ubuntu/Ubuntu_18.04_LTS&amp;diff=46"/>
		<updated>2018-11-18T21:14:49Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Ubuntu 18.04 LTS===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Ubuntu system. Does not have to be a 18.04 system. You will need to have debootstrap installed and may need to update debootstrap so it has the correct script for 18.04.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=ubuntu_bionic.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 ubuntu_bionic.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop ubuntu_bionic.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap bionic /mnt/img/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install language-pack-en-base&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for debconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install Timezone data&lt;br /&gt;
&lt;br /&gt;
 apt-get install tzdata&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server and the full version of vim&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-generic&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Create the file &#039;/etc/init/hvc0.conf&#039; with this content.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This service maintains a getty on hvc0 from the point the system is&lt;br /&gt;
# started until it is shut down again.&lt;br /&gt;
&lt;br /&gt;
 start on stopped rc RUNLEVEL=[2345] and (&lt;br /&gt;
            not-container or&lt;br /&gt;
            container CONTAINER=lxc or&lt;br /&gt;
            container CONTAINER=lxc-libvirt)&lt;br /&gt;
 &lt;br /&gt;
 stop on runlevel [!2345]&lt;br /&gt;
&lt;br /&gt;
 respawn&lt;br /&gt;
exec /sbin/getty -8 38400 hvc0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default udev rules for 13.10 ignore Xen generated MAC addresses so you won&#039;t get a &#039;/etc/udev/rules.d/70-persistent-net.rules&#039; This causes your network interfaces not to come up.&lt;br /&gt;
&lt;br /&gt;
Edit &#039;/lib/udev/rules.d/75-persistent-net-generator.rules&#039; and comment these lines. Here&#039;s the changes in patch/diff format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
@@ -21,7 +21,7 @@ KERNEL!=&amp;quot;eth*|ath*|wlan*[0-9]|msh*|ra*|s&lt;br /&gt;
                                        GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Xen virtual interfaces&lt;br /&gt;
-SUBSYSTEMS==&amp;quot;xen&amp;quot;,                     GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
+#SUBSYSTEMS==&amp;quot;xen&amp;quot;,                    GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore UML virtual interfaces&lt;br /&gt;
 DRIVERS==&amp;quot;uml-netdev&amp;quot;,                 GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
@@ -75,7 +75,7 @@ ENV{MATCHADDR}==&amp;quot;00:0c:29:*|00:50:56:*|0&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:15:5d:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;52:54:00:*|54:52:00:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;08:00:27:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
-ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
+#ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,         ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Windows Azure Hyper-V virtual interfaces&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:03:ff:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Ubuntu 14.04&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-3.13.0-24-generic root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-3.13.0-24-generic&lt;br /&gt;
&lt;br /&gt;
title           Ubuntu 14.04 (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-3.13.0-24-generic root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-3.13.0-24-generic&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Ubuntu won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need a script to check the host keys and regenerate them if needed.&lt;br /&gt;
&lt;br /&gt;
Create /lib/init/ssh_gen_key and paste this in,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Some variables to make things more readable &lt;br /&gt;
KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
RSA1_KEY=/etc/ssh/ssh_host_key&lt;br /&gt;
RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
DSA_KEY=/etc/ssh/ssh_host_dsa_key&lt;br /&gt;
ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
do_rsa_keygen() {&lt;br /&gt;
        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
                rm -f $RSA_KEY&lt;br /&gt;
                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $RSA_KEY&lt;br /&gt;
                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_dsa_keygen() {&lt;br /&gt;
        if [ ! -s $DSA_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 DSA host key: &amp;quot;&lt;br /&gt;
                rm -f $DSA_KEY&lt;br /&gt;
                if test ! -f $DSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t dsa -f $DSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $DSA_KEY&lt;br /&gt;
                        chmod 644 $DSA_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_ecdsa_keygen() {&lt;br /&gt;
        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
                rm -f $ECDSA_KEY&lt;br /&gt;
                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $ECDSA_KEY&lt;br /&gt;
                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_ed25519_keygen() {&lt;br /&gt;
        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
                rm -f $ED25519_KEY&lt;br /&gt;
                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $ED25519_KEY&lt;br /&gt;
                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_rsa_keygen&lt;br /&gt;
do_dsa_keygen&lt;br /&gt;
do_ecdsa_keygen&lt;br /&gt;
do_ed25519_keygen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 chmod 755 /lib/init/ssh_gen_keys&lt;br /&gt;
&lt;br /&gt;
Edit /etc/init/ssh.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
@@ -20,6 +20,7 @@ pre-start script&lt;br /&gt;
     test -c /dev/null || { stop; exit 0; }&lt;br /&gt;
&lt;br /&gt;
     mkdir -p -m0755 /var/run/sshd&lt;br /&gt;
+    /lib/init/ssh_gen_keys&lt;br /&gt;
 end script&lt;br /&gt;
&lt;br /&gt;
 # if you used to set SSHD_OPTS in /etc/default/ssh, you can change the&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove /etc/udev/rules.d/70-persistent-net.rules so that network comes up clean when the image is booted for the first time.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;trusy&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Ubuntu/Ubuntu_18.04_LTS&amp;diff=45</id>
		<title>Linux/Xen/DomU/Ubuntu/Ubuntu 18.04 LTS</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Ubuntu/Ubuntu_18.04_LTS&amp;diff=45"/>
		<updated>2018-11-18T20:45:06Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: Created page with &amp;quot;===Ubuntu 18.04 LTS===  Start this process on a existing Ubuntu system. Does not have to be a 18.04 system. You will need to have debootstrap installed and may need to update...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Ubuntu 18.04 LTS===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Ubuntu system. Does not have to be a 18.04 system. You will need to have debootstrap installed and may need to update debootstrap so it has the correct script for 18.04.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=ubuntu_bionic.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 ubuntu_bionic.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop ubuntu_bionic.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap bionic /mnt/img/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get install language-pack-en-base&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server and the full version of vim&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-generic&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Create the file &#039;/etc/init/hvc0.conf&#039; with this content.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This service maintains a getty on hvc0 from the point the system is&lt;br /&gt;
# started until it is shut down again.&lt;br /&gt;
&lt;br /&gt;
 start on stopped rc RUNLEVEL=[2345] and (&lt;br /&gt;
            not-container or&lt;br /&gt;
            container CONTAINER=lxc or&lt;br /&gt;
            container CONTAINER=lxc-libvirt)&lt;br /&gt;
 &lt;br /&gt;
 stop on runlevel [!2345]&lt;br /&gt;
&lt;br /&gt;
 respawn&lt;br /&gt;
exec /sbin/getty -8 38400 hvc0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The default udev rules for 13.10 ignore Xen generated MAC addresses so you won&#039;t get a &#039;/etc/udev/rules.d/70-persistent-net.rules&#039; This causes your network interfaces not to come up.&lt;br /&gt;
&lt;br /&gt;
Edit &#039;/lib/udev/rules.d/75-persistent-net-generator.rules&#039; and comment these lines. Here&#039;s the changes in patch/diff format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
@@ -21,7 +21,7 @@ KERNEL!=&amp;quot;eth*|ath*|wlan*[0-9]|msh*|ra*|s&lt;br /&gt;
                                        GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Xen virtual interfaces&lt;br /&gt;
-SUBSYSTEMS==&amp;quot;xen&amp;quot;,                     GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
+#SUBSYSTEMS==&amp;quot;xen&amp;quot;,                    GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore UML virtual interfaces&lt;br /&gt;
 DRIVERS==&amp;quot;uml-netdev&amp;quot;,                 GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
@@ -75,7 +75,7 @@ ENV{MATCHADDR}==&amp;quot;00:0c:29:*|00:50:56:*|0&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:15:5d:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;52:54:00:*|54:52:00:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;08:00:27:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
-ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
+#ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,         ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Windows Azure Hyper-V virtual interfaces&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:03:ff:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Ubuntu 14.04&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-3.13.0-24-generic root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-3.13.0-24-generic&lt;br /&gt;
&lt;br /&gt;
title           Ubuntu 14.04 (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-3.13.0-24-generic root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-3.13.0-24-generic&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Ubuntu won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need a script to check the host keys and regenerate them if needed.&lt;br /&gt;
&lt;br /&gt;
Create /lib/init/ssh_gen_key and paste this in,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Some variables to make things more readable &lt;br /&gt;
KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
RSA1_KEY=/etc/ssh/ssh_host_key&lt;br /&gt;
RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
DSA_KEY=/etc/ssh/ssh_host_dsa_key&lt;br /&gt;
ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
do_rsa_keygen() {&lt;br /&gt;
        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
                rm -f $RSA_KEY&lt;br /&gt;
                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $RSA_KEY&lt;br /&gt;
                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_dsa_keygen() {&lt;br /&gt;
        if [ ! -s $DSA_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 DSA host key: &amp;quot;&lt;br /&gt;
                rm -f $DSA_KEY&lt;br /&gt;
                if test ! -f $DSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t dsa -f $DSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $DSA_KEY&lt;br /&gt;
                        chmod 644 $DSA_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_ecdsa_keygen() {&lt;br /&gt;
        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
                rm -f $ECDSA_KEY&lt;br /&gt;
                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $ECDSA_KEY&lt;br /&gt;
                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_ed25519_keygen() {&lt;br /&gt;
        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
                rm -f $ED25519_KEY&lt;br /&gt;
                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
                        chmod 600 $ED25519_KEY&lt;br /&gt;
                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
                else&lt;br /&gt;
			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
                        exit 1&lt;br /&gt;
                fi&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
do_rsa_keygen&lt;br /&gt;
do_dsa_keygen&lt;br /&gt;
do_ecdsa_keygen&lt;br /&gt;
do_ed25519_keygen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 chmod 755 /lib/init/ssh_gen_keys&lt;br /&gt;
&lt;br /&gt;
Edit /etc/init/ssh.conf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
@@ -20,6 +20,7 @@ pre-start script&lt;br /&gt;
     test -c /dev/null || { stop; exit 0; }&lt;br /&gt;
&lt;br /&gt;
     mkdir -p -m0755 /var/run/sshd&lt;br /&gt;
+    /lib/init/ssh_gen_keys&lt;br /&gt;
 end script&lt;br /&gt;
&lt;br /&gt;
 # if you used to set SSHD_OPTS in /etc/default/ssh, you can change the&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove /etc/udev/rules.d/70-persistent-net.rules so that network comes up clean when the image is booted for the first time.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;trusy&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/Building_Xen_DomU_images&amp;diff=44</id>
		<title>Linux/Xen/Building Xen DomU images</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/Building_Xen_DomU_images&amp;diff=44"/>
		<updated>2018-11-18T20:32:20Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Ubuntu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Debian==&lt;br /&gt;
&lt;br /&gt;
==Devuan==&lt;br /&gt;
&lt;br /&gt;
===[[Linux/Xen/DomU/Devuan/Devuan Jessie|Devuan Jessie]]===&lt;br /&gt;
===[[Linux/Xen/DomU/Devuan/Devuan ASCII|Devuan ASCII]]===&lt;br /&gt;
&lt;br /&gt;
==Ubuntu==&lt;br /&gt;
&lt;br /&gt;
===[[Linux/Xen/DomU/Ubuntu/Ubuntu 13.10|Ubuntu 13.10]]===&lt;br /&gt;
&lt;br /&gt;
===[[Linux/Xen/DomU/Ubuntu/Ubuntu 14.04 LTS|Ubuntu 14.04 LTS]]===&lt;br /&gt;
&lt;br /&gt;
===[[Linux/Xen/DomU/Ubuntu/Ubuntu 18.04 LTS|Ubuntu 18.04 LTS]]===&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=43</id>
		<title>Linux/Xen/DomU/Devuan/Devuan ASCII</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=43"/>
		<updated>2018-10-20T17:46:32Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Devuan ASCII */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan ASCII===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_ascii.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_ascii.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_ascii.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase ascii /mnt/img http://auto.mirror.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-updates main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for depconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-`dpkg --print-architecture`&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The default udev rules for Devuan ignore Xen generated MAC addresses so you won&#039;t get a &#039;/etc/udev/rules.d/70-persistent-net.rules&#039; This causes your network interfaces not to come up.&lt;br /&gt;
&lt;br /&gt;
Edit &#039;/lib/udev/rules.d/75-persistent-net-generator.rules&#039; and comment these lines. Here&#039;s the changes in patch/diff format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
--- 75-persistent-net-generator.rules.old       2018-10-20 12:40:48.812000000 -0500&lt;br /&gt;
+++ 75-persistent-net-generator.rules   2018-10-20 12:41:35.264000000 -0500&lt;br /&gt;
@@ -26,7 +26,7 @@&lt;br /&gt;
                                        GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Xen virtual interfaces&lt;br /&gt;
-SUBSYSTEMS==&amp;quot;xen&amp;quot;,                     GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
+#SUBSYSTEMS==&amp;quot;xen&amp;quot;,                    GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore UML virtual interfaces&lt;br /&gt;
 DRIVERS==&amp;quot;uml-netdev&amp;quot;,                 GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
@@ -78,7 +78,7 @@&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:15:5d:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;52:54:00:*|54:52:00:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;08:00:27:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
-ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
+#ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,         ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Windows Azure Hyper-V virtual interfaces&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:03:ff:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2017-01-15 10:04:56.399284075 -0600&lt;br /&gt;
+++ ssh	2017-01-15 10:09:02.999284075 -0600&lt;br /&gt;
@@ -78,6 +78,74 @@&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA1_KEY=/etc/ssh/ssh_host_key&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+DSA_KEY=/etc/ssh/ssh_host_dsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_dsa_keygen() {&lt;br /&gt;
+        if [ ! -s $DSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 DSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $DSA_KEY&lt;br /&gt;
+                if test ! -f $DSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t dsa -f $DSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $DSA_KEY&lt;br /&gt;
+                        chmod 644 $DSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 export PATH=&amp;quot;${PATH:+$PATH:}/usr/sbin:/sbin&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
@@ -86,6 +154,12 @@&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_dsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove /etc/udev/rules.d/70-persistent-net.rules so that network comes up clean when the image is booted for the first time.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=42</id>
		<title>Linux/Xen/DomU/Devuan/Devuan ASCII</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=42"/>
		<updated>2018-10-19T23:46:02Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* GRUB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan ASCII===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_ascii.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_ascii.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_ascii.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase ascii /mnt/img http://auto.mirror.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-updates main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for depconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-`dpkg --print-architecture`&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The default udev rules for Devuan ignore Xen generated MAC addresses so you won&#039;t get a &#039;/etc/udev/rules.d/70-persistent-net.rules&#039; This causes your network interfaces not to come up.&lt;br /&gt;
&lt;br /&gt;
Edit &#039;/lib/udev/rules.d/75-persistent-net-generator.rules&#039; and comment these lines. Here&#039;s the changes in patch/diff format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
@@ -21,7 +21,7 @@ KERNEL!=&amp;quot;eth*|ath*|wlan*[0-9]|msh*|ra*|s&lt;br /&gt;
                                        GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Xen virtual interfaces&lt;br /&gt;
-SUBSYSTEMS==&amp;quot;xen&amp;quot;,                     GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
+#SUBSYSTEMS==&amp;quot;xen&amp;quot;,                    GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore UML virtual interfaces&lt;br /&gt;
 DRIVERS==&amp;quot;uml-netdev&amp;quot;,                 GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
@@ -75,7 +75,7 @@ ENV{MATCHADDR}==&amp;quot;00:0c:29:*|00:50:56:*|0&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:15:5d:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;52:54:00:*|54:52:00:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;08:00:27:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
-ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
+#ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,         ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Windows Azure Hyper-V virtual interfaces&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:03:ff:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-4.9.0-7-686-pae root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-4.9.0-7-686-pae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2017-01-15 10:04:56.399284075 -0600&lt;br /&gt;
+++ ssh	2017-01-15 10:09:02.999284075 -0600&lt;br /&gt;
@@ -78,6 +78,74 @@&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA1_KEY=/etc/ssh/ssh_host_key&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+DSA_KEY=/etc/ssh/ssh_host_dsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_dsa_keygen() {&lt;br /&gt;
+        if [ ! -s $DSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 DSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $DSA_KEY&lt;br /&gt;
+                if test ! -f $DSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t dsa -f $DSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $DSA_KEY&lt;br /&gt;
+                        chmod 644 $DSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 export PATH=&amp;quot;${PATH:+$PATH:}/usr/sbin:/sbin&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
@@ -86,6 +154,12 @@&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_dsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove /etc/udev/rules.d/70-persistent-net.rules so that network comes up clean when the image is booted for the first time.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=41</id>
		<title>Linux/Xen/DomU/Devuan/Devuan ASCII</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_ASCII&amp;diff=41"/>
		<updated>2018-10-19T22:43:21Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: Created page with &amp;quot;===Devuan ASCII===  Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.  Create a empty image file and f...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan ASCII===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_ascii.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_ascii.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_ascii.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase ascii /mnt/img http://auto.mirror.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-updates main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged ascii-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for depconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-`dpkg --print-architecture`&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The default udev rules for Devuan ignore Xen generated MAC addresses so you won&#039;t get a &#039;/etc/udev/rules.d/70-persistent-net.rules&#039; This causes your network interfaces not to come up.&lt;br /&gt;
&lt;br /&gt;
Edit &#039;/lib/udev/rules.d/75-persistent-net-generator.rules&#039; and comment these lines. Here&#039;s the changes in patch/diff format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
@@ -21,7 +21,7 @@ KERNEL!=&amp;quot;eth*|ath*|wlan*[0-9]|msh*|ra*|s&lt;br /&gt;
                                        GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Xen virtual interfaces&lt;br /&gt;
-SUBSYSTEMS==&amp;quot;xen&amp;quot;,                     GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
+#SUBSYSTEMS==&amp;quot;xen&amp;quot;,                    GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore UML virtual interfaces&lt;br /&gt;
 DRIVERS==&amp;quot;uml-netdev&amp;quot;,                 GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
@@ -75,7 +75,7 @@ ENV{MATCHADDR}==&amp;quot;00:0c:29:*|00:50:56:*|0&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:15:5d:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;52:54:00:*|54:52:00:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;08:00:27:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
-ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
+#ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,         ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Windows Azure Hyper-V virtual interfaces&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:03:ff:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-3.16.0-4-amd64 root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-3.16.0-4-amd64&lt;br /&gt;
&lt;br /&gt;
title           Devuan ASCII (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-3.16.0-4-amd64 root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-3.16.0-4-amd64&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2017-01-15 10:04:56.399284075 -0600&lt;br /&gt;
+++ ssh	2017-01-15 10:09:02.999284075 -0600&lt;br /&gt;
@@ -78,6 +78,74 @@&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA1_KEY=/etc/ssh/ssh_host_key&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+DSA_KEY=/etc/ssh/ssh_host_dsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_dsa_keygen() {&lt;br /&gt;
+        if [ ! -s $DSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 DSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $DSA_KEY&lt;br /&gt;
+                if test ! -f $DSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t dsa -f $DSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $DSA_KEY&lt;br /&gt;
+                        chmod 644 $DSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 export PATH=&amp;quot;${PATH:+$PATH:}/usr/sbin:/sbin&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
@@ -86,6 +154,12 @@&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_dsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove /etc/udev/rules.d/70-persistent-net.rules so that network comes up clean when the image is booted for the first time.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/Building_Xen_DomU_images&amp;diff=40</id>
		<title>Linux/Xen/Building Xen DomU images</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/Building_Xen_DomU_images&amp;diff=40"/>
		<updated>2018-10-19T22:37:38Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Devuan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Debian==&lt;br /&gt;
&lt;br /&gt;
==Devuan==&lt;br /&gt;
&lt;br /&gt;
===[[Linux/Xen/DomU/Devuan/Devuan Jessie|Devuan Jessie]]===&lt;br /&gt;
===[[Linux/Xen/DomU/Devuan/Devuan ASCII|Devuan ASCII]]===&lt;br /&gt;
&lt;br /&gt;
==Ubuntu==&lt;br /&gt;
&lt;br /&gt;
===[[Linux/Xen/DomU/Ubuntu/Ubuntu 13.10|Ubuntu 13.10]]===&lt;br /&gt;
&lt;br /&gt;
===[[Linux/Xen/DomU/Ubuntu/Ubuntu 14.04 LTS|Ubuntu 14.04 LTS]]===&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Jessie&amp;diff=39</id>
		<title>Linux/Xen/DomU/Devuan/Devuan Jessie</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Jessie&amp;diff=39"/>
		<updated>2017-01-15T22:05:04Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Devuan Jessie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan Jessie===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_jessie.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_jessie.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_jessie.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase jessie /mnt/img http://auto.mirror.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged jessie main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged jessie-updates main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged jessie-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for depconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install networking systems&lt;br /&gt;
&lt;br /&gt;
 apt-get install netbase net-tools ifupdown inetutils-ping&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server, full version of vim and rsyslog&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-`dpkg --print-architecture`&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
 apt-get install rsyslog&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The default udev rules for Devuan ignore Xen generated MAC addresses so you won&#039;t get a &#039;/etc/udev/rules.d/70-persistent-net.rules&#039; This causes your network interfaces not to come up.&lt;br /&gt;
&lt;br /&gt;
Edit &#039;/lib/udev/rules.d/75-persistent-net-generator.rules&#039; and comment these lines. Here&#039;s the changes in patch/diff format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
@@ -21,7 +21,7 @@ KERNEL!=&amp;quot;eth*|ath*|wlan*[0-9]|msh*|ra*|s&lt;br /&gt;
                                        GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Xen virtual interfaces&lt;br /&gt;
-SUBSYSTEMS==&amp;quot;xen&amp;quot;,                     GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
+#SUBSYSTEMS==&amp;quot;xen&amp;quot;,                    GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore UML virtual interfaces&lt;br /&gt;
 DRIVERS==&amp;quot;uml-netdev&amp;quot;,                 GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
@@ -75,7 +75,7 @@ ENV{MATCHADDR}==&amp;quot;00:0c:29:*|00:50:56:*|0&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:15:5d:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;52:54:00:*|54:52:00:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;08:00:27:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
-ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
+#ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,         ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Windows Azure Hyper-V virtual interfaces&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:03:ff:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan Jessie&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-3.16.0-4-amd64 root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-3.16.0-4-amd64&lt;br /&gt;
&lt;br /&gt;
title           Devuan Jessie (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-3.16.0-4-amd64 root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-3.16.0-4-amd64&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2017-01-15 10:04:56.399284075 -0600&lt;br /&gt;
+++ ssh	2017-01-15 10:09:02.999284075 -0600&lt;br /&gt;
@@ -78,6 +78,74 @@&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA1_KEY=/etc/ssh/ssh_host_key&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+DSA_KEY=/etc/ssh/ssh_host_dsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_dsa_keygen() {&lt;br /&gt;
+        if [ ! -s $DSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 DSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $DSA_KEY&lt;br /&gt;
+                if test ! -f $DSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t dsa -f $DSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $DSA_KEY&lt;br /&gt;
+                        chmod 644 $DSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 export PATH=&amp;quot;${PATH:+$PATH:}/usr/sbin:/sbin&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
@@ -86,6 +154,12 @@&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_dsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove /etc/udev/rules.d/70-persistent-net.rules so that network comes up clean when the image is booted for the first time.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Jessie&amp;diff=38</id>
		<title>Linux/Xen/DomU/Devuan/Devuan Jessie</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Jessie&amp;diff=38"/>
		<updated>2017-01-15T21:59:13Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: /* Devuan Jessie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan Jessie===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_jessie.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_jessie.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_jessie.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase jessie /mnt/img http://auto.mirror.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged jessie main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged jessie-updates main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged jessie-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Install a frontend for depconf&lt;br /&gt;
&lt;br /&gt;
 apt-get install whiptail&lt;br /&gt;
&lt;br /&gt;
Install locales and configure them.&lt;br /&gt;
&lt;br /&gt;
 apt-get install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server and the full version of vim&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-`dpkg --print-architecture`&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The default udev rules for Devuan ignore Xen generated MAC addresses so you won&#039;t get a &#039;/etc/udev/rules.d/70-persistent-net.rules&#039; This causes your network interfaces not to come up.&lt;br /&gt;
&lt;br /&gt;
Edit &#039;/lib/udev/rules.d/75-persistent-net-generator.rules&#039; and comment these lines. Here&#039;s the changes in patch/diff format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
@@ -21,7 +21,7 @@ KERNEL!=&amp;quot;eth*|ath*|wlan*[0-9]|msh*|ra*|s&lt;br /&gt;
                                        GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Xen virtual interfaces&lt;br /&gt;
-SUBSYSTEMS==&amp;quot;xen&amp;quot;,                     GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
+#SUBSYSTEMS==&amp;quot;xen&amp;quot;,                    GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore UML virtual interfaces&lt;br /&gt;
 DRIVERS==&amp;quot;uml-netdev&amp;quot;,                 GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
@@ -75,7 +75,7 @@ ENV{MATCHADDR}==&amp;quot;00:0c:29:*|00:50:56:*|0&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:15:5d:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;52:54:00:*|54:52:00:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;08:00:27:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
-ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
+#ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,         ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Windows Azure Hyper-V virtual interfaces&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:03:ff:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan Jessie&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-3.16.0-4-amd64 root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-3.16.0-4-amd64&lt;br /&gt;
&lt;br /&gt;
title           Devuan Jessie (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-3.16.0-4-amd64 root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-3.16.0-4-amd64&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2017-01-15 10:04:56.399284075 -0600&lt;br /&gt;
+++ ssh	2017-01-15 10:09:02.999284075 -0600&lt;br /&gt;
@@ -78,6 +78,74 @@&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA1_KEY=/etc/ssh/ssh_host_key&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+DSA_KEY=/etc/ssh/ssh_host_dsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_dsa_keygen() {&lt;br /&gt;
+        if [ ! -s $DSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 DSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $DSA_KEY&lt;br /&gt;
+                if test ! -f $DSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t dsa -f $DSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $DSA_KEY&lt;br /&gt;
+                        chmod 644 $DSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 export PATH=&amp;quot;${PATH:+$PATH:}/usr/sbin:/sbin&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
@@ -86,6 +154,12 @@&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_dsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove /etc/udev/rules.d/70-persistent-net.rules so that network comes up clean when the image is booted for the first time.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
	<entry>
		<id>https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Jessie&amp;diff=37</id>
		<title>Linux/Xen/DomU/Devuan/Devuan Jessie</title>
		<link rel="alternate" type="text/html" href="https://wiki.guungle.com/index.php?title=Linux/Xen/DomU/Devuan/Devuan_Jessie&amp;diff=37"/>
		<updated>2017-01-15T21:28:47Z</updated>

		<summary type="html">&lt;p&gt;Pyromania: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Devuan Jessie===&lt;br /&gt;
&lt;br /&gt;
Start this process on a existing Devuan system. You will need to have the Devuan patched version of debootstrap installed.&lt;br /&gt;
&lt;br /&gt;
Create a empty image file and format it with ext3.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/zero of=devuan_jessie.img bs=1M count=1 seek=1024&lt;br /&gt;
 mkfs.ext3 devuan_jessie.img&lt;br /&gt;
&lt;br /&gt;
Create a directory to mount the image on. Using &#039;/mnt/img&#039; for this example.&lt;br /&gt;
&lt;br /&gt;
 mkdir /mnt/img&lt;br /&gt;
 mount -oloop devuan_jessie.img /mnt/img&lt;br /&gt;
&lt;br /&gt;
Start the debootstrap process.&lt;br /&gt;
&lt;br /&gt;
 debootstrap --variant=minbase jessie /mnt/img http://auto.mirror.devuan.org/merged/&lt;br /&gt;
&lt;br /&gt;
Once that completes, copy your existing /etc/apt/sources.list to the new image so we can run updates.&lt;br /&gt;
&lt;br /&gt;
 cp /etc/apt/sources.list /mnt/img/etc/apt/&lt;br /&gt;
&lt;br /&gt;
Here is a basic sources.list&lt;br /&gt;
&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged jessie main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged jessie-updates main&lt;br /&gt;
 deb http://auto.mirror.devuan.org/merged jessie-security main&lt;br /&gt;
&lt;br /&gt;
Mount the necessary system files so that we can enter the new root filesystem with chroot. &lt;br /&gt;
&lt;br /&gt;
 mount --bind /dev /mnt/img/dev&lt;br /&gt;
 mount --bind /dev/pts /mnt/img/dev/pts&lt;br /&gt;
 mount -t proc proc /mnt/img/proc&lt;br /&gt;
 mount -t sysfs sys /mnt/img/sys&lt;br /&gt;
 chroot /mnt/img&lt;br /&gt;
&lt;br /&gt;
Run updates and install a language pack.&lt;br /&gt;
&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get upgrade&lt;br /&gt;
&lt;br /&gt;
Configure the system timezone.&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
Install the kernel image, SSH server and the full version of vim&lt;br /&gt;
 &lt;br /&gt;
 apt-get install linux-image-`dpkg --print-architecture`&lt;br /&gt;
 apt-get install openssh-server&lt;br /&gt;
 apt-get install vim&lt;br /&gt;
&lt;br /&gt;
To use the Xen console &#039;xm console (domU)&#039; you need to setup a tty on /dev/hvc0. Edit /etc/inittab and add this line.&lt;br /&gt;
 &lt;br /&gt;
 co:2345:respawn:/sbin/getty 38400 hvc0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The default udev rules for Devuan ignore Xen generated MAC addresses so you won&#039;t get a &#039;/etc/udev/rules.d/70-persistent-net.rules&#039; This causes your network interfaces not to come up.&lt;br /&gt;
&lt;br /&gt;
Edit &#039;/lib/udev/rules.d/75-persistent-net-generator.rules&#039; and comment these lines. Here&#039;s the changes in patch/diff format.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;diff&amp;quot;&amp;gt;&lt;br /&gt;
@@ -21,7 +21,7 @@ KERNEL!=&amp;quot;eth*|ath*|wlan*[0-9]|msh*|ra*|s&lt;br /&gt;
                                        GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Xen virtual interfaces&lt;br /&gt;
-SUBSYSTEMS==&amp;quot;xen&amp;quot;,                     GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
+#SUBSYSTEMS==&amp;quot;xen&amp;quot;,                    GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore UML virtual interfaces&lt;br /&gt;
 DRIVERS==&amp;quot;uml-netdev&amp;quot;,                 GOTO=&amp;quot;persistent_net_generator_end&amp;quot;&lt;br /&gt;
@@ -75,7 +75,7 @@ ENV{MATCHADDR}==&amp;quot;00:0c:29:*|00:50:56:*|0&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:15:5d:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;52:54:00:*|54:52:00:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;08:00:27:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
-ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,          ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
+#ENV{MATCHADDR}==&amp;quot;00:16:3e:*&amp;quot;,         ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # ignore Windows Azure Hyper-V virtual interfaces&lt;br /&gt;
 ENV{MATCHADDR}==&amp;quot;00:03:ff:*&amp;quot;, ENV{MATCHADDR}=&amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure your &#039;/etc/network/interfaces&#039; for DHCP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# interfaces(5) file used by ifup(8) and ifdown(8)&lt;br /&gt;
# Include files from /etc/network/interfaces.d:&lt;br /&gt;
source-directory /etc/network/interfaces.d&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet dhcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====GRUB====&lt;br /&gt;
&lt;br /&gt;
Setup a basic grub config in &amp;quot;/boot/grub/menu.lst&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
default         0&lt;br /&gt;
timeout         2&lt;br /&gt;
&lt;br /&gt;
title           Devuan Jessie&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-3.16.0-4-amd64 root=/dev/xvda1 ro console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-3.16.0-4-amd64&lt;br /&gt;
&lt;br /&gt;
title           Devuan Jessie (Single-User)&lt;br /&gt;
root            (hd0,0)&lt;br /&gt;
kernel          /boot/vmlinuz-3.16.0-4-amd64 root=/dev/xvda1 ro single console=hvc0&lt;br /&gt;
initrd          /boot/initrd.img-3.16.0-4-amd64&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure a basic fstab&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Begin /etc/fstab&lt;br /&gt;
# &amp;lt;file system&amp;gt; &amp;lt;mount-point&amp;gt;   &amp;lt;type&amp;gt;   &amp;lt;options&amp;gt;                      &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;br /&gt;
/dev/sda1          /             ext3      defaults,errors=remount-ro    0     0&lt;br /&gt;
proc               /proc         proc      defaults                      0     0&lt;br /&gt;
&lt;br /&gt;
# End /etc/fstab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====SSH host keys fix====&lt;br /&gt;
&lt;br /&gt;
Since this image will get cloned and used to create new virtual machines we don&#039;t want to re-use the same keys for every virtual machine. Devuan won&#039;t regenerate SSH host keys if you delete them from /etc/ssh. So we need to make some changes to /etc/init.d/ssh so it regenerates the host keys.&lt;br /&gt;
&lt;br /&gt;
Here is a patch for /etc/init.d/ssh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--- old_ssh	2017-01-15 10:04:56.399284075 -0600&lt;br /&gt;
+++ ssh	2017-01-15 10:09:02.999284075 -0600&lt;br /&gt;
@@ -78,6 +78,74 @@&lt;br /&gt;
     fi&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
+# Some variables to make things more readable &lt;br /&gt;
+KEYGEN=/usr/bin/ssh-keygen&lt;br /&gt;
+RSA1_KEY=/etc/ssh/ssh_host_key&lt;br /&gt;
+RSA_KEY=/etc/ssh/ssh_host_rsa_key&lt;br /&gt;
+DSA_KEY=/etc/ssh/ssh_host_dsa_key&lt;br /&gt;
+ECDSA_KEY=/etc/ssh/ssh_host_ecdsa_key&lt;br /&gt;
+ED25519_KEY=/etc/ssh/ssh_host_ed25519_key&lt;br /&gt;
+&lt;br /&gt;
+do_rsa_keygen() {&lt;br /&gt;
+        if [ ! -s $RSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 RSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $RSA_KEY&lt;br /&gt;
+                if test ! -f $RSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t rsa -f $RSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $RSA_KEY&lt;br /&gt;
+                        chmod 644 $RSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_dsa_keygen() {&lt;br /&gt;
+        if [ ! -s $DSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 DSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $DSA_KEY&lt;br /&gt;
+                if test ! -f $DSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t dsa -f $DSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $DSA_KEY&lt;br /&gt;
+                        chmod 644 $DSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ecdsa_keygen() {&lt;br /&gt;
+        if [ ! -s $ECDSA_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ECDSA host key: &amp;quot;&lt;br /&gt;
+                rm -f $ECDSA_KEY&lt;br /&gt;
+                if test ! -f $ECDSA_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ecdsa -f $ECDSA_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ECDSA_KEY&lt;br /&gt;
+                        chmod 644 $ECDSA_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+ &lt;br /&gt;
+do_ed25519_keygen() {&lt;br /&gt;
+        if [ ! -s $ED25519_KEY ]; then&lt;br /&gt;
+                echo -n &amp;quot;Generating SSH2 ED25519 host key: &amp;quot;&lt;br /&gt;
+                rm -f $ED25519_KEY&lt;br /&gt;
+                if test ! -f $ED25519_KEY &amp;amp;&amp;amp; $KEYGEN -q -t ed25519 -f $ED25519_KEY -C &#039;&#039; -N &#039;&#039; &amp;gt;/dev/null; then&lt;br /&gt;
+                        chmod 600 $ED25519_KEY&lt;br /&gt;
+                        chmod 644 $ED25519_KEY.pub&lt;br /&gt;
+			echo &amp;quot;OK&amp;quot;&lt;br /&gt;
+                else&lt;br /&gt;
+			echo &amp;quot;FAIL&amp;quot;&lt;br /&gt;
+                        exit 1&lt;br /&gt;
+                fi&lt;br /&gt;
+        fi&lt;br /&gt;
+}&lt;br /&gt;
+&lt;br /&gt;
 export PATH=&amp;quot;${PATH:+$PATH:}/usr/sbin:/sbin&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
@@ -86,6 +154,12 @@&lt;br /&gt;
 	check_privsep_dir&lt;br /&gt;
 	check_for_no_start&lt;br /&gt;
 	check_dev_null&lt;br /&gt;
+&lt;br /&gt;
+	do_rsa_keygen&lt;br /&gt;
+	do_dsa_keygen&lt;br /&gt;
+	do_ecdsa_keygen&lt;br /&gt;
+	do_ed25519_keygen&lt;br /&gt;
+&lt;br /&gt;
 	log_daemon_msg &amp;quot;Starting OpenBSD Secure Shell server&amp;quot; &amp;quot;sshd&amp;quot; || true&lt;br /&gt;
 	if start-stop-daemon --start --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then&lt;br /&gt;
 	    log_end_msg 0 || true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Firewall====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install iptables&lt;br /&gt;
apt-get install ufw&lt;br /&gt;
&lt;br /&gt;
ufw allow OpenSSH&lt;br /&gt;
ufw enable&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Final Cleanup====&lt;br /&gt;
&lt;br /&gt;
Set a hostname.&lt;br /&gt;
&lt;br /&gt;
Remove /etc/udev/rules.d/70-persistent-net.rules so that network comes up clean when the image is booted for the first time.&lt;br /&gt;
&lt;br /&gt;
Remove SSH host keys so that new ones get generated on first boot.&lt;br /&gt;
&lt;br /&gt;
Set a root password&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;devuan&#039; &amp;gt; /etc/hostname&lt;br /&gt;
rm /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;
rm /etc/ssh/ssh_host_*&lt;br /&gt;
passwd root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pyromania</name></author>
	</entry>
</feed>