diff --git a/defaults/main.yml b/defaults/main.yml index b04d4fa6bd439be2f26f4d71292693a93aa92a8c..25e9dc18ad3ea73b673d8f5cc802e83faf0545ee 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,4 +1,4 @@ --- -linux_installer_home_mirror: "http://tinycorelinux.net" +linux_installer_home_mirror: "http://dl-cdn.alpinelinux.org/alpine" linux_installer_local_mirror: "{{ linux_installer_home_mirror }}" -linux_installer_version: "10.x" +linux_installer_version: "3.10" diff --git a/files/diskspreparation.sh b/files/diskspreparation.sh index 9e601cdaf4942aa0ba664eb221b94ed29a7ed938..179cae8b3594ab1ea9b6a3726986279dd7e58625 100755 --- a/files/diskspreparation.sh +++ b/files/diskspreparation.sh @@ -418,9 +418,9 @@ createTargetDirectoryLayout(){ mkdir -p $1/${mntpnt} if [ -z "${opts}" ]; then - mount -t ${fs} ${partdev} $1/${mntpnt} + mount -t ${fs} ${partdev} $1${mntpnt} else - mount -t ${fs} ${partdev} $1/${mntpnt} -o ${opts} + mount -t ${fs} ${partdev} $1${mntpnt} -o ${opts} fi fi done diff --git a/files/functions.sh b/files/functions.sh index d3042ce4582ad578848ac9e17b684f706162bb68..63c211f5435314d04e702664d07f2a1b60ec6b9d 100755 --- a/files/functions.sh +++ b/files/functions.sh @@ -1,15 +1,11 @@ -# installTcPackages - install tiny core packages +# installPackages - install tiny core packages # parameter: # $@ - list of package names # return: # 0 is installed # 1 something went wrong -installTcPackages(){ - while [ $# -gt 0 ]; - do - su tc -c "tce-load -s -w -i $1" 2>&1 >/dev/null - shift - done +installPackages(){ + apk add $@ } # beginLogEntry - starts a new log entry diff --git a/files/inittab b/files/inittab new file mode 100644 index 0000000000000000000000000000000000000000..d827d8c6dbd3cdb9a8492ffc86f9304ebf2e3d82 --- /dev/null +++ b/files/inittab @@ -0,0 +1,18 @@ +# /etc/inittab + +::sysinit:/sbin/openrc sysinit +::sysinit:/sbin/openrc boot +::wait:/sbin/openrc default + +# Set up getty for installer +tty1::respawn:/sbin/getty -nl /opt/startup 38400 tty1 + +# Put a getty on the serial port +#ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 + +# Stuff to do for the 3-finger salute +::ctrlaltdel:/sbin/reboot + +# Stuff to do before rebooting +::shutdown:/sbin/openrc shutdown + diff --git a/files/installer.sh b/files/installer.sh index eaa06f293cb70b4ffe0a3090f001c39448647c0c..18af91ac0ff3aa0f7d69834dced2208758f2a776 100755 --- a/files/installer.sh +++ b/files/installer.sh @@ -26,6 +26,6 @@ finishLogEntry "done" beginLogEntry "install ssh key in target" cp /opt/ansible.pub /target/etc/ssh/authorized_keys -chmod 644 /target/etc/sshd/authorized_keys +chmod 644 /target/etc/ssh/authorized_keys finishLogEntry "done" diff --git a/files/startup b/files/startup new file mode 100644 index 0000000000000000000000000000000000000000..92db923c96c36c31faeec23493801b409bc275db --- /dev/null +++ b/files/startup @@ -0,0 +1,25 @@ +#!/bin/sh + +. /opt/functions.sh + +beginLogEntry "install default dependencies" +installPackages bash parted bc ntfs-3g dosfstools openssl btrfs-progs e2fsprogs blkid +finishLogEntry "done" + +beginLogEntry "get Answerfile from \"${ANSWERFILE_PATH}\"" +getAnswerfile ${ANSWERFILE_PATH} /tmp/answerfile +if [ $? -eq 0 ]; +then + finishLogEntry "done" + if [ "x${DEBUG}" = "yes" ]; then + /opt/dbgmode + else + /opt/installer.sh + #reboot + /bin/sh + fi +else + finishLogEntry "failed" + /opt/dbgmode +fi + diff --git a/tasks/_mergeimages.yml b/tasks/_mergeimages.yml index 2640ef67c0d374b947096ba0883b43f152ba0864..fabda318d60a18384a04545e675988a7dbe6975e 100644 --- a/tasks/_mergeimages.yml +++ b/tasks/_mergeimages.yml @@ -2,28 +2,28 @@ - name: detect architecture set_fact: _linux_installer_arch: "x86_64" - _linux_installer_corefile: "corepure64.gz" - _linux_installer_kernelfile: "vmlinuz64" - when: _linux_dist_arch == "x86_64" or _linux_dist_arch == "amd64" + when: _linux_dist_arch == "x86_64" or _linux_dist_arch == "amd64" or _linux_dist_arch == "x64" - set_fact: _linux_installer_arch: "x86" - _linux_installer_corefile: "core.gz" - _linux_installer_kernelfile: "vmlinuz" when: _linux_dist_arch == "x86" or (_linux_dist_arch | regex_search('i[0-9]86')) -- name: download tiny core linux image file +- set_fact: + _linux_installer_initrfsfile: "initramfs-vanilla" + _linux_installer_kernelfile: "vmlinuz-vanilla" + +- name: download linux installer initrfs image file get_url: - url: "{{ '%s/%s/%s/release/distribution_files/%s' | format(linux_installer_home_mirror, linux_installer_version, _linux_installer_arch, _linux_installer_corefile) }}" - dest: "{{ '/tmp/%s' | format(_linux_installer_corefile) }}" + url: "{{ '%s/v%s/releases/%s/netboot/%s' | format(linux_installer_home_mirror, linux_installer_version, _linux_installer_arch, _linux_installer_initrfsfile) }}" + dest: "{{ '/tmp/%s' | format(_linux_installer_initrfsfile) }}" -- name: download tiny core linux kernel file +- name: download linux installer kernel file get_url: - url: "{{ '%s/%s/%s/release/distribution_files/%s' | format(linux_installer_home_mirror, linux_installer_version, _linux_installer_arch, _linux_installer_kernelfile) }}" - dest: "{{ '/tmp/%s' | format(_linux_installer_kernelfile) }}" + url: "{{ '%s/v%s/releases/%s/netboot/%s' | format(linux_installer_home_mirror, linux_installer_version, _linux_installer_arch, _linux_installer_kernelfile) }}" + dest: "{{ '/tmp/%s_%s' | format(_linux_installer_kernelfile, _linux_dist_arch) }}" -- name: merge tiny core image with installer image - shell: "{{ 'cat /tmp/%s %s >/tmp/linux_%s_%s.gz' | format(_linux_installer_corefile, _linux_installer_image_file.path, linux_installer_distribution, _linux_dist_arch) }}" +- name: merge linux installer initrfs image with installer image + shell: "{{ 'cat /tmp/%s %s >/tmp/linux_%s_%s.gz' | format(_linux_installer_initrfsfile, _linux_installer_image_file.path, linux_installer_distribution, _linux_dist_arch) }}" - name: save images for registration set_fact: @@ -32,7 +32,7 @@ {%- if system_installer_images is defined -%} {%- set retval.data = system_installer_images -%} {%- endif -%} - {%- do retval.data.append(['/tmp/linux_%s_%s.gz' | format(linux_installer_distribution, _linux_dist_arch), '/tmp/%s' | format(_linux_installer_kernelfile), + {%- do retval.data.append(['/tmp/linux_%s_%s.gz' | format(linux_installer_distribution, _linux_dist_arch), '/tmp/%s_%s' | format(_linux_installer_kernelfile, _linux_dist_arch), linux_installer_distribution, _linux_dist_release, _linux_dist_arch]) -%} {{- retval.data -}} loop: "{{ system_supported_releases[linux_installer_distribution] }}" diff --git a/tasks/buildinstaller.yml b/tasks/buildinstaller.yml index 0cc6087506dbb168f14fca1a35a238b608b61d52..12990f4b7d127793b5dbcb34be8c2842af44971a 100644 --- a/tasks/buildinstaller.yml +++ b/tasks/buildinstaller.yml @@ -13,33 +13,34 @@ path: "{{ '%s/opt' | format(linux_build_installer_root) }}" state: directory -- name: create installers opt directory +- name: create installers etc directory file: - path: "{{ '%s/root' | format(linux_build_installer_root) }}" + path: "{{ '%s/etc' | format(linux_build_installer_root) }}" state: directory -- name: install basic installer scripts +- name: configure boot default services + copy: + dest: "{{ '%s/etc/.default_boot_services' | format(linux_build_installer_root) }}" + content: "boot_default_services" + +- name: install custom inittab copy: - src: profile - dest: "{{ '%s/root/.profile' | format(linux_build_installer_root) }}" + src: "inittab" + dest: "{{ '%s/etc/inittab' | format(linux_build_installer_root) }}" + mode: "0644" - name: install ssh public key copy: src: "{{ '%s/ansible.pub' | format(ansible_sshkeys) }}" dest: "{{ '%s/opt/ansible.pub' | format(linux_build_installer_root) }}" -- name: set linux installer repository - copy: - dest: "{{ '%s/opt/tcemirror' | format(linux_build_installer_root) }}" - content: "{{ linux_installer_home_mirror }}" - - name: install basic installer scripts copy: src: "{{ _linux_install_file.name }}" dest: "{{ '%s/opt/%s' | format(linux_build_installer_root, _linux_install_file.name) }}" mode: "{{ _linux_install_file.mode }}" loop: - - {"name": "bootlocal.sh", "mode": "0775" } + - {"name": "startup", "mode": "0755"} - {"name": "dbgmode", "mode": "0755" } - {"name": "installer.sh", "mode": "0775"} - {"name": "functions.sh", "mode": "0775"} diff --git a/tasks/finaliseinstaller.yml b/tasks/finaliseinstaller.yml index ce0cbf9e295866cf54988b2c0bda4cc400de2523..a0009358db076402413ee718f1d03783ec8bb6a6 100644 --- a/tasks/finaliseinstaller.yml +++ b/tasks/finaliseinstaller.yml @@ -1,4 +1,19 @@ +- name: create temporary root directory + tempfile: + state: directory + register: _linux_temporary_root_directory + +- name: create target directory for compressed overlay filesystem + file: + path: "{{ '%s/opt' | format(_linux_temporary_root_directory.path) }}" + state: directory + +- name: compress overlay filesystem + archive: + path: "{{ '%s/*' | format(linux_build_installer_root) }}" + dest: "{{ '%s/opt/ovl.tar.gz' | format(_linux_temporary_root_directory.path) }}" + - name: create temporary linux installer image name tempfile: suffix: ".gz" @@ -7,7 +22,7 @@ - name: compress linux installer shell: "{{ 'find | cpio -o -H newc -R +0:+0 | gzip -2 > %s' | format(_linux_installer_image_file.path) }}" args: - chdir: "{{ linux_build_installer_root }}" + chdir: "{{ _linux_temporary_root_directory.path }}" - include_role: name: system.linux @@ -20,6 +35,11 @@ name: system tasks_from: installer +- name: cleanup temporary root directory + file: + path: "{{ _linux_temporary_root_directory }}" + state: absent + - name: cleanup installers build root directory file: path: "{{ linux_build_installer_root }}"