380 Configure custom image
Use case
Use the role vbotka.freebsd.custom_image to configure a custom image.
Tree
shell> tree .
.
├── ansible.cfg
├── group_vars
│ └── all
│ └── vault.yml
├── hosts
├── host_vars
│ └── images.example.com
└── pb.yml
Synopsis
Use the playbook
pb.ymlatimages.example.comto customize FreeBSD image:configure wireless adapter RTL8188EU
configure wpa_supplicant
connect to AP
Requirements
root privilege in the managed nodes.
Notes
TBD
Note
See also
ansible.cfg
[defaults]
inventory = $PWD/hosts
gathering = explicit
callback_result_format = yaml
display_skipped_hosts = false
[connection]
pipelining = true
Inventory hosts
images.example.com ansible_host=10.1.0.29
[images]
images.example.com
[images:vars]
ansible_user=admin
ansible_become=true
ansible_python_interpreter=auto_silent
host_vars
cimage_download: false
cimage_unpack: false
# download
cimage_dir: /export/images/FreeBSD
cimage_download_images:
- site: https://download.freebsd.org/releases/arm64/aarch64/ISO-IMAGES/15.0
image: FreeBSD-15.0-RELEASE-arm64-aarch64-RPI.img.xz
checksum: CHECKSUM.SHA256-FreeBSD-15.0-RELEASE-arm64-aarch64-RPI
# mount
cimage_mount_file: FreeBSD-15.0-RELEASE-arm64-aarch64-RPI.img
cimage_mount_points:
- partition: s2a
fstype: ufs
mountpoint: /mnt3
cimage_mount_path: /mnt3
# rc.conf
cimage_rcconf: true
cimage_rcconf_data:
- {key: wlans_rtwn0, value: wlan0}
- {key: ifconfig_wlan0, value: WPA SYNCDHCP}
# wpa_supplicant.conf
cimage_wpasupconf: true
cimage_wpasupconf_template: wpa_supplicant.conf.2.j2
cimage_wpasupconf_data:
- dev: wlan0
network:
- conf:
ssid: "{{ my_access_point }}"
psk: "{{ my_password }}"
disabled: 0
cimage_wpasupconf_link: true
cimage_wpasupconf_link_dev: wlan0
# postinstall
cimage_postinstall: [loader]
# postinstall loader
fp_loader_tuneables_warning: false
fp_loader_conf_file: "{{ cimage_mount_path }}/boot/loader.conf"
fp_loader_conf_template: ''
loader_states:
hw.usb.template: '3'
umodem_load: 'YES'
boot_multicons: 'YES'
boot_serial: 'YES'
beastie_disable: 'YES'
loader_colo: 'NO'
legal.realtek.license_ack: '1'
fp_loader_conf: "{{ loader_states | dict2items(key_name='name') }}"
loader_modules: [wlan, wlan_wep, wlan_ccmp, wlan_tkip, wlan_amrr, rtwn, if_rtwn_usb]
fp_loader_conf_modules: "{{ dict(loader_modules | product(['YES'])) | dict2items(key_name='name') }}"
Note
The default values of cimage_download and cimage_unpack are true. Set them to
false and enable them when needed.
Hint
Put the variables my_access_point and my_password into an vault file. For
example, group_vars/all/vault.yml
Playbook pb.yml
- name: Test role vbotka.freebsd.custom_image
hosts: images
gather_facts: true
roles:
- vbotka.freebsd.custom_image
Playbook output - Display variables
(env) > ansible-playbook pb.yml -t cimage_debug -e cimage_debug=true
PLAY [Test role vbotka.freebsd.custom_image] ***********************************
TASK [Gathering Facts] *********************************************************
ok: [images.example.com]
TASK [vbotka.freebsd.custom_image : Debug cimage_debug=true] *******************
ok: [images.example.com] =>
msg: |-
cimage_role_version: 2.8.1
ansible_role_name: vbotka.freebsd.custom_image
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ansible_facts.architecture: amd64
ansible_facts.os_family: FreeBSD
ansible_facts.distribution: FreeBSD
ansible_facts.distribution_major_version: 15
ansible_facts.distribution_version: 15.0
ansible_facts.distribution_release: 15.0-RELEASE-p1
ansible_facts.python_version: 3.11.14
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
cimage_sanity: False
cimage_sanity_quiet: True
cimage_download: False
cimage_unpack: False
cimage_mount: True
cimage_install: False
cimage_umount: True
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
cimage_get_images: True
cimage_get_checksums: True
cimage_dir: /export/images/FreeBSD
cimage_owner: UNDEFINED
cimage_group: UNDEFINED
cimage_mode: UNDEFINED
cimage_mode_dir: UNDEFINED
cimage_download_images:
- checksum: CHECKSUM.SHA256-FreeBSD-15.0-RELEASE-arm64-aarch64-RPI
image: FreeBSD-15.0-RELEASE-arm64-aarch64-RPI.img.xz
site: https://download.freebsd.org/releases/arm64/aarch64/ISO-IMAGES/15.0
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
cimage_unpack_cmd:
.xz: unxz --keep
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
cimage_mount_path: /mnt3
cimage_mount_file: FreeBSD-15.0-RELEASE-arm64-aarch64-RPI.img
cimage_mount_mode: 0755
cimage_mount_points_create: False
cimage_mount_points:
- {fstype: ufs, mountpoint: /mnt3, partition: s2a}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
freebsd_install_retries: 10
freebsd_install_delay: 5
cimage_pkgng_rootdir: /mnt3
cimage_pkgng_use_globs: False
cimage_pkgng_chroot: UNDEFINED
cimage_pkgng_cached: UNDEFINED
cimage_pkgng_ignore_osver: UNDEFINED
cimage_pkgng_pkgsite: UNDEFINED
cimage_packages:
[]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
cimage_customize:
[]
PLAY RECAP *********************************************************************
images.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Playbook output - Download images
(env) > ansible-playbook pb.yml -t cimage_download -e cimage_download=true
PLAY [Test role vbotka.freebsd.custom_image] ***********************************
TASK [Gathering Facts] *********************************************************
[ERROR]: Task failed: Data could not be sent to remote host "10.1.0.29". Make sure this host can be reached over ssh:
fatal: [images.example.com]: UNREACHABLE! =>
changed: false
msg: 'Task failed: Data could not be sent to remote host "10.1.0.29". Make sure this
host can be reached over ssh:'
unreachable: true
PLAY RECAP *********************************************************************
images.example.com : ok=0 changed=0 unreachable=1 failed=0 skipped=0 rescued=0 ignored=0
Playbook output - Unpack images
(env) > ansible-playbook pb.yml -t cimage_unpack -e cimage_unpack=true
PLAY [Test role vbotka.freebsd.custom_image] ***********************************
TASK [Gathering Facts] *********************************************************
ok: [images.example.com]
TASK [vbotka.freebsd.custom_image : Unpack: Unpack images] *********************
ok: [images.example.com] => (item=FreeBSD-15.0-RELEASE-arm64-aarch64-RPI.img.xz)
PLAY RECAP *********************************************************************
images.example.com : ok=2 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
Playbook output - Mount image
(env) > ansible-playbook pb.yml -t cimage_mount
PLAY [Test role vbotka.freebsd.custom_image] ***********************************
TASK [Gathering Facts] *********************************************************
ok: [images.example.com]
TASK [Mount: Attach memory disk] ***********************************************
included: vbotka.freebsd.lib for images.example.com
TASK [vbotka.freebsd.lib : Al_mdconfig: Default variables.] ********************
ok: [images.example.com]
TASK [vbotka.freebsd.lib : Al_mdconfig: List memory disks.] ********************
ok: [images.example.com]
TASK [vbotka.freebsd.lib : Al_mdconfig: Create empty memory disks dictionary.] ***
ok: [images.example.com]
TASK [vbotka.freebsd.lib : Al_mdconfig: Attach memory disk.] *******************
ok: [images.example.com]
TASK [vbotka.freebsd.lib : Al_mdconfig: Add memory disk to dictionary.] ********
ok: [images.example.com]
TASK [vbotka.freebsd.custom_image : Mount: Set variable cimage_mount_dev] ******
ok: [images.example.com]
TASK [vbotka.freebsd.custom_image : Mount: Mount partitions md0] ***************
changed: [images.example.com] => (item={'partition': 's2a', 'fstype': 'ufs', 'mountpoint': '/mnt3'})
PLAY RECAP *********************************************************************
images.example.com : ok=9 changed=1 unreachable=0 failed=0 skipped=10 rescued=0 ignored=0
Playbook output - Customize image
(env) > ansible-playbook pb.yml -t cimage_customize
PLAY [Test role vbotka.freebsd.custom_image] ***********************************
TASK [Gathering Facts] *********************************************************
ok: [images.example.com]
TASK [vbotka.freebsd.custom_image : Customize image.] **************************
included: /scratch/collections/ansible_collections/vbotka/freebsd/roles/custom_image/tasks/fn/wpasupconf.yml for images.example.com => (item=wpasupconf)
included: /scratch/collections/ansible_collections/vbotka/freebsd/roles/custom_image/tasks/fn/rcconf.yml for images.example.com => (item=rcconf)
included: /scratch/collections/ansible_collections/vbotka/freebsd/roles/custom_image/tasks/fn/postinstall.yml for images.example.com => (item=postinstall)
TASK [vbotka.freebsd.custom_image : Wpasupconf: Configure /mnt3/etc/wpasupplicant.conf] ***
ok: [images.example.com] => (item=wlan0)
TASK [vbotka.freebsd.custom_image : Wpasupconf: Link to /etc/wpa_supplicant.conf.wlan0] ***
ok: [images.example.com]
TASK [vbotka.freebsd.custom_image : Rcconf: Configure /mnt3/etc/rc.conf] *******
ok: [images.example.com] => (item={'key': 'wlans_rtwn0', 'value': 'wlan0'})
ok: [images.example.com] => (item={'key': 'ifconfig_wlan0', 'value': 'WPA SYNCDHCP'})
TASK [Postinstall: Configure.] *************************************************
included: vbotka.freebsd.postinstall for images.example.com => (item=loader)
TASK [vbotka.freebsd.postinstall : Loader: Backup orig /mnt3/boot/loader.conf] ***
ok: [images.example.com]
TASK [vbotka.freebsd.postinstall : Loader: Configure by sysctl /mnt3/boot/loader.conf] ***
ok: [images.example.com] => (item={'name': 'hw.usb.template', 'value': '3'})
ok: [images.example.com] => (item={'name': 'umodem_load', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'boot_multicons', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'boot_serial', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'beastie_disable', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'loader_colo', 'value': 'NO'})
ok: [images.example.com] => (item={'name': 'legal.realtek.license_ack', 'value': '1'})
TASK [vbotka.freebsd.postinstall : Loader: Configure modules by sysctl /mnt3/boot/loader.conf] ***
ok: [images.example.com] => (item={'name': 'wlan', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'wlan_wep', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'wlan_ccmp', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'wlan_tkip', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'wlan_amrr', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'rtwn', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'if_rtwn_usb', 'value': 'YES'})
PLAY RECAP *********************************************************************
images.example.com : ok=11 changed=0 unreachable=0 failed=0 skipped=9 rescued=0 ignored=0
Playbook output - Umount image
(env) > ansible-playbook pb.yml -t cimage_umount
PLAY [Test role vbotka.freebsd.custom_image] ***********************************
TASK [Gathering Facts] *********************************************************
ok: [images.example.com]
TASK [vbotka.freebsd.custom_image : Umount: Unmount] ***************************
changed: [images.example.com] => (item=/mnt3)
TASK [Umount: Detach memory disk] **********************************************
included: vbotka.freebsd.lib for images.example.com
TASK [vbotka.freebsd.lib : Al_mdconfig: Default variables.] ********************
ok: [images.example.com]
TASK [vbotka.freebsd.lib : Al_mdconfig: List memory disks.] ********************
ok: [images.example.com]
TASK [vbotka.freebsd.lib : Al_mdconfig: Create empty memory disks dictionary.] ***
ok: [images.example.com]
TASK [vbotka.freebsd.lib : Al_mdconfig: Parse memory disks.] *******************
ok: [images.example.com] => (item=md0 vnode 5120M /export/images/FreeBSD/FreeBSD-15.0-RELEASE-arm64-aarch64-RPI.img - )
TASK [vbotka.freebsd.lib : Al_mdconfig: Detach memory disk.] *******************
changed: [images.example.com]
TASK [vbotka.freebsd.lib : Al_mdconfig: Remove memory disk from dictionary.] ***
ok: [images.example.com]
PLAY RECAP *********************************************************************
images.example.com : ok=9 changed=2 unreachable=0 failed=0 skipped=8 rescued=0 ignored=0
Playbook output - Mount, customize, and umount image
The play is not idempotent when the image is unmounted. The default is cimage_umount=true. In
this case, at least 3 tasks are changed. The image is mounted, unmounted, and the memory disk is
detached.
(env) > ansible-playbook pb.yml
PLAY [Test role vbotka.freebsd.custom_image] ***********************************
TASK [Gathering Facts] *********************************************************
ok: [images.example.com]
TASK [Mount: Attach memory disk] ***********************************************
included: vbotka.freebsd.lib for images.example.com
TASK [vbotka.freebsd.lib : Al_mdconfig: Default variables.] ********************
ok: [images.example.com]
TASK [vbotka.freebsd.lib : Al_mdconfig: List memory disks.] ********************
ok: [images.example.com]
TASK [vbotka.freebsd.lib : Al_mdconfig: Create empty memory disks dictionary.] ***
ok: [images.example.com]
TASK [vbotka.freebsd.lib : Al_mdconfig: Attach memory disk.] *******************
ok: [images.example.com]
TASK [vbotka.freebsd.lib : Al_mdconfig: Add memory disk to dictionary.] ********
ok: [images.example.com]
TASK [vbotka.freebsd.custom_image : Mount: Set variable cimage_mount_dev] ******
ok: [images.example.com]
TASK [vbotka.freebsd.custom_image : Mount: Mount partitions md0] ***************
changed: [images.example.com] => (item={'partition': 's2a', 'fstype': 'ufs', 'mountpoint': '/mnt3'})
TASK [vbotka.freebsd.custom_image : Customize image.] **************************
included: /scratch/collections/ansible_collections/vbotka/freebsd/roles/custom_image/tasks/fn/wpasupconf.yml for images.example.com => (item=wpasupconf)
included: /scratch/collections/ansible_collections/vbotka/freebsd/roles/custom_image/tasks/fn/rcconf.yml for images.example.com => (item=rcconf)
included: /scratch/collections/ansible_collections/vbotka/freebsd/roles/custom_image/tasks/fn/postinstall.yml for images.example.com => (item=postinstall)
TASK [vbotka.freebsd.custom_image : Wpasupconf: Configure /mnt3/etc/wpasupplicant.conf] ***
ok: [images.example.com] => (item=wlan0)
TASK [vbotka.freebsd.custom_image : Wpasupconf: Link to /etc/wpa_supplicant.conf.wlan0] ***
ok: [images.example.com]
TASK [vbotka.freebsd.custom_image : Rcconf: Configure /mnt3/etc/rc.conf] *******
ok: [images.example.com] => (item={'key': 'wlans_rtwn0', 'value': 'wlan0'})
ok: [images.example.com] => (item={'key': 'ifconfig_wlan0', 'value': 'WPA SYNCDHCP'})
TASK [Postinstall: Configure.] *************************************************
included: vbotka.freebsd.postinstall for images.example.com => (item=loader)
TASK [vbotka.freebsd.postinstall : Loader: Backup orig /mnt3/boot/loader.conf] ***
ok: [images.example.com]
TASK [vbotka.freebsd.postinstall : Loader: Configure by sysctl /mnt3/boot/loader.conf] ***
ok: [images.example.com] => (item={'name': 'hw.usb.template', 'value': '3'})
ok: [images.example.com] => (item={'name': 'umodem_load', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'boot_multicons', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'boot_serial', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'beastie_disable', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'loader_colo', 'value': 'NO'})
ok: [images.example.com] => (item={'name': 'legal.realtek.license_ack', 'value': '1'})
TASK [vbotka.freebsd.postinstall : Loader: Configure modules by sysctl /mnt3/boot/loader.conf] ***
ok: [images.example.com] => (item={'name': 'wlan', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'wlan_wep', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'wlan_ccmp', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'wlan_tkip', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'wlan_amrr', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'rtwn', 'value': 'YES'})
ok: [images.example.com] => (item={'name': 'if_rtwn_usb', 'value': 'YES'})
TASK [vbotka.freebsd.custom_image : Umount: Unmount] ***************************
changed: [images.example.com] => (item=/mnt3)
TASK [Umount: Detach memory disk] **********************************************
included: vbotka.freebsd.lib for images.example.com
TASK [vbotka.freebsd.lib : Al_mdconfig: Default variables.] ********************
ok: [images.example.com]
TASK [vbotka.freebsd.lib : Al_mdconfig: List memory disks.] ********************
ok: [images.example.com]
TASK [vbotka.freebsd.lib : Al_mdconfig: Create empty memory disks dictionary.] ***
ok: [images.example.com]
TASK [vbotka.freebsd.lib : Al_mdconfig: Parse memory disks.] *******************
ok: [images.example.com] => (item=md0 vnode 5120M /export/images/FreeBSD/FreeBSD-15.0-RELEASE-arm64-aarch64-RPI.img - )
TASK [vbotka.freebsd.lib : Al_mdconfig: Detach memory disk.] *******************
changed: [images.example.com]
TASK [vbotka.freebsd.lib : Al_mdconfig: Remove memory disk from dictionary.] ***
ok: [images.example.com]
PLAY RECAP *********************************************************************
images.example.com : ok=27 changed=3 unreachable=0 failed=0 skipped=43 rescued=0 ignored=0
Write the image file to USB
shell> dd if=FreeBSD-15.0-RELEASE-arm64-aarch64-RPI.img of=/dev/da1 bs=1m conv=sync status=progress
5366611968 bytes (5367 MB, 5118 MiB) transferred 150.028s, 36 MB/s
5120+0 records in
5120+0 records out
5368709120 bytes transferred in 150.164342 secs (35752224 bytes/sec)
Note
FreeBSD was used to write the image. In Linux, use bs=1M
Result
MACs are sanitized.
(env) > ssh freebsd@10.1.0.16 dmesg
---<<BOOT>>---
WARNING: Cannot find freebsd,dts-version property, cannot check DTB compliance
Copyright (c) 1992-2025 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 15.0-RELEASE releng/15.0-n280995-7aedc8de6446 GENERIC arm64
FreeBSD clang version 19.1.7 (https://github.com/llvm/llvm-project.git llvmorg-19.1.7-0-gcd708029e0b2)
VT(efifb): resolution 1824x984
real memory = 469753856 (447 MB)
avail memory = 430403584 (410 MB)
Starting CPU 1 (1)
Starting CPU 2 (2)
Starting CPU 3 (3)
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
arc4random: WARNING: initial seeding bypassed the cryptographic random device because it was not yet seeded and the knob 'bypass_before_seeding' was enabled.
random: entropy device external interface
kbd0 at kbdmux0
ofwbus0: <Open Firmware Device Tree>
simplebus0: <Flattened device tree simple bus> on ofwbus0
ofw_clkbus0: <OFW clocks bus> on ofwbus0
regfix0: <Fixed Regulator> on ofwbus0
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
regfix1: <Fixed Regulator> on ofwbus0
regfix2: <Fixed Regulator> on ofwbus0
regfix3: <Fixed Regulator> on ofwbus0
bcm2835_firmware0: <BCM2835 Firmware> on simplebus0
ofw_clkbus1: <OFW clocks bus> on bcm2835_firmware0
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
psci0: <ARM Power State Co-ordination Interface Driver> on ofwbus0
smccc0: <ARM SMCCC v1.0> on psci0
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
lintc0: <BCM2836 Interrupt Controller> mem 0x40000000-0x400000ff on simplebus0
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
intc0: <BCM2835 Interrupt Controller> mem 0x7e00b200-0x7e00b3ff irq 39 on simplebus0
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
gpio0: <BCM2708/2835 GPIO controller> mem 0x7e200000-0x7e2000b3 irq 7,8 on simplebus0
gpiobus0: <OFW GPIO bus> on gpio0
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
mbox0: <BCM2835 VideoCore Mailbox> mem 0x7e00b880-0x7e00b8bf irq 6 on simplebus0
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
generic_timer0: <ARMv7 Generic Timer> irq 1,2,3,4 on ofwbus0
Timecounter "ARM MPCore Timecounter" frequency 19200000 Hz quality 1000
Event timer "ARM MPCore Eventtimer" frequency 19200000 Hz quality 1000
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
bcm_dma0: <BCM2835 DMA Controller> mem 0x7e007000-0x7e007eff irq 23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38 on simplebus0
usb_nop_xceiv0: <USB NOP PHY> on ofwbus0
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
smbios0: <System Management BIOS>
smbios0: Entry point: v3 (64-bit), Version: 3.7
bcm2835_clkman0: <BCM283x Clock Manager> mem 0x7e101000-0x7e102fff on simplebus0
gpioc0: <GPIO controller> at pins 0-53 on gpiobus0
uart0: <PrimeCell UART (PL011)> mem 0x7e201000-0x7e2011ff irq 9 on simplebus0
uart0: console (115200,n,8,1)
spi0: <BCM2708/2835 SPI controller> mem 0x7e204000-0x7e2041ff irq 11 on simplebus0
spibus0: <OFW SPI bus> on spi0
spibus0: <unknown card> at cs 0 mode 0
spibus0: <unknown card> at cs 1 mode 0
sdhci_bcm0: <Broadcom 2708 SDHCI controller> mem 0x7e300000-0x7e3000ff irq 17 on simplebus0
mmc0: <MMC/SD bus> on sdhci_bcm0
iichb0: <BCM2708/2835 BSC controller> mem 0x7e804000-0x7e804fff irq 20 on simplebus0
bcm283x_dwcotg0: <DWC OTG 2.0 integrated USB controller (bcm283x)> mem 0x7e980000-0x7e98ffff,0x7e006000-0x7e006fff irq 21,22 on simplebus0
usbus0 on bcm283x_dwcotg0
bcmwd0: <BCM2708/2835 Watchdog> mem 0x7e100000-0x7e100113,0x7e00a000-0x7e00a023 on simplebus0
bcmrng0: <Broadcom BCM2835/BCM2838 RNG> mem 0x7e104000-0x7e10400f irq 40 on simplebus0
fb0: <BCM2835 VT framebuffer driver> on simplebus0
fb0: keeping existing fb bpp of 32
fbd0 on fb0
WARNING: Device "fb" is Giant locked and may be deleted before FreeBSD 16.0.
VT: Replacing driver "efifb" with new "fb".
fb0: 1824x984(1824x984@0,0) 32bpp
fb0: fbswap: 1, pitch 7296, base 0x1e513000, screen_size 7237632
pmu0: <Performance Monitoring Unit> irq 0 on ofwbus0
cpulist0: <Open Firmware CPU Group> on ofwbus0
cpu0: <Open Firmware CPU> on cpulist0
bcm2835_cpufreq0: <CPU Frequency Control> on cpu0
cpufreq0: <CPU frequency control> on cpu0
clk_fixed2: clock-fixed has no clock-frequency
clk_fixed2: clock-fixed has no clock-frequency
gpioled0: <GPIO LEDs> on ofwbus0
armv8crypto0: CPU lacks AES instructions
Timecounters tick every 1.000 msec
usbus0: 480Mbps High Speed USB v2.0
ugen0.1: <DWCOTG OTG Root HUB> at usbus0
uhub0 on usbus0
uhub0: <DWCOTG OTG Root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus0
mmcsd0: 32GB <SDHC JB1Q5 3.0 SN 933B6353 MFG 05/2024 by 27 SM> at mmc0 50.0MHz/4bit/65535-block
iicbus0: <OFW I2C bus> on iichb0
iic0: <I2C generic I/O> on iicbus0
bcm2835_cpufreq0: ARM 600MHz, Core 250MHz, SDRAM 400MHz, Turbo OFF
CPU 0: ARM Cortex-A53 r0p4 affinity: 0
Cache Type = <64 byte CWG,64 byte ERG,64 byte D-cacheline,VIPT I-cache,64 byte I-cacheline>
Instruction Set Attributes 0 = <CRC32>
Instruction Set Attributes 1 = <>
Instruction Set Attributes 2 = <>
Processor Features 0 = <AdvSIMD,FP,EL3 32,EL2 32,EL1 32,EL0 32>
Processor Features 1 = <MTE_frac>
Processor Features 2 = <>
Memory Model Features 0 = <TGran4,TGran64,SNSMem,BigEnd,16bit ASID,1TB PA>
Memory Model Features 1 = <8bit VMID>
Memory Model Features 2 = <32bit CCIDX,48bit VA>
Memory Model Features 3 = <>
Memory Model Features 4 = <>
Debug Features 0 = <DoubleLock,2 CTX BKPTs,4 Watchpoints,6 Breakpoints,PMUv3,Debugv8>
Debug Features 1 = <>
Auxiliary Features 0 = <>
Auxiliary Features 1 = <>
AArch32 Instruction Set Attributes 5 = <CRC32,SEVL>
AArch32 Media and VFP Features 0 = <FPRound,FPSqrt,FPDivide,DP VFPv3+v4,SP VFPv3+v4,AdvSIMD>
AArch32 Media and VFP Features 1 = <SIMDFMAC,FPHP DP Conv,SIMDHP SP Conv,SIMDSP,SIMDInt,SIMDLS,FPDNaN,FPFtZ>
CPU 1: ARM Cortex-A53 r0p4 affinity: 1
CPU 2: ARM Cortex-A53 r0p4 affinity: 2
CPU 3: ARM Cortex-A53 r0p4 affinity: 3
lintc0: using for IPIs
Release APs...done
TCP_ratelimit: Is now initialized
Trying to mount root from ufs:/dev/ufs/rootfs [rw]...
Warning: no time-of-day clock registered, system time will not be set accurately
uhub0: 1 port with 1 removable, self powered
Dual Console: Serial Primary, Video Secondary
ugen0.2: <Realtek 802.11n NIC> at usbus0
rtwn0 on uhub0
rtwn0: <Realtek 802.11n NIC, class 0/0, rev 2.00/0.00, addr 2> on usbus0
rtwn0: MAC/BB RTL8188EU, RF 6052 1T1R
random: randomdev_wait_until_seeded unblock wait
random: unblocking device.
GEOM_PART: mmcsd0s2 was automatically resized.
Use `gpart commit mmcsd0s2` to save changes or `gpart undo mmcsd0s2` to revert them.
wlan0: Ethernet address: 11:22:33:44:55:66
lo0: link state changed to UP
wlan0: link state changed to UP