summaryrefslogtreecommitdiffstats
path: root/roles/bootstrap
diff options
context:
space:
mode:
Diffstat (limited to 'roles/bootstrap')
-rw-r--r--roles/bootstrap/tasks/install-ubuntu-mac.yml74
-rw-r--r--roles/bootstrap/tasks/install-ubuntu.yml6
-rw-r--r--roles/bootstrap/tasks/main.yml3
-rw-r--r--roles/bootstrap/vars/ubuntu.yml2
4 files changed, 80 insertions, 5 deletions
diff --git a/roles/bootstrap/tasks/install-ubuntu-mac.yml b/roles/bootstrap/tasks/install-ubuntu-mac.yml
new file mode 100644
index 0000000..005c403
--- /dev/null
+++ b/roles/bootstrap/tasks/install-ubuntu-mac.yml
@@ -0,0 +1,74 @@
+---
+# Apple EFI 1.x does not expose ext4 volumes via SimpleFileSystem, so the
+# kernel must live on the FAT32 EFI partition where rEFInd already scans \boot\.
+- name: "Ensure boot directory exists on EFI partition"
+ ansible.builtin.file:
+ path: "{{ mnt_boot_path }}/boot"
+ state: directory
+ mode: "0755"
+
+- name: "Copy kernel to EFI partition"
+ ansible.builtin.copy:
+ src: "{{ mnt_root_path }}/boot/{{ item }}"
+ dest: "{{ mnt_boot_path }}/boot/{{ item }}"
+ remote_src: true
+ follow: true
+ mode: "0644"
+ loop:
+ - "vmlinuz"
+ - "initrd.img"
+
+- name: "Configure rEFInd boot options on EFI partition"
+ ansible.builtin.template:
+ src: "refind_linux.conf.j2"
+ dest: "{{ mnt_boot_path }}/boot/refind_linux.conf"
+ mode: "0644"
+
+- name: "Ensure kernel post-install hook directory exists"
+ ansible.builtin.file:
+ path: "{{ mnt_root_path }}/etc/kernel/postinst.d"
+ state: directory
+ mode: "0755"
+
+- name: "Install kernel sync script for EFI partition"
+ ansible.builtin.copy:
+ dest: "{{ mnt_root_path }}/etc/kernel/postinst.d/refind-sync-kernel"
+ mode: "0755"
+ content: |
+ #!/bin/sh
+ cp /boot/vmlinuz /boot/efi/boot/
+ cp /boot/initrd.img /boot/efi/boot/
+
+- name: "Install bcmwl-kernel-source in chroot"
+ ansible.builtin.command:
+ cmd: "arch-chroot {{ mnt_root_path }} apt-get install -y bcmwl-kernel-source"
+ environment:
+ MAKEFLAGS: ""
+ changed_when: true
+ failed_when: false
+
+- name: "Configure unconfigured packages in chroot"
+ ansible.builtin.command:
+ cmd: "arch-chroot {{ mnt_root_path }} dpkg --configure -a"
+ environment:
+ MAKEFLAGS: ""
+ changed_when: true
+ failed_when: false
+
+- name: "Blacklist modules conflicting with broadcom-wl"
+ ansible.builtin.copy:
+ dest: "{{ mnt_root_path }}/etc/modprobe.d/broadcom-wl.conf"
+ mode: "0644"
+ content: |
+ blacklist brcmfmac
+ blacklist brcmutil
+ blacklist b43
+ blacklist ssb
+ blacklist bcma
+
+- name: "Load wl module at boot"
+ ansible.builtin.lineinfile:
+ path: "{{ mnt_root_path }}/etc/modules"
+ line: "wl"
+ create: true
+ mode: "0644"
diff --git a/roles/bootstrap/tasks/install-ubuntu.yml b/roles/bootstrap/tasks/install-ubuntu.yml
index a121fe8..3c18b0e 100644
--- a/roles/bootstrap/tasks/install-ubuntu.yml
+++ b/roles/bootstrap/tasks/install-ubuntu.yml
@@ -55,12 +55,10 @@
changed_when: true
- name: "Configure rEFInd boot options"
- ansible.builtin.copy:
+ ansible.builtin.template:
+ src: "refind_linux.conf.j2"
dest: "{{ mnt_root_path }}/boot/refind_linux.conf"
mode: "0644"
- content: |
- "Boot with defaults" "root=PARTLABEL={{ partition_root.name }} rw"
- "Boot to terminal" "root=PARTLABEL={{ partition_root.name }} rw systemd.unit=multi-user.target"
- name: "Configure rEFInd settings"
ansible.builtin.copy:
diff --git a/roles/bootstrap/tasks/main.yml b/roles/bootstrap/tasks/main.yml
index cb92f99..50e2ce2 100644
--- a/roles/bootstrap/tasks/main.yml
+++ b/roles/bootstrap/tasks/main.yml
@@ -20,6 +20,9 @@
- name: "Install ubuntu"
ansible.builtin.include_tasks: "install-ubuntu.yml"
when: ansible_facts['distribution'] == "Ubuntu"
+ - name: "Install ubuntu on Mac"
+ ansible.builtin.include_tasks: "install-ubuntu-mac.yml"
+ when: ansible_facts['distribution'] == "Ubuntu" and bootstrap_mac
- name: "Install raspberry"
ansible.builtin.include_tasks: "install-raspberry.yml"
diff --git a/roles/bootstrap/vars/ubuntu.yml b/roles/bootstrap/vars/ubuntu.yml
index 3c9f322..4708aff 100644
--- a/roles/bootstrap/vars/ubuntu.yml
+++ b/roles/bootstrap/vars/ubuntu.yml
@@ -3,7 +3,7 @@ bootstrap_distro:
name: "noble" # => Ubuntu 24.04
mirror_url: "http://archive.ubuntu.com/ubuntu/"
packages:
- - "linux-generic-hwe-24.04"
+ - "linux-generic"
bootstrap_opts: ""