latest, almost builds now
This commit is contained in:
		
							parent
							
								
									d96fa24bcf
								
							
						
					
					
						commit
						3b378e2f3d
					
				
							
								
								
									
										16
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								Dockerfile
									
									
									
									
									
								
							| @ -13,16 +13,16 @@ RUN apt update && \ | ||||
|     qemu-user \ | ||||
|     qemu-utils \ | ||||
|     sudo \ | ||||
|     man-db \ | ||||
|     virtinst | ||||
| 
 | ||||
| RUN useradd -m user | ||||
| 
 | ||||
| RUN qemu-img create -f qcow2 /image.qcow2 100G | ||||
| 
 | ||||
| USER user | ||||
| WORKDIR /home/user | ||||
| RUN qemu-img create -f qcow2 image.qcow2 100G | ||||
| ADD . /home/user/ | ||||
| 
 | ||||
| RUN chown user:user /*.qcow2 && chown user:user /home/user/* && chmod a+rwX /home/user/* | ||||
| 
 | ||||
| RUN sudo --login -u user /home/user/install.sh | ||||
| 
 | ||||
| USER root | ||||
| RUN chown user:user /home/user/* && chmod a+rwX /home/user/* | ||||
| USER user | ||||
| #RUN /bin/bash /home/user/install.sh | ||||
| ENTRYPOINT /bin/bash | ||||
|  | ||||
							
								
								
									
										3
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								Makefile
									
									
									
									
									
								
							| @ -2,3 +2,6 @@ default: build | ||||
| 
 | ||||
| build: | ||||
| 	docker build -t sneak/docker-linux-vm . | ||||
| 
 | ||||
| run: | ||||
| 	docker run -ti sneak/docker-linux-vm | ||||
|  | ||||
							
								
								
									
										29
									
								
								install.sh
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								install.sh
									
									
									
									
									
								
							| @ -1,21 +1,36 @@ | ||||
| #!/bin/bash | ||||
| 
 | ||||
| function wait_for_finish() { | ||||
|     echo "Waiting for install to finish..." | ||||
|     while sleep 10 ; do | ||||
|         STATUS="$(virsh dominfo linux | grep State | awk -F' ' '{print $2}')" | ||||
|         if [[ "x$STATUS" == "xrunning" ]]; then | ||||
|             date -u | ||||
|             echo "Still waiting for install to finish..." | ||||
|         fi | ||||
|         if [[ "x$STATUS" != "xrunning" ]]; then | ||||
|             echo "Install done." | ||||
|             return | ||||
|         fi | ||||
|     done | ||||
| } | ||||
| 
 | ||||
| function install_os() { | ||||
|     osinfo-query os | ||||
|     virsh list | ||||
|     virt-install --virt-type qemu --name linux \ | ||||
|     --ram 4096 \ | ||||
|     --disk path=/image.qcow2 \ | ||||
|     --vcpus 4 \ | ||||
|     --os-type linux \ | ||||
|     --disk path=image.qcow2 \ | ||||
|     --os-variant ubuntu18.04 \ | ||||
|     --initrd-inject=preseed.cfg \ | ||||
|     --initrd-inject=postinst.sh \ | ||||
|     --graphics none \ | ||||
|     --location 'http://us.archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/' \ | ||||
|     --extra-args 'console=ttyS0,115200n8 serial' | ||||
|     virsh list | ||||
|     virsh console linux | ||||
|     #virsh list | ||||
|     #virsh console linux | ||||
| } | ||||
| 
 | ||||
| install_os | ||||
| begin_install_os | ||||
| wait_for_finish | ||||
| 
 | ||||
| exit 0 | ||||
|  | ||||
							
								
								
									
										201
									
								
								preseed.cfg
									
									
									
									
									
								
							
							
						
						
									
										201
									
								
								preseed.cfg
									
									
									
									
									
								
							| @ -1,66 +1,181 @@ | ||||
| # Preconfiguration file for jessie. | ||||
| # For more details see https://www.debian.org/releases/jessie/example-preseed.txt | ||||
| d-i debian-installer/locale string en_US | ||||
| ### Preseed for Ubuntu 18.04 | ||||
| # Derived from: https://help.ubuntu.com/lts/installation-guide/example-preseed.txt | ||||
| 
 | ||||
| ### Compatibility | ||||
| # Tested with the netboot image: | ||||
| # http://archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/current/images/netboot/mini.iso | ||||
| # Might work with the regular image (not tested): | ||||
| # http://cdimage.ubuntu.com/releases/18.04/release/ubuntu-18.04-server-amd64.iso | ||||
| 
 | ||||
| ### Authentication | ||||
| # We recommend to use public key authentication and therefore disabled the root | ||||
| # password. The build-iso.sh script will do all the hard work for you. | ||||
| # | ||||
| # In case you still want to use password authentication, you need to set the | ||||
| # passwd/root-password-crypted variable. See below for further instructions. | ||||
| 
 | ||||
| ### Usage | ||||
| # We recommend to use the build-iso.sh script to build an image with embedded | ||||
| # preseed and other required files. In that case the preseed file gets loaded | ||||
| # automatically and all additional files are available to the installer. | ||||
| # | ||||
| # In case you want to use a vanilla ISO image, please use the following boot | ||||
| # instructions to load the preseed file (press ESC and enter in boot prompt): | ||||
| # | ||||
| # install auto=true priority=critical url=https://raw.githubusercontent.com/core-process/linux-unattended-installation/master/ubuntu/18.04/custom/preseed.cfg | ||||
| # | ||||
| # Note: you will need to adjust the "preseed/late_command" variable to match | ||||
| #       your environment in case you do not use the build-iso.sh script. | ||||
| 
 | ||||
| 
 | ||||
| ### Unattended Installation | ||||
| d-i auto-install/enable boolean true | ||||
| d-i debconf/priority select critical | ||||
| 
 | ||||
| ### Localization | ||||
| d-i debian-installer/locale string en_US.UTF-8 | ||||
| d-i localechooser/supported-locales multiselect en_US.UTF-8, de_DE.UTF-8 | ||||
| d-i console-setup/ask_detect boolean false | ||||
| d-i keyboard-configuration/xkb-keymap select us | ||||
| 
 | ||||
| # Choose an network interface that has link if possible. | ||||
| ### Network configuration | ||||
| d-i netcfg/choose_interface select auto | ||||
| d-i netcfg/hostname string device | ||||
| d-i netcfg/get_hostname string device | ||||
| d-i netcfg/get_domain string unnamed | ||||
| d-i hw-detect/load_firmware boolean true | ||||
| 
 | ||||
| # Disable that annoying WEP key dialog. | ||||
| d-i netcfg/wireless_wep string | ||||
| 
 | ||||
| # Mirror settings. | ||||
| ### Mirror settings | ||||
| d-i mirror/country string manual | ||||
| d-i mirror/http/hostname string archive.ubuntu.com | ||||
| d-i mirror/http/hostname string us.archive.ubuntu.com | ||||
| d-i mirror/http/directory string /ubuntu | ||||
| d-i mirror/http/proxy string | ||||
| 
 | ||||
| # Root account setup. You can set password in plain-text or pre-encrypted. | ||||
| d-i passwd/root-login boolean false | ||||
| #d-i passwd/root-password password 98e1c23d2a5a2 | ||||
| #d-i passwd/root-password-again password 98e1c23d2a5a2 | ||||
| #d-i passwd/root-password-crypted password $6$1LCVFshS/kbYVg$M1QS1ZJ3.E7NkAD8sqkqhqExA2HWQ5/iDE.l23Xbr89Z7hTg/jUuBMyrYzANLmRybYcH8Smcy.yGDKMAX3okd0 | ||||
| ### Account setup | ||||
| d-i passwd/root-login boolean true | ||||
| d-i passwd/root-password-crypted password !! | ||||
| d-i passwd/make-user boolean false | ||||
| 
 | ||||
| # User account setup. | ||||
| #d-i passwd/make-user boolean false | ||||
| d-i passwd/user-fullname string user | ||||
| d-i passwd/username string user | ||||
| d-i passwd/user-password password password | ||||
| d-i passwd/user-password-again password password | ||||
| #d-i passwd/user-password-crypted password $6$dU9we2Mm$Btq1Tk1WkFx3/8YsXWbZr13m56uv0PabJKxk5teKAImLLQhtniOURXuOVLmbiBl0O3iS6xQBctNIc9Dn5b3vR. | ||||
| # Password login is disabled. | ||||
| d-i passwd/user-password-crypted password ! | ||||
| # The root password is disabled by default. In case you want to use a root | ||||
| # password, please generate a password with the following command | ||||
| #   printf "please-change-password" | mkpasswd -s -m sha-512 | ||||
| # and update the passwd/root-password-crypted variable accordingly. Furthermore | ||||
| # you need to remove the call to "usermod" below. | ||||
| 
 | ||||
| # Controls whether or not the hardware clock is set to UTC. | ||||
| ### Clock and time zone setup | ||||
| d-i clock-setup/utc boolean true | ||||
| # See the contents of /usr/share/zoneinfo/ for valid values. | ||||
| d-i time/zone string UTC | ||||
| # Controls whether to use NTP to set the clock during the install. | ||||
| d-i time/zone string Etc/UTC | ||||
| d-i clock-setup/ntp boolean true | ||||
| d-i clock-setup/ntp-server string ntp.ubuntu.com | ||||
| 
 | ||||
| # Simple non-LVM, all files in one partition. | ||||
| # For more examples see https://www.debian.org/releases/jessie/example-preseed.txt | ||||
| d-i partman-auto/method string regular | ||||
| d-i partman-auto/choose_recipe select atomic | ||||
| ### Do NOT install on the USB stick(!) | ||||
| # | ||||
| # The Debian installer will install on the first disk it finds which can | ||||
| # sometimes be the USB stick itself. Work around this by rolling our own auto | ||||
| # detect logic which disallows installing on USB devices. | ||||
| d-i partman/early_command string \ | ||||
|   USBDEV_LIST="$(mktemp)"; \ | ||||
|   list-devices usb-partition | sed "s/\(.*\)./\1/" > "$USBDEV_LIST"; \ | ||||
|   BOOTDEV="$(list-devices disk | grep -vf "$USBDEV_LIST" | head -n 1)"; \ | ||||
|   debconf-set partman-auto/disk "$BOOTDEV"; \ | ||||
|   debconf-set grub-installer/bootdev "$BOOTDEV"; \ | ||||
|   while /bin/true; do sleep 0.01; rm -f /target/etc/grub.d/30_os-prober; done & | ||||
| 
 | ||||
| ### Partitioning | ||||
| d-i preseed/early_command string umount /media || true | ||||
| d-i partman-auto/method string lvm | ||||
| d-i partman-auto-lvm/guided_size string max | ||||
| d-i partman-lvm/device_remove_lvm boolean true | ||||
| d-i partman-lvm/confirm boolean true | ||||
| d-i partman-lvm/confirm_nooverwrite boolean true | ||||
| d-i partman-auto-lvm/new_vg_name string main | ||||
| d-i partman-md/device_remove_md boolean true | ||||
| d-i partman-md/confirm boolean true | ||||
| d-i partman-partitioning/confirm_write_new_label boolean true | ||||
| d-i partman/choose_partition select finish | ||||
| d-i partman/confirm boolean true | ||||
| d-i partman/confirm_nooverwrite boolean true | ||||
| d-i partman-basicmethods/method_only boolean false | ||||
| 
 | ||||
| # Do not install recommended packages by default. | ||||
| d-i base-installer/install-recommends boolean false | ||||
| tasksel tasksel/first multiselect | ||||
| # Individual additional packages to install. acpid and acpi-support-base are required to make virsh shutdown to work. | ||||
| # ACPI packages are needed for `virsh shutdown <domain>` to work. | ||||
| d-i pkgsel/include string openssh-server ca-certificates acpid acpi-support-base | ||||
| popularity-contest popularity-contest/participate boolean false | ||||
| ### GPT | ||||
| d-i partman-basicfilesystems/choose_label string gpt | ||||
| d-i partman-basicfilesystems/default_label string gpt | ||||
| d-i partman-partitioning/choose_label string gpt | ||||
| d-i partman-partitioning/default_label string gpt | ||||
| d-i partman/choose_label string gpt | ||||
| d-i partman/default_label string gpt | ||||
| 
 | ||||
| # Boot loader installation. | ||||
| ### EFI | ||||
| d-i partman-efi/non_efi_system boolean true | ||||
| 
 | ||||
| ### Grub | ||||
| d-i grub-installer/only_debian boolean true | ||||
| d-i grub-installer/bootdev string /dev/vda | ||||
| d-i grub-installer/with_other_os boolean true | ||||
| 
 | ||||
| # Run postinst.sh in /target just before the install finishes. | ||||
| d-i preseed/late_command string cp postinst.sh postinst.tar.gz /target/tmp/ && chmod 755 /target/tmp/postinst.sh && in-target /tmp/postinst.sh | ||||
| # Use entire disk | ||||
| d-i partman-auto/expert_recipe string         \ | ||||
|   boot-root ::                                \ | ||||
|     1 1 1 free                                \ | ||||
|       $bios_boot{ }                           \ | ||||
|       method{ biosgrub }                      \ | ||||
|     .                                         \ | ||||
|     256 256 256 fat32                         \ | ||||
|       $primary{ }                             \ | ||||
|       $iflabel{ gpt }                         \ | ||||
|       $reusemethod{ }                         \ | ||||
|       method{ efi } format{ }                 \ | ||||
|       mountpoint{ /boot/efi }                 \ | ||||
|     .                                         \ | ||||
|     512 512 512 ext4                          \ | ||||
|       $primary{ }                             \ | ||||
|       $bootable{ }                            \ | ||||
|       method{ format } format{ }              \ | ||||
|       use_filesystem{ } filesystem{ ext4 }    \ | ||||
|       mountpoint{ /boot }                     \ | ||||
|     .                                         \ | ||||
|     1024 102400000 1000000000 ext4            \ | ||||
|       $lvmok{ }                               \ | ||||
|       method{ format } format{ }              \ | ||||
|       use_filesystem{ } filesystem{ ext4 }    \ | ||||
|       mountpoint{ / }                         \ | ||||
|       lv_name{ root }                         \ | ||||
|     .                                         \ | ||||
|     200% 200% 200% linux-swap                 \ | ||||
|       $lvmok{ }                               \ | ||||
|       method{ swap } format{ }                \ | ||||
|       lv_name{ swap }                         \ | ||||
|     . | ||||
| 
 | ||||
| # Avoid that last message about the install being complete. | ||||
| ### Base system installation | ||||
| d-i base-installer/install-recommends boolean true | ||||
| d-i base-installer/kernel/image string linux-generic | ||||
| 
 | ||||
| ### Apt setup | ||||
| d-i apt-setup/restricted boolean true | ||||
| d-i apt-setup/universe boolean true | ||||
| d-i apt-setup/backports boolean true | ||||
| d-i apt-setup/use_mirror boolean false | ||||
| d-i apt-setup/services-select multiselect security, updates | ||||
| d-i apt-setup/security_host string security.ubuntu.com | ||||
| d-i apt-setup/security_path string /ubuntu | ||||
| 
 | ||||
| ### Package selection | ||||
| d-i tasksel/first multiselect none | ||||
| d-i pkgsel/include string openssh-server python | ||||
| d-i pkgsel/upgrade select full-upgrade | ||||
| d-i pkgsel/update-policy select unattended-upgrades | ||||
| 
 | ||||
| ### Finishing up the installation | ||||
| d-i preseed/late_command string \ | ||||
|  in-target sh -c 'lvremove -f --noudevsync main/placeholder || true'; \ | ||||
|  in-target sh -c 'rm -f /etc/ssh/ssh_host_*_key* && mkdir -p /usr/lib/systemd/system && cp /custom/ssh-host-keygen.service /usr/lib/systemd/system/ssh-host-keygen.service && systemctl enable ssh-host-keygen.service'; \ | ||||
|  in-target sh -c 'echo "IPv4: \\\4" >> /etc/issue && echo "IPv6: \\\6" >> /etc/issue && echo "" >> /etc/issue'; \ | ||||
|  in-target sh -c 'eject || true'; \ | ||||
|  cp postinst.sh /target/tmp/ && chmod 755 /target/tmp/postinst.sh && in-target /tmp/postinst.sh ; | ||||
| 
 | ||||
| d-i debian-installer/splash boolean false | ||||
| d-i cdrom-detect/eject boolean true | ||||
| 
 | ||||
| ### Shutdown machine | ||||
| d-i finish-install/reboot_in_progress note | ||||
| d-i debian-installer/exit/poweroff boolean true | ||||
|  | ||||
		Reference in New Issue
	
	Block a user