├── .github ├── CODEOWNERS ├── FUNDING.yml └── workflows │ ├── project_automation.yml │ └── shellcheck.yml ├── .gitignore ├── Jenkinsfile-ISO ├── LICENSE ├── README.md ├── boot └── loader.conf ├── build.sh ├── common_config ├── autologin.sh ├── base-setting.sh ├── base-setting │ └── patches │ │ └── etc │ │ ├── devfs.rules.extra │ │ └── fstab.extra ├── finalize.sh ├── gitpkg.sh └── setuser.sh ├── desktop_config ├── mate.sh ├── mate_oem.sh ├── test.sh └── xfce.sh ├── init.sh.in ├── packages ├── base ├── common ├── drivers ├── mate ├── mate_oem ├── test ├── test_base ├── vital │ ├── base │ ├── common │ ├── mate │ ├── mate_oem │ └── xfce └── xfce ├── pkg ├── FreeBSD.conf ├── GhostBSD.conf └── GhostBSD_Unstable.conf ├── rc.in └── script ├── install-boot.sh └── mkisoimages.sh /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Each line is a file pattern followed by one or more owners. 2 | 3 | # These owners will be the default owners for everything in 4 | # the repo. Unless a later match takes precedence, 5 | # @global-owner1 and @global-owner2 will be requested for 6 | # review when someone opens a pull request. 7 | # * @global-owner1 @global-owner2 8 | * @ghostbsd/contributors @ghostbsd/new-contributors @ghostbsd/core-contributors @ghostbsd/project-leader -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: GhostBSD 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | custom: ['https://www.ghostbsd.org/donate'] 14 | -------------------------------------------------------------------------------- /.github/workflows/project_automation.yml: -------------------------------------------------------------------------------- 1 | name: Project automations 2 | 3 | on: 4 | pull_request_target: 5 | types: 6 | - opened 7 | branches: 8 | - 'master' 9 | 10 | # map fields with customized labels 11 | env: 12 | in_review: In Review 13 | 14 | jobs: 15 | pr_opened: 16 | name: pr_opened 17 | runs-on: ubuntu-latest 18 | if: github.event_name == 'pull_request_target' && github.event.action == 'opened' 19 | steps: 20 | - name: Move PR to ${{ env.in_review }} 21 | uses: leonsteinhaeuser/project-beta-automations@v2.1.0 22 | with: 23 | gh_token: ${{ secrets.MY_GITHUB_TOKEN }} 24 | # user: ghostbsd 25 | organization: ghostbsd 26 | project_id: 4 27 | resource_node_id: ${{ github.event.pull_request.node_id }} 28 | status_value: ${{ env.in_review }} 29 | -------------------------------------------------------------------------------- /.github/workflows/shellcheck.yml: -------------------------------------------------------------------------------- 1 | name: 'Verify code with ShellCheck' 2 | on: 3 | pull_request: 4 | branches: [master] 5 | 6 | jobs: 7 | shellcheck: 8 | name: Shellcheck 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v2 12 | - name: Run ShellCheck 13 | uses: ludeeus/action-shellcheck@master 14 | env: 15 | SHELLCHECK_OPTS: -x -e SC2154 16 | with: 17 | ignore: script 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | custom 2 | efi 3 | .idea -------------------------------------------------------------------------------- /Jenkinsfile-ISO: -------------------------------------------------------------------------------- 1 | pipeline { 2 | agent { 3 | label 'GhostBSD-ISO' 4 | } 5 | 6 | stages { 7 | 8 | stage('clean') { 9 | steps { 10 | sh 'cd /usr/local/ghostbsd-build/trueos && rm *.iso || true' 11 | sh 'rm -rf ghostbsd-build || true' 12 | } 13 | } 14 | 15 | stage('pull') { 16 | steps { 17 | sh 'git clone https://github.com/ghostbsd/ghostbsd-build --depth=1|| true' 18 | } 19 | } 20 | 21 | stage('build') { 22 | steps { 23 | sh 'cd ghostbsd-build && ./build.sh trueos mate' 24 | } 25 | } 26 | 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2009-2023, GhostBSD 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, 5 | are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, this 11 | list of conditions and the following disclaimer in the documentation and/or 12 | other materials provided with the distribution. 13 | 14 | * Neither the name of the {organization} nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 22 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 23 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 24 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 25 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 27 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ghostbsd-build 2 | ============== 3 | Live media creator for GhostBSD distribution 4 | 5 | ## Introduction 6 | The purpose of this tool is to quickly generate live images for GhostBSD. 7 | 8 | ## Features 9 | * Build GhostBSD from packages 10 | * Mate and XFCE desktop environments 11 | * Hybrid DVD/USB image 12 | 13 | ## Graphics support 14 | * Compatible with VirtualBox, VMware, NVIDIA graphics out of box 15 | * SCFB support with automatic best resolution for UEFI enabled systems with Intel/AMD graphics 16 | 17 | ## System requirements 18 | * Latest version of GhostBSD 19 | * 20GB of free disk space 20 | * 4GB of free memory 21 | 22 | Note: GhostBSD 22.01.12 and later should be used to build ISO. 23 | 24 | ## Initial setup 25 | Install the required packages: 26 | ``` 27 | pkg install git transmission-utils rsync 28 | ``` 29 | Make sure to have linux64 kernel module loaded 30 | ``` 31 | kldload linux64 32 | sysrc -f /etc/rc.conf kld_list="linux64" 33 | ``` 34 | Clone the repo: 35 | ``` 36 | git clone https://www.github.com/ghostbsd/ghostbsd-build.git 37 | ``` 38 | ## Starting a build 39 | #### Enter the directory for running the LiveCD build script: 40 | ``` 41 | cd ghostbsd-build 42 | ``` 43 | 44 | #### To build a GhostBSD with __MATE__ as default desktop 45 | ``` 46 | ./build.sh -d mate -b unstable 47 | ``` 48 | or 49 | ``` 50 | ./build.sh -d mate -b release 51 | ``` 52 | 53 | #### (Option) To build GhostBSD with __XFCE__ as default desktop 54 | ``` 55 | ./build.sh -d xfce -b unstable 56 | ``` 57 | 58 | ## Burn an image to cd: 59 | ``` 60 | cdrecord /usr/local/ghostbsd-build/iso/GhostBSD-22.01.12.iso 61 | ``` 62 | 63 | ## Write an image to usb stick: 64 | ``` 65 | dd if=/usr/local/ghostbsd-build/iso/GhostBSD-22.01.12.iso of=/dev/da0 bs=4m 66 | ``` 67 | -------------------------------------------------------------------------------- /boot/loader.conf: -------------------------------------------------------------------------------- 1 | geom_uzip_load="YES" 2 | geom_mirror_load="YES" 3 | 4 | mfsroot_load="YES" 5 | mfsroot_type="md_image" 6 | mfsroot_name="/data/ramdisk.ufs" 7 | vfs.root.mountfrom="ufs:/dev/md0" 8 | 9 | # Wait for all device probe to complete before mounting root, even if the 10 | # root device is already available. This allows to avoid USB probe messages 11 | # printed over the installer menu. This is needed only in installer with 12 | # its UFS, since ZFS root of installed system implies it automatically. 13 | vfs.root_mount_always_wait="1" 14 | 15 | # The following delay during mounting of root file 16 | # system is needed because mounting of an IPMI CD-ROM 17 | # sometimes slow. 18 | vfs.mountroot.timeout="30" 19 | 20 | # Disable entropy cache load 21 | entropy_cache_load="YES" 22 | 23 | init_path="/rescue/init" 24 | init_shell="/rescue/sh" 25 | init_script="/init.sh" 26 | init_chroot="/" 27 | 28 | # hw.syscons.disable=1 29 | hw.psm.synaptics_support="1" 30 | net.inet.ip.fw.default_to_accept="1" 31 | 32 | # Load modules for OpenZFS 33 | cryptodev_load="YES" 34 | zfs_load="YES" 35 | 36 | # Tune arc for lower memory usage during LiveCD session 37 | # vm.kmem_size="512M" 38 | # vm.kmem_size_max="1024M" 39 | vfs.zfs.arc_max="64M" 40 | # vfs.zfs.vdev.cache.size="5M" 41 | 42 | # We can safely disable pre-fetch as we are already running from memory. 43 | vfs.zfs.prefetch_disable="1" 44 | 45 | # For XHCI Mouse Support 46 | hw.usb.usbhid.enable="1" 47 | usbhid_load="YES" 48 | # For UTouch Support 49 | utouch_load="YES" 50 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | set -e -u 4 | 5 | cwd="$(realpath)" 6 | export cwd 7 | 8 | # Only run as superuser 9 | if [ "$(id -u)" != "0" ]; then 10 | echo "This script must be run as root" 1>&2 11 | exit 1 12 | fi 13 | 14 | # Use find to locate base files and extract filenames directly, converting newlines to spaces 15 | find packages -type f ! -name '*base*' ! -name '*common*' ! -name '*drivers*' -exec basename {} \; | sort -u | tr '\n' ' ' 16 | 17 | # Find all files in the desktop_config directory 18 | desktop_config_list=$(find desktop_config -type f) 19 | help_function() 20 | { 21 | printf "Usage: %s -d desktop -r release type\n" "$0" 22 | printf "\t-h for help\n" 23 | printf "\t-d Desktop: %s\n" "${desktop_list}" 24 | printf "\t-b Build type: unstable or release\n" 25 | printf "\t-t Test: FreeBSD os packages\n" 26 | exit 1 # Exit script after printing help 27 | } 28 | # Set mate and release to be default 29 | export desktop="mate" 30 | export build_type="release" 31 | 32 | while getopts "d:b:th" opt 33 | do 34 | case "$opt" in 35 | 'd') export desktop="$OPTARG" ;; 36 | 'b') export build_type="$OPTARG" ;; 37 | 't') export desktop="test" ; build_type="test";; 38 | 'h') help_function ;; 39 | '?') help_function ;; 40 | *) help_function ;; 41 | esac 42 | done 43 | 44 | if [ "${build_type}" = "test" ] ; then 45 | PKG_CONF="FreeBSD" 46 | elif [ "${build_type}" = "release" ] ; then 47 | PKG_CONF="GhostBSD" 48 | elif [ "${build_type}" = "unstable" ] ; then 49 | PKG_CONF="GhostBSD_Unstable" 50 | else 51 | printf "\t-b Build type: unstable or release" 52 | exit 1 53 | fi 54 | 55 | # validate desktop packages 56 | if [ ! -f "${cwd}/packages/${desktop}" ] ; then 57 | echo "The packages/${desktop} file does not exist." 58 | echo "Please create a package file named '${desktop}'and place it under packages/." 59 | echo "Or use a valid desktop below:" 60 | echo "$desktop_list" 61 | echo "Usage: ./build.sh -d desktop" 62 | exit 1 63 | fi 64 | 65 | # validate desktop 66 | if [ ! -f "${cwd}/desktop_config/${desktop}.sh" ] ; then 67 | echo "The desktop_config/${desktop}.sh file does not exist." 68 | echo "Please create a config file named '${desktop}.sh' like these config:" 69 | echo "$desktop_config_list" 70 | exit 1 71 | fi 72 | 73 | if [ "${desktop}" != "mate" ] ; then 74 | DESKTOP=$(echo "${desktop}" | tr '[:lower:]' '[:upper:]') 75 | community="-${DESKTOP}" 76 | else 77 | community="" 78 | fi 79 | 80 | workdir="/usr/local" 81 | livecd="${workdir}/ghostbsd-build" 82 | base="${livecd}/base" 83 | iso="${livecd}/iso" 84 | packages_storage="${livecd}/packages" 85 | release="${livecd}/release" 86 | export release 87 | cd_root="${livecd}/cd_root" 88 | live_user="ghostbsd" 89 | export live_user 90 | 91 | time_stamp="" 92 | release_stamp="" 93 | label="GhostBSD" 94 | 95 | workspace() 96 | { 97 | # Unmount any existing mounts and clean up 98 | umount ${packages_storage} >/dev/null 2>/dev/null || true 99 | umount ${release}/dev >/dev/null 2>/dev/null || true 100 | zpool destroy ghostbsd >/dev/null 2>/dev/null || true 101 | umount ${release} >/dev/null 2>/dev/null || true 102 | 103 | # Remove old build directory if it exists 104 | if [ -d "${cd_root}" ] ; then 105 | chflags -R noschg ${cd_root} 106 | rm -rf ${cd_root} 107 | fi 108 | 109 | # Detach memory device if previously attached 110 | mdconfig -d -u 0 >/dev/null 2>/dev/null || true 111 | 112 | # Remove old pool image if it exists 113 | if [ -f "${livecd}/pool.img" ] ; then 114 | rm ${livecd}/pool.img 115 | fi 116 | 117 | # Create necessary directories for the build 118 | mkdir -p ${livecd} ${base} ${iso} ${packages_storage} ${release} 119 | 120 | # Create a new pool image file of 6GB 121 | POOL_SIZE='6g' 122 | truncate -s ${POOL_SIZE} ${livecd}/pool.img 123 | 124 | # Attach the pool image as a memory disk 125 | mdconfig -f ${livecd}/pool.img -u 0 126 | 127 | # Attempt to create the ZFS pool with error handling 128 | if ! zpool create -O mountpoint="${release}" -O compression=zstd-9 ghostbsd /dev/md0; then 129 | # Provide detailed error message in case of failure 130 | echo "Error: Failed to create ZFS pool 'ghostbsd' with the following command:" 131 | echo "zpool create -O mountpoint='${release}' -O compression=zstd-9 ghostbsd /dev/md0" 132 | 133 | # Clean up resources in case of failure 134 | zpool destroy ghostbsd 2>/dev/null || true 135 | mdconfig -d -u 0 2>/dev/null || true 136 | rm -f ${livecd}/pool.img 2>/dev/null || true 137 | 138 | # Exit with an error code 139 | exit 1 140 | fi 141 | } 142 | 143 | base() 144 | { 145 | if [ "${desktop}" = "test" ] ; then 146 | base_list="$(cat "${cwd}/packages/test_base")" 147 | vital_base="$(cat "${cwd}/packages/vital/test_base")" 148 | else 149 | base_list="$(cat "${cwd}/packages/base")" 150 | vital_base="$(cat "${cwd}/packages/vital/base")" 151 | fi 152 | mkdir -p ${release}/etc 153 | cp /etc/resolv.conf ${release}/etc/resolv.conf 154 | mkdir -p ${release}/var/cache/pkg 155 | mount_nullfs ${packages_storage} ${release}/var/cache/pkg 156 | # shellcheck disable=SC2086 157 | pkg -r ${release} -R "${cwd}/pkg/" install -y -r ${PKG_CONF}_base ${base_list} 158 | # shellcheck disable=SC2086 159 | pkg -r ${release} -R "${cwd}/pkg/" set -y -v 1 ${vital_base} 160 | rm ${release}/etc/resolv.conf 161 | umount ${release}/var/cache/pkg 162 | touch ${release}/etc/fstab 163 | mkdir ${release}/cdrom 164 | } 165 | 166 | set_ghostbsd_version() 167 | { 168 | if [ "${desktop}" = "test" ] ; then 169 | version="$(date +%Y-%m-%d)" 170 | else 171 | version="-$(cat ${release}/etc/version)" 172 | fi 173 | iso_path="${iso}/${label}${version}${release_stamp}${time_stamp}${community}.iso" 174 | } 175 | 176 | packages_software() 177 | { 178 | if [ "${build_type}" = "unstable" ] ; then 179 | cp pkg/GhostBSD_Unstable.conf ${release}/etc/pkg/GhostBSD.conf 180 | fi 181 | cp /etc/resolv.conf ${release}/etc/resolv.conf 182 | mkdir -p ${release}/var/cache/pkg 183 | mount_nullfs ${packages_storage} ${release}/var/cache/pkg 184 | mount -t devfs devfs ${release}/dev 185 | de_packages="$(cat "${cwd}/packages/${desktop}")" 186 | common_packages="$(cat "${cwd}/packages/common")" 187 | drivers_packages="$(cat "${cwd}/packages/drivers")" 188 | vital_de_packages="$(cat "${cwd}/packages/vital/${desktop}")" 189 | vital_common_packages="$(cat "${cwd}/packages/vital/common")" 190 | # shellcheck disable=SC2086 191 | pkg -c ${release} install -y ${de_packages} ${common_packages} ${drivers_packages} 192 | # shellcheck disable=SC2086 193 | pkg -c ${release} set -y -v 1 ${vital_de_packages} ${vital_common_packages} 194 | mkdir -p ${release}/proc 195 | mkdir -p ${release}/compat/linux/proc 196 | rm ${release}/etc/resolv.conf 197 | umount ${release}/var/cache/pkg 198 | } 199 | 200 | fetch_x_drivers_packages() 201 | { 202 | if [ "${build_type}" = "release" ] ; then 203 | pkg_url=$(pkg -R pkg/ -vv | grep '/stable.*/latest' | cut -d '"' -f2) 204 | else 205 | pkg_url=$(pkg -R pkg/ -vv | grep '/unstable.*/latest' | cut -d '"' -f2) 206 | fi 207 | mkdir ${release}/xdrivers 208 | yes | pkg -R "${cwd}/pkg/" update 209 | echo """$(pkg -R "${cwd}/pkg/" rquery -x -r ${PKG_CONF} '%n %n-%v.pkg' 'nvidia-driver' | grep -v libva)""" > ${release}/xdrivers/drivers-list 210 | pkg_list="""$(pkg -R "${cwd}/pkg/" rquery -x -r ${PKG_CONF} '%n-%v.pkg' 'nvidia-driver' | grep -v libva)""" 211 | for line in $pkg_list ; do 212 | fetch -o ${release}/xdrivers "${pkg_url}/All/$line" 213 | done 214 | } 215 | 216 | rc() 217 | { 218 | chroot ${release} touch /etc/rc.conf 219 | chroot ${release} sysrc hostname='livecd' 220 | chroot ${release} sysrc zfs_enable="YES" 221 | chroot ${release} sysrc kld_list="linux linux64 cuse fusefs hgame" 222 | chroot ${release} sysrc linux_enable="YES" 223 | chroot ${release} sysrc devfs_enable="YES" 224 | chroot ${release} sysrc devfs_system_ruleset="devfsrules_common" 225 | chroot ${release} sysrc moused_enable="YES" 226 | chroot ${release} sysrc dbus_enable="YES" 227 | chroot ${release} sysrc lightdm_enable="NO" 228 | chroot ${release} sysrc webcamd_enable="YES" 229 | chroot ${release} sysrc firewall_enable="YES" 230 | chroot ${release} sysrc firewall_type="workstation" 231 | chroot ${release} sysrc cupsd_enable="YES" 232 | chroot ${release} sysrc avahi_daemon_enable="YES" 233 | chroot ${release} sysrc avahi_dnsconfd_enable="YES" 234 | chroot ${release} sysrc ntpd_enable="YES" 235 | chroot ${release} sysrc ntpd_sync_on_start="YES" 236 | chroot ${release} sysrc clear_tmp_enable="YES" 237 | } 238 | 239 | ghostbsd_config() 240 | { 241 | # echo "gop set 0" >> ${release}/boot/loader.rc.local 242 | mkdir -p ${release}/usr/local/share/ghostbsd 243 | echo "${desktop}" > ${release}/usr/local/share/ghostbsd/desktop 244 | # Mkdir for linux compat to ensure /etc/fstab can mount when booting LiveCD 245 | chroot ${release} mkdir -p /compat/linux/dev/shm 246 | # Add /boot/entropy file 247 | chroot ${release} touch /boot/entropy 248 | # default GhostBSD to local time instead of UTC 249 | chroot ${release} touch /etc/wall_cmos_clock 250 | } 251 | 252 | desktop_config() 253 | { 254 | # run config for GhostBSD flavor 255 | sh "${cwd}/desktop_config/${desktop}.sh" 256 | } 257 | 258 | uzip() 259 | { 260 | install -o root -g wheel -m 755 -d "${cd_root}" 261 | mkdir "${cd_root}/data" 262 | zfs snapshot ghostbsd@clean 263 | zfs send -p -c -e ghostbsd@clean | dd of=/usr/local/ghostbsd-build/cd_root/data/system.img status=progress bs=1M 264 | } 265 | 266 | ramdisk() 267 | { 268 | ramdisk_root="${cd_root}/data/ramdisk" 269 | mkdir -p "${ramdisk_root}" 270 | cd "${release}" 271 | tar -cf - rescue | tar -xf - -C "${ramdisk_root}" 272 | cd "${cwd}" 273 | install -o root -g wheel -m 755 "init.sh.in" "${ramdisk_root}/init.sh" 274 | sed "s/@VOLUME@/GHOSTBSD/" "init.sh.in" > "${ramdisk_root}/init.sh" 275 | mkdir "${ramdisk_root}/dev" 276 | mkdir "${ramdisk_root}/etc" 277 | touch "${ramdisk_root}/etc/fstab" 278 | install -o root -g wheel -m 755 "rc.in" "${ramdisk_root}/etc/rc" 279 | cp ${release}/etc/login.conf ${ramdisk_root}/etc/login.conf 280 | makefs -b '10%' "${cd_root}/data/ramdisk.ufs" "${ramdisk_root}" 281 | gzip "${cd_root}/data/ramdisk.ufs" 282 | rm -rf "${ramdisk_root}" 283 | } 284 | 285 | boot() 286 | { 287 | cd "${release}" 288 | tar -cf - boot | tar -xf - -C "${cd_root}" 289 | cp COPYRIGHT ${cd_root}/COPYRIGHT 290 | cd "${cwd}" 291 | cp LICENSE ${cd_root}/LICENSE 292 | cp -R boot/ ${cd_root}/boot/ 293 | mkdir ${cd_root}/etc 294 | 295 | # Try to unmount dev and release if mounted 296 | umount ${release}/dev >/dev/null 2>/dev/null || true 297 | umount ${release} >/dev/null 2>/dev/null || true 298 | 299 | # Export ZFS pool and ensure it's clean 300 | zpool export ghostbsd 301 | timeout=10 302 | while zpool status ghostbsd >/dev/null 2>&1; do 303 | sleep 1 304 | timeout=$((timeout - 1)) 305 | if [ $timeout -eq 0 ]; then 306 | echo "Failed to cleanly export ZFS pool within timeout" 307 | break 308 | fi 309 | done 310 | } 311 | 312 | image() 313 | { 314 | cd script 315 | sh mkisoimages.sh -b $label "$iso_path" ${cd_root} 316 | cd - 317 | ls -lh "$iso_path" 318 | cd ${iso} 319 | shafile=$(echo "${iso_path}" | cut -d / -f6).sha256 320 | torrent=$(echo "${iso_path}" | cut -d / -f6).torrent 321 | tracker1="http://tracker.openbittorrent.com:80/announce" 322 | tracker2="udp://tracker.opentrackr.org:1337" 323 | tracker3="udp://tracker.coppersurfer.tk:6969" 324 | echo "Creating sha256 \"${iso}/${shafile}\"" 325 | sha256 "$(echo "${iso_path}" | cut -d / -f6)" > "${iso}/${shafile}" 326 | transmission-create -o "${iso}/${torrent}" -t ${tracker1} -t ${tracker2} -t ${tracker3} "${iso_path}" 327 | chmod 644 "${iso}/${torrent}" 328 | cd - 329 | } 330 | 331 | workspace 332 | base 333 | set_ghostbsd_version 334 | if [ "${desktop}" != "test" ] ; then 335 | packages_software 336 | fetch_x_drivers_packages 337 | rc 338 | desktop_config 339 | ghostbsd_config 340 | fi 341 | uzip 342 | ramdisk 343 | boot 344 | image 345 | -------------------------------------------------------------------------------- /common_config/autologin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e -u 4 | 5 | ghostbsd_setup_autologin() 6 | { 7 | { 8 | echo "# ${live_user} user autologin" 9 | echo "${live_user}:\\" 10 | echo ":al=${live_user}:ht:np:sp#115200:" 11 | } >> "${release}/etc/gettytab" 12 | sed -i "" "/ttyv0/s/Pc/${live_user}/g" "${release}/etc/ttys" 13 | mkdir -p "${release}/home/${live_user}/.config/fish" 14 | printf "set tty (tty) 15 | if test \$tty = \"/dev/ttyv0\" 16 | sudo xconfig auto 17 | sleep 1 18 | sudo rm -rf /xdrivers 19 | sleep 1 20 | startx 21 | sleep 1 22 | startx 23 | end 24 | " > "${release}/home/${live_user}/.config/fish/config.fish" 25 | chmod 765 "${release}/home/${live_user}/.config/fish/config.fish" 26 | 27 | # setup root 28 | mkdir -p "${release}/root/.config/fish" 29 | printf "set tty (tty) 30 | if test \$tty = \"/dev/ttyv0\" 31 | exec startx 32 | end 33 | " > "${release}/root/.config/fish/config.fish" 34 | chmod 765 "${release}/root/.config/fish/config.fish" 35 | } 36 | 37 | community_setup_autologin() 38 | { 39 | { 40 | echo "# ${live_user} user autologin" 41 | echo "${live_user}:\\" 42 | echo ":al=${live_user}:ht:np:sp#115200:" 43 | } >> "${release}/etc/gettytab" 44 | sed -i "" "/ttyv0/s/Pc/${live_user}/g" "${release}/etc/ttys" 45 | mkdir -p "${release}/home/${live_user}/.config/fish" 46 | if [ -f "${release}/usr/local/bin/xconfig" ] ; then 47 | printf "if not test -f /tmp/.xstarted 48 | touch /tmp/.xstarted 49 | set tty (tty) 50 | if test \$tty = \"/dev/ttyv0\" 51 | sudo xconfig auto 52 | sleep 1 53 | echo \"X configuation completed\" 54 | sleep 1 55 | sudo rm -rf /xdrivers 56 | sleep 1 57 | startx 58 | end 59 | end 60 | " > "${release}/home/${live_user}/.config/fish/config.fish" 61 | chmod 765 "${release}/home/${live_user}/.config/fish/config.fish" 62 | fi 63 | } 64 | -------------------------------------------------------------------------------- /common_config/base-setting.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e -u 4 | 5 | patch_etc_files() 6 | { 7 | cat "${cwd}/common_config/base-setting/patches/etc/devfs.rules.extra" >> "${release}/etc/devfs.rules" 8 | cat "${cwd}/common_config/base-setting/patches/etc/fstab.extra" >> "${release}/etc/fstab" 9 | mkdir -p "${release}/compat/linux/dev/shm" 10 | mkdir -p "${release}/compat/linux/sys" 11 | } -------------------------------------------------------------------------------- /common_config/base-setting/patches/etc/devfs.rules.extra: -------------------------------------------------------------------------------- 1 | [devfsrules_common=7] 2 | add path 'acd[0-9]*' mode 666 3 | add path 'ad[0-9]*' mode 666 4 | add path 'ada[0-9]*' mode 666 5 | add path 'cd[0-9]*' mode 666 6 | add path 'cx23885*' mode 666 7 | add path 'cx88*' mode 666 8 | add path 'da[0-9]*' mode 666 9 | add path 'dri/*' mode 666 10 | add path 'drm/*' mode 666 11 | add path 'dvb/*' mode 666 12 | add path 'fd[0-9]*' mode 666 13 | add path 'iicdev*' mode 666 14 | add path 'lpt[0-9]*' mode 666 15 | add path 'mmcsd[0-9]*' mode 666 16 | add path 'pass[0-9]*' mode 666 17 | add path 'tuner[0-9]*' mode 666 18 | add path 'ugen[0-9]*' mode 666 19 | add path 'ulpt[0-9]*' mode 666 20 | add path 'unlpt[0-9]*' mode 666 21 | add path 'usb/*' mode 666 22 | add path 'usbctl' mode 666 23 | add path 'uscan[0-9]*' mode 666 24 | add path 'uvisor[0-9]*' mode 666 25 | add path 'video[0-9]*' mode 666 26 | add path 'xpt[0-9]*' mode 666 27 | -------------------------------------------------------------------------------- /common_config/base-setting/patches/etc/fstab.extra: -------------------------------------------------------------------------------- 1 | proc /proc procfs rw 0 0 2 | linproc /compat/linux/proc linprocfs rw 0 0 3 | tmpfs /tmp tmpfs rw,mode=1777 0 0 4 | linsysfs /compat/linux/sys linsysfs rw 0 0 5 | fdesc /dev/fd fdescfs rw 0 0 6 | -------------------------------------------------------------------------------- /common_config/finalize.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e -u 4 | 5 | default_ghostbsd_rc_conf() 6 | { 7 | cp "${release}/etc/rc.conf" "${release}/etc/rc.conf.ghostbsd" 8 | } 9 | 10 | set_sudoers() 11 | { 12 | sed -i "" -e 's/# %wheel ALL=(ALL:ALL) ALL/%wheel ALL=(ALL:ALL) ALL/g' "${release}/usr/local/etc/sudoers" 13 | sed -i "" -e 's/# %sudo/%sudo/g' "${release}/usr/local/etc/sudoers" 14 | } 15 | 16 | final_setup() 17 | { 18 | default_ghostbsd_rc_conf 19 | set_sudoers 20 | } 21 | -------------------------------------------------------------------------------- /common_config/gitpkg.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e -u 4 | 5 | # Installing pc-sysinstall 6 | git_pc_sysinstall() 7 | { 8 | if [ ! -d "${release}/pc-sysinstall" ]; then 9 | echo "Downloading pc-sysinstall from GitHub" 10 | # git clone -b locale https://github.com/ghostbsd/pc-sysinstall.git "${release}/pc-sysinstall" >/dev/null 2>&1 11 | cp -R /usr/home/ericbsd/projects/ghostbsd/pc-sysinstall "${release}/pc-sysinstall" 12 | fi 13 | 14 | cat > "${release}/config.sh" << 'EOF' 15 | #!/bin/sh 16 | set -e -u 17 | echo "installing pc-syinstall" 18 | cd /pc-sysinstall 19 | sh install.sh >/dev/null 2>&1 20 | EOF 21 | 22 | chroot "${release}" sh /config.sh 23 | rm -f "${release}/config.sh" 24 | rm -rf "${release}/pc-sysinstall" 25 | } 26 | 27 | git_gbi() 28 | { 29 | if [ ! -d "${release}/gbi" ]; then 30 | echo "Downloading gbi from GitHub" 31 | # git clone -b ghostbsd-src/issues/105 https://github.com/GhostBSD/gbi.git "${release}/gbi" >/dev/null 2>&1 32 | cp -R /usr/home/ericbsd/projects/ghostbsd/gbi "${release}/gbi" 33 | fi 34 | 35 | cat > "${release}/config.sh" << 'EOF' 36 | #!/bin/sh 37 | set -e -u 38 | echo "installing gbi from GitHub" 39 | cd /gbi 40 | python3 setup.py install >/dev/null 2>&1 41 | EOF 42 | 43 | chroot "${release}" sh /config.sh 44 | rm -f "${release}/config.sh" 45 | rm -rf "${release}/gbi" 46 | } 47 | 48 | git_install_station() 49 | { 50 | if [ ! -d "${release}/install-station" ]; then 51 | echo "Downloading install-station from GitHub" 52 | # git clone https://github.com/GhostBSD/install-station.git "${release}/install-station" >/dev/null 2>&1 53 | cp -R /usr/home/ericbsd/projects/ghostbsd/install-station "${release}/install-station" 54 | fi 55 | 56 | cat > "${release}/config.sh" << 'EOF' 57 | #!/bin/sh 58 | set -e -u 59 | echo "installing install-station from GitHub" 60 | cd /install-station 61 | python3 setup.py install >/dev/null 2>&1 62 | EOF 63 | 64 | chroot "${release}" sh /config.sh 65 | rm -f "${release}/config.sh" 66 | rm -rf "${release}/install-station" 67 | } 68 | 69 | git_setup_station() 70 | { 71 | if [ ! -d "${release}/setup-station" ]; then 72 | echo "Downloading setup-station from GitHub" 73 | # git clone https://github.com/GhostBSD/setup-station.git "${release}/setup-station" >/dev/null 2>&1 74 | cp -R /usr/home/ericbsd/projects/ghostbsd/setup-station "${release}/setup-station" 75 | fi 76 | 77 | cat > "${release}/config.sh" << 'EOF' 78 | #!/bin/sh 79 | set -e -u 80 | echo "installing setup-station from GitHub" 81 | cd /setup-station 82 | python3 setup.py install >/dev/null 2>&1 83 | EOF 84 | 85 | chroot "${release}" sh /config.sh 86 | rm -f "${release}/config.sh" 87 | rm -rf "${release}/setup-station" 88 | } 89 | -------------------------------------------------------------------------------- /common_config/setuser.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e -u 4 | 5 | set_user() 6 | { 7 | chroot "${release}" pw useradd "${live_user}" -u 1100 \ 8 | -c "GhostBSD Live User" -d "/home/${live_user}" \ 9 | -g wheel -G operator -m -s /usr/local/bin/fish -k /usr/share/skel -w none 10 | } 11 | 12 | ghostbsd_setup_liveuser() 13 | { 14 | set_user 15 | chroot "${release}" su "${live_user}" -c "mkdir -p /home/${live_user}/.config/gtk-3.0" 16 | chroot "${release}" su "${live_user}" -c "echo '[Settings]' >> /home/${live_user}/.config/gtk-3.0/settings.ini" 17 | chroot "${release}" su "${live_user}" -c "echo 'gtk-application-prefer-dark-theme = false' >> /home/${live_user}/.config/gtk-3.0/settings.ini" 18 | chroot "${release}" su "${live_user}" -c "echo 'gtk-theme-name = Vimix' >> /home/${live_user}/.config/gtk-3.0/settings.ini" 19 | chroot "${release}" su "${live_user}" -c "echo 'gtk-icon-theme-name = Vivacious-Colors-Dark' >> /home/${live_user}/.config/gtk-3.0/settings.ini" 20 | chroot "${release}" su "${live_user}" -c "echo 'gtk-font-name = Droid Sans Bold 12' >> /home/${live_user}/.config/gtk-3.0/settings.ini" 21 | mkdir -p "${release}/root/.config/gtk-3.0" 22 | { 23 | echo '[Settings]' 24 | echo 'gtk-application-prefer-dark-theme = false' 25 | echo 'gtk-theme-name = Vimix' 26 | echo 'gtk-icon-theme-name = Vivacious-Colors-Dark' 27 | echo 'gtk-font-name = Droid Sans Bold 12' 28 | } > "${release}/root/.config/gtk-3.0/settings.ini" 29 | } 30 | 31 | community_setup_liveuser() 32 | { 33 | set_user 34 | chroot "${release}" su "${live_user}" -c "mkdir -p /home/${live_user}/Desktop" 35 | 36 | if [ -e "${release}/usr/local/share/applications/gbi.desktop" ] ; then 37 | chroot "${release}" su "${live_user}" -c "cp -af /usr/local/share/applications/gbi.desktop /home/${live_user}/Desktop" 38 | chroot "${release}" su "${live_user}" -c "chmod +x /home/${live_user}/Desktop/gbi.desktop" 39 | sed -i '' -e 's/NoDisplay=true/NoDisplay=false/g' "${release}/home/${live_user}/Desktop/gbi.desktop" 40 | fi 41 | } 42 | -------------------------------------------------------------------------------- /desktop_config/mate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e -u 4 | 5 | . "${cwd}/common_config/autologin.sh" 6 | . "${cwd}/common_config/base-setting.sh" 7 | . "${cwd}/common_config/finalize.sh" 8 | . "${cwd}/common_config/setuser.sh" 9 | 10 | lightdm_setup() 11 | { 12 | sed -i '' "s@#greeter-session=example-gtk-gnome@greeter-session=slick-greeter@" "${release}/usr/local/etc/lightdm/lightdm.conf" 13 | sed -i '' "s@#user-session=default@user-session=mate@" "${release}/usr/local/etc/lightdm/lightdm.conf" 14 | } 15 | 16 | setup_xinit() 17 | { 18 | chroot "${release}" su "${live_user}" -c "echo 'gsettings set org.mate.SettingsDaemon.plugins.housekeeping active true &' > /home/${live_user}/.xinitrc" 19 | chroot "${release}" su "${live_user}" -c "echo 'gsettings set org.mate.screensaver lock-enabled false &' >> /home/${live_user}/.xinitrc" 20 | chroot "${release}" su "${live_user}" -c "echo 'gsettings set org.mate.lockdown disable-lock-screen true &' >> /home/${live_user}/.xinitrc" 21 | chroot "${release}" su "${live_user}" -c "echo 'gsettings set org.mate.lockdown disable-user-switching true &' >> /home/${live_user}/.xinitrc" 22 | chroot "${release}" su "${live_user}" -c "echo 'exec ck-launch-session mate-session' >> /home/${live_user}/.xinitrc" 23 | echo "exec ck-launch-session mate-session" > "${release}/root/.xinitrc" 24 | echo "exec ck-launch-session mate-session" > "${release}/usr/share/skel/dot.xinitrc" 25 | } 26 | 27 | patch_etc_files 28 | community_setup_liveuser 29 | community_setup_autologin 30 | lightdm_setup 31 | setup_xinit 32 | final_setup 33 | -------------------------------------------------------------------------------- /desktop_config/mate_oem.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e -u 4 | 5 | . "${cwd}/common_config/autologin.sh" 6 | . "${cwd}/common_config/base-setting.sh" 7 | . "${cwd}/common_config/finalize.sh" 8 | . "${cwd}/common_config/gitpkg.sh" 9 | . "${cwd}/common_config/setuser.sh" 10 | 11 | lightdm_setup() 12 | { 13 | sed -i '' "s@#greeter-session=example-gtk-gnome@greeter-session=slick-greeter@" "${release}/usr/local/etc/lightdm/lightdm.conf" 14 | sed -i '' "s@#user-session=default@user-session=mate@" "${release}/usr/local/etc/lightdm/lightdm.conf" 15 | } 16 | 17 | setup_xinit() 18 | { 19 | echo "exec marco &" > "${release}/home/${live_user}/.xinitrc" 20 | echo "exec feh --bg-fill /usr/local/share/backgrounds/ghostbsd/Lake_View.jpg &" >> "${release}/home/${live_user}/.xinitrc" 21 | echo "exec sudo install-station" >> "${release}/home/${live_user}/.xinitrc" 22 | chmod 765 "${release}/home/${live_user}/.xinitrc" 23 | # root 24 | echo "exec marco &" > "${release}/root/.xinitrc" 25 | echo "exec feh --bg-fill /usr/local/share/backgrounds/ghostbsd/Lake_View.jpg &" >> "${release}/root/.xinitrc" 26 | echo "exec setup-station" >> "${release}/root/.xinitrc" 27 | } 28 | 29 | patch_etc_files 30 | 31 | git_pc_sysinstall 32 | git_gbi 33 | git_install_station 34 | git_setup_station 35 | 36 | ghostbsd_setup_liveuser 37 | ghostbsd_setup_autologin 38 | lightdm_setup 39 | setup_xinit 40 | final_setup 41 | -------------------------------------------------------------------------------- /desktop_config/test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -------------------------------------------------------------------------------- /desktop_config/xfce.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e -u 4 | 5 | . "${cwd}/common_config/autologin.sh" 6 | . "${cwd}/common_config/base-setting.sh" 7 | . "${cwd}/common_config/finalize.sh" 8 | . "${cwd}/common_config/setuser.sh" 9 | 10 | lightdm_setup() 11 | { 12 | sed -i '' "s@#greeter-session=example-gtk-gnome@greeter-session=slick-greeter@" "${release}/usr/local/etc/lightdm/lightdm.conf" 13 | sed -i '' "s@#user-session=default@user-session=xfce@" "${release}/usr/local/etc/lightdm/lightdm.conf" 14 | } 15 | 16 | setup_xinit() 17 | { 18 | chroot "${release}" su "${live_user}" -c "echo 'exec ck-launch-session startxfce4' > /home/${live_user}/.xinitrc" 19 | echo "exec ck-launch-session startxfce4" > "${release}/root/.xinitrc" 20 | echo "exec ck-launch-session startxfce4" > "${release}/usr/share/skel/dot.xinitrc" 21 | } 22 | 23 | patch_etc_files 24 | community_setup_liveuser 25 | community_setup_autologin 26 | lightdm_setup 27 | setup_xinit 28 | final_setup 29 | -------------------------------------------------------------------------------- /init.sh.in: -------------------------------------------------------------------------------- 1 | #!/rescue/sh 2 | 3 | set -e 4 | 5 | PATH="/rescue" 6 | 7 | if [ "$(ps -o command 1 | tail -n 1 | ( read -r c o; echo "${o}" ))" = "-s" ]; then 8 | echo "==> Running in single-user mode" 9 | SINGLE_USER="true" 10 | fi 11 | 12 | echo "==> Remount rootfs as read-write" 13 | mount -u -w / 14 | 15 | makedir=${makedir:-"/cdrom"} 16 | 17 | echo "==> Make mountpoints /cdrom" 18 | mkdir -p "${makedir}" 19 | 20 | echo "Waiting for GhostBSD media to initialize" 21 | while : ; do 22 | [ -e "/dev/iso9660/GHOSTBSD" ] && echo "found /dev/iso9660/GHOSTBSD" && sleep 2 && break 23 | sleep 2 24 | done 25 | 26 | echo "==> Mount cdrom" 27 | mount_cd9660 /dev/iso9660/@VOLUME@ /cdrom 28 | 29 | if [ "$SINGLE_USER" = "true" ]; then 30 | echo "Starting interactive shell in temporary rootfs ..." 31 | exit 0 32 | fi 33 | 34 | # Ensure the system has more than enough memory for memdisk 35 | requiredmem=4294967296 36 | realmem=$(sysctl -n hw.realmem) 37 | memdisk_size=$((("${realmem}"*75/100)/1024/1024/1024)) 38 | echo "Required memory ${requiredmem} for memdisk" 39 | echo "Detected memory ${realmem} for memdisk" 40 | if [ "$realmem" -lt "$requiredmem" ] ; then 41 | SINGLE_USER="true" 42 | echo "GhostBSD requires 4GB of memory for memdisk, and operation!" 43 | echo "Type exit, and press enter after entering the rescue shell to power off." 44 | exit 1 45 | fi 46 | 47 | echo "==> Mount swap-based memdisk" 48 | mdconfig -a -t swap -s ${memdisk_size}g -u 1 >/dev/null 2>/dev/null 49 | zpool create -O primarycache=none livecd /dev/md1 >/dev/null 2>/dev/null 50 | zfs set compression=zstd-9 livecd 51 | echo "==> Replicate system image to swap-based memdisk" 52 | dd if=/cdrom/data/system.img status=progress bs=1M | zfs recv -F livecd 53 | kenv init_shell="/rescue/sh" 54 | exit 0 55 | -------------------------------------------------------------------------------- /packages/base: -------------------------------------------------------------------------------- 1 | GhostBSD-acct 2 | GhostBSD-acct-man 3 | GhostBSD-acpi 4 | GhostBSD-acpi-man 5 | GhostBSD-apm 6 | GhostBSD-apm-man 7 | GhostBSD-at 8 | GhostBSD-at-man 9 | GhostBSD-autofs 10 | GhostBSD-autofs-man 11 | GhostBSD-bhyve 12 | GhostBSD-bhyve-man 13 | GhostBSD-blocklist 14 | GhostBSD-blocklist-lib32 15 | GhostBSD-blocklist-man 16 | GhostBSD-bluetooth 17 | GhostBSD-bluetooth-lib32 18 | GhostBSD-bluetooth-man 19 | GhostBSD-bootloader 20 | GhostBSD-bsnmp 21 | GhostBSD-bsnmp-lib32 22 | GhostBSD-bsnmp-man 23 | GhostBSD-caroot 24 | GhostBSD-ccdconfig 25 | GhostBSD-ccdconfig-man 26 | GhostBSD-certctl 27 | GhostBSD-certctl-man 28 | GhostBSD-clang 29 | GhostBSD-clang-man 30 | GhostBSD-clibs 31 | GhostBSD-clibs-lib32 32 | GhostBSD-clibs-man 33 | GhostBSD-clibs-man-lib32 34 | GhostBSD-console-tools 35 | GhostBSD-console-tools-man 36 | GhostBSD-csh 37 | GhostBSD-csh-man 38 | GhostBSD-ctf-tools 39 | GhostBSD-ctf-tools-man 40 | GhostBSD-cxgbe-tools 41 | GhostBSD-cxgbe-tools-man 42 | GhostBSD-devd 43 | GhostBSD-devd-man 44 | GhostBSD-devmatch 45 | GhostBSD-devmatch-lib32 46 | GhostBSD-devmatch-man 47 | GhostBSD-dhclient 48 | GhostBSD-dhclient-man 49 | GhostBSD-dma 50 | GhostBSD-dma-man 51 | GhostBSD-dpv 52 | GhostBSD-dpv-lib32 53 | GhostBSD-dpv-man 54 | GhostBSD-dtrace 55 | GhostBSD-dtrace-lib32 56 | GhostBSD-dtrace-man 57 | GhostBSD-dwatch 58 | GhostBSD-dwatch-man 59 | GhostBSD-ee 60 | GhostBSD-ee-man 61 | GhostBSD-efi-tools 62 | GhostBSD-efi-tools-lib32 63 | GhostBSD-efi-tools-man 64 | GhostBSD-elftoolchain 65 | GhostBSD-elftoolchain-man 66 | GhostBSD-fetch 67 | GhostBSD-fetch-lib32 68 | GhostBSD-fetch-man 69 | GhostBSD-ftp 70 | GhostBSD-ftp-man 71 | GhostBSD-ftpd 72 | GhostBSD-ftpd-man 73 | GhostBSD-fwget 74 | GhostBSD-fwget-man 75 | GhostBSD-geom 76 | GhostBSD-geom-lib32 77 | GhostBSD-geom-man 78 | GhostBSD-ggate 79 | GhostBSD-ggate-man 80 | GhostBSD-ghostbsd-cert 81 | GhostBSD-hast 82 | GhostBSD-hast-man 83 | GhostBSD-hostapd 84 | GhostBSD-hostapd-man 85 | GhostBSD-hyperv-tools 86 | GhostBSD-inetd 87 | GhostBSD-inetd-man 88 | GhostBSD-ipf 89 | GhostBSD-ipf-man 90 | GhostBSD-ipfw 91 | GhostBSD-ipfw-man 92 | GhostBSD-iscsi 93 | GhostBSD-iscsi-man 94 | GhostBSD-jail 95 | GhostBSD-jail-man 96 | GhostBSD-kerberos 97 | GhostBSD-kerberos-lib 98 | GhostBSD-kerberos-lib-lib32 99 | GhostBSD-kerberos-lib-man 100 | GhostBSD-kerberos-lib32 101 | GhostBSD-kerberos-man 102 | GhostBSD-kernel-generic 103 | GhostBSD-lib9p 104 | GhostBSD-lib9p-lib32 105 | GhostBSD-libarchive 106 | GhostBSD-libarchive-lib32 107 | GhostBSD-libarchive-man 108 | GhostBSD-libbegemot 109 | GhostBSD-libbegemot-lib32 110 | GhostBSD-libbegemot-man 111 | GhostBSD-libblocksruntime 112 | GhostBSD-libblocksruntime-lib32 113 | GhostBSD-libbsdstat 114 | GhostBSD-libbsdstat-lib32 115 | GhostBSD-libbsm 116 | GhostBSD-libbsm-lib32 117 | GhostBSD-libbsm-man 118 | GhostBSD-libbz2 119 | GhostBSD-libbz2-lib32 120 | GhostBSD-libcasper 121 | GhostBSD-libcasper-lib32 122 | GhostBSD-libcasper-man 123 | GhostBSD-libcompat-man 124 | GhostBSD-libcuse 125 | GhostBSD-libcuse-lib32 126 | GhostBSD-libcuse-man 127 | GhostBSD-libdwarf 128 | GhostBSD-libdwarf-lib32 129 | GhostBSD-libdwarf-man 130 | GhostBSD-libevent1 131 | GhostBSD-libevent1-lib32 132 | GhostBSD-libexecinfo 133 | GhostBSD-libexecinfo-lib32 134 | GhostBSD-libexecinfo-man 135 | GhostBSD-libipt 136 | GhostBSD-libldns 137 | GhostBSD-libldns-lib32 138 | GhostBSD-liblzma 139 | GhostBSD-liblzma-lib32 140 | GhostBSD-libmagic 141 | GhostBSD-libmagic-lib32 142 | GhostBSD-libmagic-man 143 | GhostBSD-libpathconv 144 | GhostBSD-libpathconv-lib32 145 | GhostBSD-libpathconv-man 146 | GhostBSD-librpcsec_gss 147 | GhostBSD-librpcsec_gss-lib32 148 | GhostBSD-librpcsec_gss-man 149 | GhostBSD-librss 150 | GhostBSD-librss-lib32 151 | GhostBSD-libsdp 152 | GhostBSD-libsdp-lib32 153 | GhostBSD-libsdp-man 154 | GhostBSD-libsqlite3 155 | GhostBSD-libsqlite3-lib32 156 | GhostBSD-libstdbuf 157 | GhostBSD-libstdbuf-lib32 158 | GhostBSD-libstdbuf-man 159 | GhostBSD-libstdthreads 160 | GhostBSD-libstdthreads-lib32 161 | GhostBSD-libstdthreads-man 162 | GhostBSD-libthread_db 163 | GhostBSD-libthread_db-lib32 164 | GhostBSD-libucl 165 | GhostBSD-libucl-lib32 166 | GhostBSD-libucl-man 167 | GhostBSD-libvgl 168 | GhostBSD-libvgl-lib32 169 | GhostBSD-libvgl-man 170 | GhostBSD-libvmmapi 171 | GhostBSD-lld 172 | GhostBSD-lld-man 173 | GhostBSD-lldb 174 | GhostBSD-lldb-man 175 | GhostBSD-locales 176 | GhostBSD-mlx-tools 177 | GhostBSD-mlx-tools-man 178 | GhostBSD-mtree 179 | GhostBSD-mtree-man 180 | GhostBSD-natd 181 | GhostBSD-natd-lib32 182 | GhostBSD-natd-man 183 | GhostBSD-netmap 184 | GhostBSD-netmap-lib32 185 | GhostBSD-netmap-man 186 | GhostBSD-newsyslog 187 | GhostBSD-newsyslog-man 188 | GhostBSD-nfs 189 | GhostBSD-nfs-man 190 | GhostBSD-nuageinit 191 | GhostBSD-nvme-tools 192 | GhostBSD-nvme-tools-man 193 | GhostBSD-openssl 194 | GhostBSD-openssl-lib 195 | GhostBSD-openssl-lib-lib32 196 | GhostBSD-openssl-lib-man 197 | GhostBSD-openssl-man 198 | GhostBSD-periodic 199 | GhostBSD-periodic-man 200 | GhostBSD-pf 201 | GhostBSD-pf-man 202 | GhostBSD-pkg-bootstrap 203 | GhostBSD-pkg-bootstrap-man 204 | GhostBSD-ppp 205 | GhostBSD-ppp-man 206 | GhostBSD-quotacheck 207 | GhostBSD-quotacheck-man 208 | GhostBSD-rc 209 | GhostBSD-rc-man 210 | GhostBSD-rcmds 211 | GhostBSD-rcmds-man 212 | GhostBSD-rdma 213 | GhostBSD-rdma-man 214 | GhostBSD-rescue 215 | GhostBSD-resolvconf 216 | GhostBSD-resolvconf-man 217 | GhostBSD-runtime 218 | GhostBSD-runtime-lib32 219 | GhostBSD-runtime-man 220 | GhostBSD-smbutils 221 | GhostBSD-smbutils-lib32 222 | GhostBSD-smbutils-man 223 | GhostBSD-ssh 224 | GhostBSD-ssh-lib32 225 | GhostBSD-ssh-man 226 | GhostBSD-syslogd 227 | GhostBSD-syslogd-man 228 | GhostBSD-tcpd 229 | GhostBSD-tcpd-lib32 230 | GhostBSD-tcpd-man 231 | GhostBSD-ufs 232 | GhostBSD-ufs-lib32 233 | GhostBSD-ufs-man 234 | GhostBSD-unbound 235 | GhostBSD-unbound-lib32 236 | GhostBSD-unbound-man 237 | GhostBSD-utilities 238 | GhostBSD-utilities-lib32 239 | GhostBSD-utilities-man 240 | GhostBSD-utilities-man-lib32 241 | GhostBSD-vi 242 | GhostBSD-vi-man 243 | GhostBSD-vt-data 244 | GhostBSD-wpa 245 | GhostBSD-wpa-man 246 | GhostBSD-yp 247 | GhostBSD-yp-man 248 | GhostBSD-zfs 249 | GhostBSD-zfs-lib32 250 | GhostBSD-zfs-man 251 | GhostBSD-zoneinfo 252 | -------------------------------------------------------------------------------- /packages/common: -------------------------------------------------------------------------------- 1 | cups 2 | cups-filters 3 | drm-kmod 4 | evolution 5 | exfat-utils 6 | firefox 7 | fish 8 | foomatic-db 9 | fusefs-exfat 10 | fusefs-ext2 11 | fusefs-hfsfuse 12 | fusefs-lkl 13 | fusefs-ntfs 14 | gbi 15 | ghostbsd-fonts 16 | ghostbsd-icons 17 | ghostbsd-utils 18 | gnome-keyring 19 | nss_mdns 20 | pc-sysinstall 21 | pkg 22 | python 23 | rhythmbox 24 | shotwell 25 | slick-greeter 26 | system-config-printer 27 | unzip 28 | vlc 29 | webrtc-audio-processing 30 | xconfig 31 | xorg-minimal 32 | zip 33 | -------------------------------------------------------------------------------- /packages/drivers: -------------------------------------------------------------------------------- 1 | bwi-firmware-kmod 2 | bwn-firmware-kmod 3 | drm-kmod 4 | egl-wayland 5 | gstreamer1-plugins-neon 6 | realtek-re-kmod 7 | utouch-kmod 8 | virtualbox-ose-additions 9 | xf86-input-evdev 10 | xf86-input-joystick 11 | xf86-input-keyboard 12 | xf86-input-mouse 13 | xf86-input-synaptics 14 | xf86-input-vmmouse 15 | xf86-video-scfb 16 | xf86-video-vesa -------------------------------------------------------------------------------- /packages/mate: -------------------------------------------------------------------------------- 1 | brisk-menu 2 | cursor-dmz-theme 3 | dconf-editor 4 | freedesktop-sound-theme 5 | gbi 6 | ghostbsd-mate 7 | plank 8 | station-tweak -------------------------------------------------------------------------------- /packages/mate_oem: -------------------------------------------------------------------------------- 1 | brisk-menu 2 | cpdup 3 | cups 4 | cups-filters 5 | cursor-dmz-theme 6 | dconf-editor 7 | drm-kmod 8 | en-aspell 9 | en-hunspell 10 | egl-wayland 11 | evolution 12 | feh 13 | firefox 14 | foomatic-db 15 | freedesktop-sound-theme 16 | fusefs-ext2 17 | fusefs-ntfs 18 | fusefs-simple-mtpfs 19 | gdk-pixbuf2 20 | ghostbsd-common-settings 21 | ghostbsd-drivers 22 | ghostbsd-fonts 23 | ghostbsd-icons 24 | ghostbsd-mate 25 | ghostbsd-utils 26 | gstreamer1-plugins-neon 27 | nss_mdns 28 | pkg 29 | plank 30 | python 31 | rhythmbox 32 | shotwell 33 | slick-greeter 34 | station-tweak 35 | system-config-printer 36 | utouch-kmod 37 | virtualbox-ose-additions 38 | vlc 39 | webrtc-audio-processing 40 | xconfig 41 | xf86-input-evdev 42 | xorg-minimal 43 | zip 44 | -------------------------------------------------------------------------------- /packages/test: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghostbsd/ghostbsd-build/e6f1edf1d1b99f8ae511728ea87344edbde4d9f5/packages/test -------------------------------------------------------------------------------- /packages/test_base: -------------------------------------------------------------------------------- 1 | FreeBSD-acct 2 | FreeBSD-acct-man 3 | FreeBSD-acpi 4 | FreeBSD-acpi-man 5 | FreeBSD-apm 6 | FreeBSD-apm-man 7 | FreeBSD-at 8 | FreeBSD-at-man 9 | FreeBSD-autofs 10 | FreeBSD-autofs-man 11 | FreeBSD-bhyve 12 | FreeBSD-bhyve-man 13 | FreeBSD-blocklist 14 | FreeBSD-blocklist-lib32 15 | FreeBSD-blocklist-man 16 | FreeBSD-bluetooth 17 | FreeBSD-bluetooth-lib32 18 | FreeBSD-bluetooth-man 19 | FreeBSD-bootloader 20 | FreeBSD-bsnmp 21 | FreeBSD-bsnmp-lib32 22 | FreeBSD-bsnmp-man 23 | FreeBSD-caroot 24 | FreeBSD-ccdconfig 25 | FreeBSD-ccdconfig-man 26 | FreeBSD-certctl 27 | FreeBSD-certctl-man 28 | FreeBSD-clang 29 | FreeBSD-clang-man 30 | FreeBSD-clibs 31 | FreeBSD-clibs-lib32 32 | FreeBSD-clibs-man 33 | FreeBSD-clibs-man-lib32 34 | FreeBSD-console-tools 35 | FreeBSD-console-tools-man 36 | FreeBSD-csh 37 | FreeBSD-csh-man 38 | FreeBSD-ctf-tools 39 | FreeBSD-ctf-tools-man 40 | FreeBSD-cxgbe-tools 41 | FreeBSD-cxgbe-tools-man 42 | FreeBSD-devd 43 | FreeBSD-devd-man 44 | FreeBSD-devmatch 45 | FreeBSD-devmatch-lib32 46 | FreeBSD-devmatch-man 47 | FreeBSD-dhclient 48 | FreeBSD-dhclient-man 49 | FreeBSD-dma 50 | FreeBSD-dma-man 51 | FreeBSD-dpv 52 | FreeBSD-dpv-lib32 53 | FreeBSD-dpv-man 54 | FreeBSD-dtrace 55 | FreeBSD-dtrace-lib32 56 | FreeBSD-dtrace-man 57 | FreeBSD-dwatch 58 | FreeBSD-dwatch-man 59 | FreeBSD-ee 60 | FreeBSD-ee-man 61 | FreeBSD-efi-tools 62 | FreeBSD-efi-tools-lib32 63 | FreeBSD-efi-tools-man 64 | FreeBSD-elftoolchain 65 | FreeBSD-elftoolchain-man 66 | FreeBSD-fetch 67 | FreeBSD-fetch-lib32 68 | FreeBSD-fetch-man 69 | FreeBSD-ftp 70 | FreeBSD-ftp-man 71 | FreeBSD-ftpd 72 | FreeBSD-ftpd-man 73 | FreeBSD-fwget 74 | FreeBSD-fwget-man 75 | FreeBSD-geom 76 | FreeBSD-geom-lib32 77 | FreeBSD-geom-man 78 | FreeBSD-ggate 79 | FreeBSD-ggate-man 80 | FreeBSD-hast 81 | FreeBSD-hast-man 82 | FreeBSD-hostapd 83 | FreeBSD-hostapd-man 84 | FreeBSD-hyperv-tools 85 | FreeBSD-inetd 86 | FreeBSD-inetd-man 87 | FreeBSD-ipf 88 | FreeBSD-ipf-man 89 | FreeBSD-ipfw 90 | FreeBSD-ipfw-man 91 | FreeBSD-iscsi 92 | FreeBSD-iscsi-man 93 | FreeBSD-jail 94 | FreeBSD-jail-man 95 | FreeBSD-kerberos 96 | FreeBSD-kerberos-lib 97 | FreeBSD-kerberos-lib-lib32 98 | FreeBSD-kerberos-lib-man 99 | FreeBSD-kerberos-lib32 100 | FreeBSD-kerberos-man 101 | FreeBSD-kernel-generic 102 | FreeBSD-lib9p 103 | FreeBSD-lib9p-lib32 104 | FreeBSD-libarchive 105 | FreeBSD-libarchive-lib32 106 | FreeBSD-libarchive-man 107 | FreeBSD-libbegemot 108 | FreeBSD-libbegemot-lib32 109 | FreeBSD-libbegemot-man 110 | FreeBSD-libblocksruntime 111 | FreeBSD-libblocksruntime-lib32 112 | FreeBSD-libbsdstat 113 | FreeBSD-libbsdstat-lib32 114 | FreeBSD-libbsm 115 | FreeBSD-libbsm-lib32 116 | FreeBSD-libbsm-man 117 | FreeBSD-libbz2 118 | FreeBSD-libbz2-lib32 119 | FreeBSD-libcasper 120 | FreeBSD-libcasper-lib32 121 | FreeBSD-libcasper-man 122 | FreeBSD-libcompat-man 123 | FreeBSD-libcuse 124 | FreeBSD-libcuse-lib32 125 | FreeBSD-libcuse-man 126 | FreeBSD-libdwarf 127 | FreeBSD-libdwarf-lib32 128 | FreeBSD-libdwarf-man 129 | FreeBSD-libevent1 130 | FreeBSD-libevent1-lib32 131 | FreeBSD-libexecinfo 132 | FreeBSD-libexecinfo-lib32 133 | FreeBSD-libexecinfo-man 134 | FreeBSD-libipt 135 | FreeBSD-libldns 136 | FreeBSD-libldns-lib32 137 | FreeBSD-liblzma 138 | FreeBSD-liblzma-lib32 139 | FreeBSD-libmagic 140 | FreeBSD-libmagic-lib32 141 | FreeBSD-libmagic-man 142 | FreeBSD-libpathconv 143 | FreeBSD-libpathconv-lib32 144 | FreeBSD-libpathconv-man 145 | FreeBSD-librpcsec_gss 146 | FreeBSD-librpcsec_gss-lib32 147 | FreeBSD-librpcsec_gss-man 148 | FreeBSD-librss 149 | FreeBSD-librss-lib32 150 | FreeBSD-libsdp 151 | FreeBSD-libsdp-lib32 152 | FreeBSD-libsdp-man 153 | FreeBSD-libsqlite3 154 | FreeBSD-libsqlite3-lib32 155 | FreeBSD-libstdbuf 156 | FreeBSD-libstdbuf-lib32 157 | FreeBSD-libstdbuf-man 158 | FreeBSD-libstdthreads 159 | FreeBSD-libstdthreads-lib32 160 | FreeBSD-libstdthreads-man 161 | FreeBSD-libthread_db 162 | FreeBSD-libthread_db-lib32 163 | FreeBSD-libucl 164 | FreeBSD-libucl-lib32 165 | FreeBSD-libucl-man 166 | FreeBSD-libvgl 167 | FreeBSD-libvgl-lib32 168 | FreeBSD-libvgl-man 169 | FreeBSD-libvmmapi 170 | FreeBSD-lld 171 | FreeBSD-lld-man 172 | FreeBSD-lldb 173 | FreeBSD-lldb-man 174 | FreeBSD-locales 175 | FreeBSD-mlx-tools 176 | FreeBSD-mlx-tools-man 177 | FreeBSD-mtree 178 | FreeBSD-mtree-man 179 | FreeBSD-natd 180 | FreeBSD-natd-lib32 181 | FreeBSD-natd-man 182 | FreeBSD-netmap 183 | FreeBSD-netmap-lib32 184 | FreeBSD-netmap-man 185 | FreeBSD-newsyslog 186 | FreeBSD-newsyslog-man 187 | FreeBSD-nfs 188 | FreeBSD-nfs-man 189 | FreeBSD-nvme-tools 190 | FreeBSD-nvme-tools-man 191 | FreeBSD-openssl 192 | FreeBSD-openssl-lib 193 | FreeBSD-openssl-lib-lib32 194 | FreeBSD-openssl-lib-man 195 | FreeBSD-openssl-man 196 | FreeBSD-periodic 197 | FreeBSD-periodic-man 198 | FreeBSD-pf 199 | FreeBSD-pf-man 200 | FreeBSD-pkg-bootstrap 201 | FreeBSD-pkg-bootstrap-man 202 | FreeBSD-ppp 203 | FreeBSD-ppp-man 204 | FreeBSD-quotacheck 205 | FreeBSD-quotacheck-man 206 | FreeBSD-rc 207 | FreeBSD-rc-man 208 | FreeBSD-rcmds 209 | FreeBSD-rcmds-man 210 | FreeBSD-rdma 211 | FreeBSD-rdma-man 212 | FreeBSD-rescue 213 | FreeBSD-resolvconf 214 | FreeBSD-resolvconf-man 215 | FreeBSD-runtime 216 | FreeBSD-runtime-lib32 217 | FreeBSD-runtime-man 218 | FreeBSD-smbutils 219 | FreeBSD-smbutils-lib32 220 | FreeBSD-smbutils-man 221 | FreeBSD-ssh 222 | FreeBSD-ssh-lib32 223 | FreeBSD-ssh-man 224 | FreeBSD-syscons 225 | FreeBSD-syslogd 226 | FreeBSD-syslogd-man 227 | FreeBSD-tcpd 228 | FreeBSD-tcpd-lib32 229 | FreeBSD-tcpd-man 230 | FreeBSD-ufs 231 | FreeBSD-ufs-lib32 232 | FreeBSD-ufs-man 233 | FreeBSD-unbound 234 | FreeBSD-unbound-lib32 235 | FreeBSD-unbound-man 236 | FreeBSD-utilities 237 | FreeBSD-utilities-lib32 238 | FreeBSD-utilities-man 239 | FreeBSD-vi 240 | FreeBSD-vi-man 241 | FreeBSD-vt-data 242 | FreeBSD-wpa 243 | FreeBSD-wpa-man 244 | FreeBSD-yp 245 | FreeBSD-yp-man 246 | FreeBSD-zfs 247 | FreeBSD-zfs-lib32 248 | FreeBSD-zfs-man 249 | FreeBSD-zoneinfo 250 | -------------------------------------------------------------------------------- /packages/vital/base: -------------------------------------------------------------------------------- 1 | GhostBSD-acpi 2 | GhostBSD-autofs 3 | GhostBSD-bluetooth 4 | GhostBSD-bluetooth-lib32 5 | GhostBSD-bootloader 6 | GhostBSD-caroot 7 | GhostBSD-certctl 8 | GhostBSD-clang 9 | GhostBSD-clibs 10 | GhostBSD-clibs-lib32 11 | GhostBSD-console-tools 12 | GhostBSD-csh 13 | GhostBSD-devd 14 | GhostBSD-devmatch 15 | GhostBSD-devmatch-lib32 16 | GhostBSD-dhclient 17 | GhostBSD-dwatch 18 | GhostBSD-ee 19 | GhostBSD-efi-tools 20 | GhostBSD-efi-tools-lib32 21 | GhostBSD-elftoolchain 22 | GhostBSD-fetch 23 | GhostBSD-fetch-lib32 24 | GhostBSD-fwget 25 | GhostBSD-geom 26 | GhostBSD-geom-lib32 27 | GhostBSD-ggate 28 | GhostBSD-ghostbsd-cert 29 | GhostBSD-hostapd 30 | GhostBSD-inetd 31 | GhostBSD-ipf 32 | GhostBSD-ipfw 33 | GhostBSD-kerberos 34 | GhostBSD-kerberos-lib 35 | GhostBSD-kerberos-lib-lib32 36 | GhostBSD-kerberos-lib32 37 | GhostBSD-kernel-generic 38 | GhostBSD-lib9p 39 | GhostBSD-lib9p-lib32 40 | GhostBSD-libarchive 41 | GhostBSD-libarchive-lib32 42 | GhostBSD-libbegemot 43 | GhostBSD-libbegemot-lib32 44 | GhostBSD-libblocksruntime 45 | GhostBSD-libblocksruntime-lib32 46 | GhostBSD-libbsdstat 47 | GhostBSD-libbsdstat-lib32 48 | GhostBSD-libbsm 49 | GhostBSD-libbsm-lib32 50 | GhostBSD-libbz2 51 | GhostBSD-libbz2-lib32 52 | GhostBSD-libcasper 53 | GhostBSD-libcasper-lib32 54 | GhostBSD-libcuse 55 | GhostBSD-libcuse-lib32 56 | GhostBSD-libdwarf 57 | GhostBSD-libdwarf-lib32 58 | GhostBSD-libevent1 59 | GhostBSD-libevent1-lib32 60 | GhostBSD-libexecinfo 61 | GhostBSD-libexecinfo-lib32 62 | GhostBSD-libipt 63 | GhostBSD-libldns 64 | GhostBSD-libldns-lib32 65 | GhostBSD-liblzma 66 | GhostBSD-liblzma-lib32 67 | GhostBSD-libmagic 68 | GhostBSD-libmagic-lib32 69 | GhostBSD-libpathconv 70 | GhostBSD-libpathconv-lib32 71 | GhostBSD-librpcsec_gss 72 | GhostBSD-librpcsec_gss-lib32 73 | GhostBSD-librss 74 | GhostBSD-librss-lib32 75 | GhostBSD-libsdp 76 | GhostBSD-libsdp-lib32 77 | GhostBSD-libsqlite3 78 | GhostBSD-libsqlite3-lib32 79 | GhostBSD-libstdbuf 80 | GhostBSD-libstdbuf-lib32 81 | GhostBSD-libstdthreads 82 | GhostBSD-libstdthreads-lib32 83 | GhostBSD-libthread_db 84 | GhostBSD-libthread_db-lib32 85 | GhostBSD-libucl 86 | GhostBSD-libucl-lib32 87 | GhostBSD-libvgl 88 | GhostBSD-libvgl-lib32 89 | GhostBSD-libvmmapi 90 | GhostBSD-lld 91 | GhostBSD-lldb 92 | GhostBSD-locales 93 | GhostBSD-mlx-tools 94 | GhostBSD-mtree 95 | GhostBSD-newsyslog 96 | GhostBSD-nvme-tools 97 | GhostBSD-openssl 98 | GhostBSD-openssl-lib 99 | GhostBSD-openssl-lib-lib32 100 | GhostBSD-periodic 101 | GhostBSD-pf 102 | GhostBSD-pkg-bootstrap 103 | GhostBSD-ppp 104 | GhostBSD-quotacheck 105 | GhostBSD-rc 106 | GhostBSD-rcmds 107 | GhostBSD-rdma 108 | GhostBSD-rescue 109 | GhostBSD-resolvconf 110 | GhostBSD-runtime 111 | GhostBSD-runtime-lib32 112 | GhostBSD-ssh 113 | GhostBSD-ssh-lib32 114 | GhostBSD-syslogd 115 | GhostBSD-tcpd 116 | GhostBSD-tcpd-lib32 117 | GhostBSD-unbound 118 | GhostBSD-unbound-lib32 119 | GhostBSD-utilities 120 | GhostBSD-utilities-lib32 121 | GhostBSD-vt-data 122 | GhostBSD-wpa 123 | GhostBSD-yp 124 | GhostBSD-zfs 125 | GhostBSD-zfs-lib32 126 | GhostBSD-zoneinfo 127 | -------------------------------------------------------------------------------- /packages/vital/common: -------------------------------------------------------------------------------- 1 | cups 2 | ghostbsd-fonts 3 | ghostbsd-icons 4 | ghostbsd-utils 5 | gnome-keyring 6 | nss_mdns 7 | pkg 8 | slick-greeter 9 | webrtc-audio-processing 10 | xorg-minimal -------------------------------------------------------------------------------- /packages/vital/mate: -------------------------------------------------------------------------------- 1 | brisk-menu 2 | cursor-dmz-theme 3 | freedesktop-sound-theme 4 | ghostbsd-icons 5 | ghostbsd-mate 6 | ghostbsd-utils 7 | plank 8 | station-tweak 9 | -------------------------------------------------------------------------------- /packages/vital/mate_oem: -------------------------------------------------------------------------------- 1 | brisk-menu 2 | cups 3 | cursor-dmz-theme 4 | freedesktop-sound-theme 5 | ghostbsd-icons 6 | ghostbsd-mate 7 | ghostbsd-utils 8 | nss_mdns 9 | pkg 10 | plank 11 | slick-greeter 12 | station-tweak 13 | webrtc-audio-processing 14 | xconfig 15 | xorg-minimal 16 | -------------------------------------------------------------------------------- /packages/vital/xfce: -------------------------------------------------------------------------------- 1 | ffmpegthumbnailer 2 | ghostbsd-xfce4 3 | ghostbsd-xfce-settings 4 | ghostbsd-xfce-themes 5 | -------------------------------------------------------------------------------- /packages/xfce: -------------------------------------------------------------------------------- 1 | evince-lite 2 | ffmpegthumbnailer 3 | ghostbsd-xfce-settings 4 | ghostbsd-xfce-themes 5 | ghostbsd-xfce4 6 | xarchiver -------------------------------------------------------------------------------- /pkg/FreeBSD.conf: -------------------------------------------------------------------------------- 1 | FreeBSD: { 2 | url: "https://pkg.freebsd.org/${ABI}/latest", 3 | enabled: yes 4 | } 5 | 6 | FreeBSD_base: { 7 | url: "https://pkg.freebsd.org/FreeBSD:14:amd64/base_latest/", 8 | enabled: yes 9 | } -------------------------------------------------------------------------------- /pkg/GhostBSD.conf: -------------------------------------------------------------------------------- 1 | GhostBSD: { 2 | url: "https://pkg.ghostbsd.org/stable/${ABI}/latest", 3 | enabled: yes 4 | } 5 | 6 | GhostBSD_base: { 7 | url: "https://pkg.ghostbsd.org/stable/${ABI}/base", 8 | enabled: yes 9 | } -------------------------------------------------------------------------------- /pkg/GhostBSD_Unstable.conf: -------------------------------------------------------------------------------- 1 | GhostBSD_Unstable: { 2 | url: "https://pkg.ghostbsd.org/unstable/${ABI}/latest", 3 | enabled: yes 4 | } 5 | 6 | GhostBSD_Unstable_base: { 7 | url: "https://pkg.ghostbsd.org/unstable/${ABI}/base", 8 | enabled: yes 9 | } -------------------------------------------------------------------------------- /rc.in: -------------------------------------------------------------------------------- 1 | #!/rescue/sh 2 | 3 | set -e 4 | 5 | if [ ! -e /dev/md1 ] ; then 6 | halt -p 7 | fi 8 | 9 | echo "==> Unset rescue init kernel environment variables" 10 | kenv -u init_chroot 11 | kenv -u init_path 12 | kenv -u init_script 13 | kenv -u init_shell 14 | echo "==> Unmount filesystems for cloning" 15 | zpool export livecd 16 | umount -f /cdrom 17 | echo "== Set /dev/md1 device for reroot" 18 | kenv vfs.root.mountfrom=zfs:livecd 19 | echo "==> Rerooting into memdisk" 20 | reboot -r 21 | -------------------------------------------------------------------------------- /script/install-boot.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # $FreeBSD$ 4 | 5 | # 6 | # Installs/updates the necessary boot blocks for the desired boot environment 7 | # 8 | # Lightly tested.. Intended to be installed, but until it matures, it will just 9 | # be a boot tool for regression testing. 10 | 11 | # insert code here to guess what you have -- yikes! 12 | 13 | # Minimum size of FAT filesystems, in KB. 14 | fat32min=33292 15 | fat16min=2100 16 | 17 | die() { 18 | echo $* 19 | exit 1 20 | } 21 | 22 | doit() { 23 | echo $* 24 | eval $* 25 | } 26 | 27 | find-part() { 28 | dev=$1 29 | part=$2 30 | 31 | gpart show $dev | tail +2 | awk '$4 == "'$part'" { print $3; }' 32 | } 33 | 34 | get_uefi_bootname() { 35 | 36 | case ${TARGET:-$(uname -m)} in 37 | amd64) echo bootx64 ;; 38 | arm64) echo bootaa64 ;; 39 | i386) echo bootia32 ;; 40 | arm) echo bootarm ;; 41 | riscv) echo bootriscv64 ;; 42 | *) die "machine type $(uname -m) doesn't support UEFI" ;; 43 | esac 44 | } 45 | 46 | make_esp_file() { 47 | local file sizekb loader device stagedir fatbits efibootname 48 | 49 | file=$1 50 | sizekb=$2 51 | loader=$3 52 | 53 | if [ "$sizekb" -ge "$fat32min" ]; then 54 | fatbits=32 55 | elif [ "$sizekb" -ge "$fat16min" ]; then 56 | fatbits=16 57 | else 58 | fatbits=12 59 | fi 60 | 61 | stagedir=$(mktemp -d /tmp/stand-test.XXXXXX) 62 | mkdir -p "${stagedir}/EFI/BOOT" 63 | efibootname=$(get_uefi_bootname) 64 | cp "${loader}" "${stagedir}/EFI/BOOT/${efibootname}.efi" 65 | makefs -t msdos \ 66 | -o fat_type=${fatbits} \ 67 | -o sectors_per_cluster=1 \ 68 | -o volume_label=EFISYS \ 69 | -s ${sizekb}k \ 70 | "${file}" "${stagedir}" 71 | rm -rf "${stagedir}" 72 | } 73 | 74 | make_esp_device() { 75 | local dev file mntpt fstype efibootname kbfree loadersize efibootfile 76 | local isboot1 existingbootentryloaderfile bootorder bootentry 77 | 78 | # ESP device node 79 | dev=$1 80 | file=$2 81 | 82 | mntpt=$(mktemp -d /tmp/stand-test.XXXXXX) 83 | 84 | # See if we're using an existing (formatted) ESP 85 | fstype=$(fstyp "${dev}") 86 | 87 | if [ "${fstype}" != "msdosfs" ]; then 88 | newfs_msdos -F 32 -c 1 -L EFISYS "${dev}" > /dev/null 2>&1 89 | fi 90 | 91 | mount -t msdosfs "${dev}" "${mntpt}" 92 | if [ $? -ne 0 ]; then 93 | die "Failed to mount ${dev} as an msdosfs filesystem" 94 | fi 95 | 96 | echo "Mounted ESP ${dev} on ${mntpt}" 97 | 98 | efibootname=$(get_uefi_bootname) 99 | kbfree=$(df -k "${mntpt}" | tail -1 | cut -w -f 4) 100 | loadersize=$(stat -f %z "${file}") 101 | loadersize=$((loadersize / 1024)) 102 | 103 | # Check if /EFI/BOOT/BOOTxx.EFI is the FreeBSD boot1.efi 104 | # If it is, remove it to avoid leaving stale files around 105 | efibootfile="${mntpt}/EFI/BOOT/${efibootname}.efi" 106 | if [ -f "${efibootfile}" ]; then 107 | isboot1=$(strings "${efibootfile}" | grep "FreeBSD EFI boot block") 108 | 109 | if [ -n "${isboot1}" ] && [ "$kbfree" -lt "${loadersize}" ]; then 110 | echo "Only ${kbfree}KB space remaining: removing old FreeBSD boot1.efi file /EFI/BOOT/${efibootname}.efi" 111 | rm "${efibootfile}" 112 | rmdir "${mntpt}/EFI/BOOT" 113 | else 114 | echo "${kbfree}KB space remaining on ESP: renaming old boot1.efi file /EFI/BOOT/${efibootname}.efi /EFI/BOOT/${efibootname}-old.efi" 115 | mv "${efibootfile}" "${mntpt}/EFI/BOOT/${efibootname}-old.efi" 116 | fi 117 | fi 118 | 119 | if [ ! -f "${mntpt}/EFI/freebsd/loader.efi" ] && [ "$kbfree" -lt "$loadersize" ]; then 120 | umount "${mntpt}" 121 | rmdir "${mntpt}" 122 | echo "Failed to update the EFI System Partition ${dev}" 123 | echo "Insufficient space remaining for ${file}" 124 | echo "Run e.g \"mount -t msdosfs ${dev} /mnt\" to inspect it for files that can be removed." 125 | die 126 | fi 127 | 128 | mkdir -p "${mntpt}/EFI/freebsd" 129 | 130 | # Keep a copy of the existing loader.efi in case there's a problem with the new one 131 | if [ -f "${mntpt}/EFI/freebsd/loader.efi" ] && [ "$kbfree" -gt "$((loadersize * 2))" ]; then 132 | cp "${mntpt}/EFI/freebsd/loader.efi" "${mntpt}/EFI/freebsd/loader-old.efi" 133 | fi 134 | 135 | echo "Copying loader to /EFI/freebsd on ESP" 136 | cp "${file}" "${mntpt}/EFI/freebsd/loader.efi" 137 | 138 | if [ -n "${updatesystem}" ]; then 139 | existingbootentryloaderfile=$(efibootmgr -v | grep "${mntpt}//EFI/freebsd/loader.efi") 140 | 141 | if [ -z "$existingbootentryloaderfile" ]; then 142 | # Try again without the double forward-slash in the path 143 | existingbootentryloaderfile=$(efibootmgr -v | grep "${mntpt}/EFI/freebsd/loader.efi") 144 | fi 145 | 146 | if [ -z "$existingbootentryloaderfile" ]; then 147 | echo "Creating UEFI boot entry for FreeBSD" 148 | efibootmgr --create --label FreeBSD --loader "${mntpt}/EFI/freebsd/loader.efi" > /dev/null 149 | if [ $? -ne 0 ]; then 150 | die "Failed to create new boot entry" 151 | fi 152 | 153 | # When creating new entries, efibootmgr doesn't mark them active, so we need to 154 | # do so. It doesn't make it easy to find which entry it just added, so rely on 155 | # the fact that it places the new entry first in BootOrder. 156 | bootorder=$(efivar --name 8be4df61-93ca-11d2-aa0d-00e098032b8c-BootOrder --print --no-name --hex | head -1) 157 | bootentry=$(echo "${bootorder}" | cut -w -f 3)$(echo "${bootorder}" | cut -w -f 2) 158 | echo "Marking UEFI boot entry ${bootentry} active" 159 | efibootmgr --activate "${bootentry}" > /dev/null 160 | else 161 | echo "Existing UEFI FreeBSD boot entry found: not creating a new one" 162 | fi 163 | else 164 | # Configure for booting from removable media 165 | if [ ! -d "${mntpt}/EFI/BOOT" ]; then 166 | mkdir -p "${mntpt}/EFI/BOOT" 167 | fi 168 | cp "${file}" "${mntpt}/EFI/BOOT/${efibootname}.efi" 169 | fi 170 | 171 | umount "${mntpt}" 172 | rmdir "${mntpt}" 173 | echo "Finished updating ESP" 174 | } 175 | 176 | make_esp() { 177 | local file loaderfile 178 | 179 | file=$1 180 | loaderfile=$2 181 | 182 | if [ -f "$file" ]; then 183 | make_esp_file ${file} ${fat32min} ${loaderfile} 184 | else 185 | make_esp_device ${file} ${loaderfile} 186 | fi 187 | } 188 | 189 | make_esp_mbr() { 190 | dev=$1 191 | dst=$2 192 | 193 | s=$(find-part $dev "!239") 194 | if [ -z "$s" ] ; then 195 | s=$(find-part $dev "efi") 196 | if [ -z "$s" ] ; then 197 | die "No ESP slice found" 198 | fi 199 | fi 200 | make_esp /dev/${dev}s${s} ${dst}/boot/loader.efi 201 | } 202 | 203 | make_esp_gpt() { 204 | dev=$1 205 | dst=$2 206 | 207 | idx=$(find-part $dev "efi") 208 | if [ -z "$idx" ] ; then 209 | die "No ESP partition found" 210 | fi 211 | make_esp /dev/${dev}p${idx} ${dst}/boot/loader.efi 212 | } 213 | 214 | boot_nogeli_gpt_ufs_legacy() { 215 | dev=$1 216 | dst=$2 217 | 218 | idx=$(find-part $dev "freebsd-boot") 219 | if [ -z "$idx" ] ; then 220 | die "No freebsd-boot partition found" 221 | fi 222 | doit gpart bootcode -b ${gpt0} -p ${gpt2} -i $idx $dev 223 | } 224 | 225 | boot_nogeli_gpt_ufs_uefi() { 226 | make_esp_gpt $1 $2 227 | } 228 | 229 | boot_nogeli_gpt_ufs_both() { 230 | boot_nogeli_gpt_ufs_legacy $1 $2 $3 231 | boot_nogeli_gpt_ufs_uefi $1 $2 $3 232 | } 233 | 234 | boot_nogeli_gpt_zfs_legacy() { 235 | dev=$1 236 | dst=$2 237 | 238 | idx=$(find-part $dev "freebsd-boot") 239 | if [ -z "$idx" ] ; then 240 | die "No freebsd-boot partition found" 241 | fi 242 | doit gpart bootcode -b ${gpt0} -p ${gptzfs2} -i $idx $dev 243 | } 244 | 245 | boot_nogeli_gpt_zfs_uefi() { 246 | make_esp_gpt $1 $2 247 | } 248 | 249 | boot_nogeli_gpt_zfs_both() { 250 | boot_nogeli_gpt_zfs_legacy $1 $2 $3 251 | boot_nogeli_gpt_zfs_uefi $1 $2 $3 252 | } 253 | 254 | boot_nogeli_mbr_ufs_legacy() { 255 | dev=$1 256 | dst=$2 257 | 258 | doit gpart bootcode -b ${mbr0} ${dev} 259 | s=$(find-part $dev "freebsd") 260 | if [ -z "$s" ] ; then 261 | die "No freebsd slice found" 262 | fi 263 | doit gpart bootcode -p ${mbr2} ${dev}s${s} 264 | } 265 | 266 | boot_nogeli_mbr_ufs_uefi() { 267 | make_esp_mbr $1 $2 268 | } 269 | 270 | boot_nogeli_mbr_ufs_both() { 271 | boot_nogeli_mbr_ufs_legacy $1 $2 $3 272 | boot_nogeli_mbr_ufs_uefi $1 $2 $3 273 | } 274 | 275 | boot_nogeli_mbr_zfs_legacy() { 276 | dev=$1 277 | dst=$2 278 | 279 | # search to find the BSD slice 280 | s=$(find-part $dev "freebsd") 281 | if [ -z "$s" ] ; then 282 | die "No BSD slice found" 283 | fi 284 | idx=$(find-part ${dev}s${s} "freebsd-zfs") 285 | if [ -z "$idx" ] ; then 286 | die "No freebsd-zfs slice found" 287 | fi 288 | # search to find the freebsd-zfs partition within the slice 289 | # Or just assume it is 'a' because it has to be since it fails otherwise 290 | doit gpart bootcode -b ${dst}/boot/mbr ${dev} 291 | dd if=${dst}/boot/zfsboot of=/tmp/zfsboot1 count=1 292 | doit gpart bootcode -b /tmp/zfsboot1 ${dev}s${s} # Put boot1 into the start of part 293 | sysctl kern.geom.debugflags=0x10 # Put boot2 into ZFS boot slot 294 | doit dd if=${dst}/boot/zfsboot of=/dev/${dev}s${s}a skip=1 seek=1024 295 | sysctl kern.geom.debugflags=0x0 296 | } 297 | 298 | boot_nogeli_mbr_zfs_uefi() { 299 | make_esp_mbr $1 $2 300 | } 301 | 302 | boot_nogeli_mbr_zfs_both() { 303 | boot_nogeli_mbr_zfs_legacy $1 $2 $3 304 | boot_nogeli_mbr_zfs_uefi $1 $2 $3 305 | } 306 | 307 | boot_geli_gpt_ufs_legacy() { 308 | boot_nogeli_gpt_ufs_legacy $1 $2 $3 309 | } 310 | 311 | boot_geli_gpt_ufs_uefi() { 312 | boot_nogeli_gpt_ufs_uefi $1 $2 $3 313 | } 314 | 315 | boot_geli_gpt_ufs_both() { 316 | boot_nogeli_gpt_ufs_both $1 $2 $3 317 | } 318 | 319 | boot_geli_gpt_zfs_legacy() { 320 | boot_nogeli_gpt_zfs_legacy $1 $2 $3 321 | } 322 | 323 | boot_geli_gpt_zfs_uefi() { 324 | boot_nogeli_gpt_zfs_uefi $1 $2 $3 325 | } 326 | 327 | boot_geli_gpt_zfs_both() { 328 | boot_nogeli_gpt_zfs_both $1 $2 $3 329 | } 330 | 331 | # GELI+MBR is not a valid configuration 332 | boot_geli_mbr_ufs_legacy() { 333 | exit 1 334 | } 335 | 336 | boot_geli_mbr_ufs_uefi() { 337 | exit 1 338 | } 339 | 340 | boot_geli_mbr_ufs_both() { 341 | exit 1 342 | } 343 | 344 | boot_geli_mbr_zfs_legacy() { 345 | exit 1 346 | } 347 | 348 | boot_geli_mbr_zfs_uefi() { 349 | exit 1 350 | } 351 | 352 | boot_geli_mbr_zfs_both() { 353 | exit 1 354 | } 355 | 356 | boot_nogeli_vtoc8_ufs_ofw() { 357 | dev=$1 358 | dst=$2 359 | 360 | # For non-native builds, ensure that geom_part(4) supports VTOC8. 361 | kldload geom_part_vtoc8.ko 362 | doit gpart bootcode -p ${vtoc8} ${dev} 363 | } 364 | 365 | usage() { 366 | printf 'Usage: %s -b bios [-d destdir] -f fs [-g geli] [-h] [-o optargs] -s scheme \n' "$0" 367 | printf 'Options:\n' 368 | printf ' bootdev device to install the boot code on\n' 369 | printf ' -b bios bios type: legacy, uefi or both\n' 370 | printf ' -d destdir destination filesystem root\n' 371 | printf ' -f fs filesystem type: ufs or zfs\n' 372 | printf ' -g geli yes or no\n' 373 | printf ' -h this help/usage text\n' 374 | printf ' -u Run commands such as efibootmgr to update the\n' 375 | printf ' currently running system\n' 376 | printf ' -o optargs optional arguments\n' 377 | printf ' -s scheme mbr or gpt\n' 378 | exit 0 379 | } 380 | 381 | srcroot=/ 382 | 383 | # Note: we really don't support geli boot in this script yet. 384 | geli=nogeli 385 | 386 | while getopts "b:d:f:g:ho:s:u" opt; do 387 | case "$opt" in 388 | b) 389 | bios=${OPTARG} 390 | ;; 391 | d) 392 | srcroot=${OPTARG} 393 | ;; 394 | f) 395 | fs=${OPTARG} 396 | ;; 397 | g) 398 | case ${OPTARG} in 399 | [Yy][Ee][Ss]|geli) geli=geli ;; 400 | *) geli=nogeli ;; 401 | esac 402 | ;; 403 | u) 404 | updatesystem=1 405 | ;; 406 | o) 407 | opts=${OPTARG} 408 | ;; 409 | s) 410 | scheme=${OPTARG} 411 | ;; 412 | 413 | ?|h) 414 | usage 415 | ;; 416 | esac 417 | done 418 | 419 | if [ -n "${scheme}" ] && [ -n "${fs}" ] && [ -n "${bios}" ]; then 420 | shift $((OPTIND-1)) 421 | dev=$1 422 | fi 423 | 424 | # For gpt, we need to install pmbr as the primary boot loader 425 | # it knows about 426 | gpt0=${srcroot}/boot/pmbr 427 | gpt2=${srcroot}/boot/gptboot 428 | gptzfs2=${srcroot}/boot/gptzfsboot 429 | 430 | # For MBR, we have lots of choices, but select mbr, boot0 has issues with UEFI 431 | mbr0=${srcroot}/boot/mbr 432 | mbr2=${srcroot}/boot/boot 433 | 434 | # VTOC8 435 | vtoc8=${srcroot}/boot/boot1 436 | 437 | # sanity check here 438 | 439 | # Check if we've been given arguments. If not, this script is probably being 440 | # sourced, so we shouldn't run anything. 441 | if [ -n "${dev}" ]; then 442 | eval boot_${geli}_${scheme}_${fs}_${bios} $dev $srcroot $opts || echo "Unsupported boot env: ${geli}-${scheme}-${fs}-${bios}" 443 | fi 444 | -------------------------------------------------------------------------------- /script/mkisoimages.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Module: mkisoimages.sh 4 | # Author: Jordan K Hubbard 5 | # Date: 22 June 2001 6 | # 7 | # $FreeBSD$ 8 | # 9 | # This script is used by release/Makefile to build the (optional) ISO images 10 | # for a FreeBSD release. It is considered architecture dependent since each 11 | # platform has a slightly unique way of making bootable CDs. This script 12 | # is also allowed to generate any number of images since that is more of 13 | # publishing decision than anything else. 14 | # 15 | # Usage: 16 | # 17 | # mkisoimages.sh [-b] image-label image-name base-bits-dir [extra-bits-dir] 18 | # 19 | # Where -b is passed if the ISO image should be made "bootable" by 20 | # whatever standards this architecture supports (may be unsupported), 21 | # image-label is the ISO image label, image-name is the filename of the 22 | # resulting ISO image, base-bits-dir contains the image contents and 23 | # extra-bits-dir, if provided, contains additional files to be merged 24 | # into base-bits-dir as part of making the image. 25 | 26 | set -e 27 | 28 | . install-boot.sh 29 | 30 | if [ -z $ETDUMP ]; then 31 | ETDUMP=etdump 32 | fi 33 | 34 | if [ -z $MAKEFS ]; then 35 | MAKEFS=makefs 36 | fi 37 | 38 | if [ -z $MKIMG ]; then 39 | MKIMG=mkimg 40 | fi 41 | 42 | if [ "$1" = "-b" ]; then 43 | BASEBITSDIR="$4" 44 | # This is highly x86-centric and will be used directly below. 45 | bootable="-o bootimage=i386;$BASEBITSDIR/boot/cdboot -o no-emul-boot" 46 | 47 | # Make EFI system partition. 48 | espfilename=$(mktemp /tmp/efiboot.XXXXXX) 49 | # ESP file size in KB. 50 | espsize="2048" 51 | make_esp_file ${espfilename} ${espsize} ${BASEBITSDIR}/boot/loader.efi 52 | bootable="$bootable -o bootimage=i386;${espfilename} -o no-emul-boot -o platformid=efi" 53 | 54 | shift 55 | else 56 | BASEBITSDIR="$3" 57 | bootable="" 58 | fi 59 | 60 | if [ $# -lt 3 ]; then 61 | echo "Usage: $0 [-b] image-label image-name base-bits-dir [extra-bits-dir]" 62 | exit 1 63 | fi 64 | 65 | LABEL=`echo "$1" | tr '[:lower:]' '[:upper:]'`; shift 66 | NAME="$1"; shift 67 | 68 | publisher="The GhostBSD Project. https://www.GhostBSD.org/" 69 | echo "/dev/iso9660/$LABEL / cd9660 ro 0 0" > "$BASEBITSDIR/etc/fstab" 70 | $MAKEFS -t cd9660 $bootable -o rockridge -o label="$LABEL" -o publisher="$publisher" "$NAME" "$@" 71 | rm -f "$BASEBITSDIR/etc/fstab" 72 | rm -f ${espfilename} 73 | 74 | if [ "$bootable" != "" ]; then 75 | # Look for the EFI System Partition image we dropped in the ISO image. 76 | for entry in `$ETDUMP --format shell $NAME`; do 77 | eval $entry 78 | if [ "$et_platform" = "efi" ]; then 79 | espstart=`expr $et_lba \* 2048` 80 | espsize=`expr $et_sectors \* 512` 81 | espparam="-p efi::$espsize:$espstart" 82 | break 83 | fi 84 | done 85 | 86 | # Create a GPT image containing the partitions we need for hybrid boot. 87 | imgsize=`stat -f %z "$NAME"` 88 | $MKIMG -s gpt \ 89 | --capacity $imgsize \ 90 | -b "$BASEBITSDIR/boot/pmbr" \ 91 | -p freebsd-boot:="$BASEBITSDIR/boot/isoboot" \ 92 | $espparam \ 93 | -o hybrid.img 94 | 95 | # Drop the PMBR, GPT, and boot code into the System Area of the ISO. 96 | dd if=hybrid.img of="$NAME" bs=32k count=1 conv=notrunc 97 | rm -f hybrid.img 98 | fi 99 | --------------------------------------------------------------------------------