From nobody Thu Mar 19 17:15:25 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4fcC4s42TNz6VghJ for ; Thu, 19 Mar 2026 17:15:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fcC4s19Vsz3mmq for ; Thu, 19 Mar 2026 17:15:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1773940525; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=v4fQsv7XQ4XXP8s2RYG9fTuRTpIkCa4GIdwwCw9iuz0=; b=Khmv1Hy3nggXlCb0uKrwrtdOh8Z2V40alzMUYAjFNeZpazIWL5rmdwUsmoiEND6d0TnQyA dJ0NHnedG+ShqnaKgkvPpvkNsOIMGtH2VVB5RmQJq0NCt1lWdq6bwSFv7fka7FH9kw1lHH Yekz9LLMNRhRO9NaXb2nZhfoxQDu1DX1ztFPTuwxUHYifFA2Mx1x68NrRmhDWMv06zsQRI gQkKphHi50toA5/49rvneNyJkqjfisSxgjO61XKAZbeUaW/4vTzzTqretBv/AaDhUSCpf+ uHLgxwBN0DuQvHidM5zkNj4Ho6JOi+hjSlCR6hJjysiBDp1Axrq2V8jQotLQ4w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1773940525; a=rsa-sha256; cv=none; b=rn/Fsy9JoRCmdOY+v/l4GmMo5MXhBG85DEAJlnIOb/jMVEQxMzCLXwUHpyuubZE10lKdS3 bMcAtFFYMEoKh/qr3nH/zUSxKDS1ZpKSTHITmw7kUHurFqo+pQpTUWFRlp3ICWHflxEVw7 0/2rd2qmv/wxU+Rfk3Dy1VNB1RCiy3Agd8fqaRYtr0UD4te/CPW60++PWiMuj5y4UON5ZI 3lrh2xhYDn2SUU/kG5Bip+AJDWvqLGzmZxY+7MZ4d7nqDQLLzZgyGEVVAxHCNw2myt/MBV s3DL927ePqddG4q45KNj4qfMdoGwMapMpZZuAaBP8OQz061rfRbvHk4lnWIpcQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1773940525; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=v4fQsv7XQ4XXP8s2RYG9fTuRTpIkCa4GIdwwCw9iuz0=; b=J8IirElnwdkYFg+gTQMUxSHZwFA3of4paAYleB9QHGF4C0+M3g3CpWfBhdHAG6Qec3qguI 0/JX6nO2V46LjVRrMaIegEaAAym6PYRVetTYLk8HK7IXbBOJ8zrQQZhELhE6Ur9AzJ7SI3 JEV7QRJkVZnjNQPcMjaBHaLywSb/dI0C2IUMjnau0RXAwYvNf9cQQtSPyBgIfMfMCZexKr 50yS3Zji8BfEpVpJXXE5T6SpJ2/taU8mDwsuL4LPwe0Mfqf8K1iEvfhO9wzZXlEwWaGUft 1nGTBqGHcMS8TBTZBUa2lS+dc1hHAK6iX2tpO99QpcvG3kxUC/7b8wHyaxoqAQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fcC4s0JVMz14kd for ; Thu, 19 Mar 2026 17:15:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 311ed by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 19 Mar 2026 17:15:25 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Jose Luis Duran Subject: git: 68f5e5b1244d - main - nanobsd: embedded: Calculate FAT type and scheme List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jlduran X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 68f5e5b1244d1285f0ec5ea3f88ff63f2c9554dd Auto-Submitted: auto-generated Date: Thu, 19 Mar 2026 17:15:25 +0000 Message-Id: <69bc2f2d.311ed.3d9977dd@gitrepo.freebsd.org> The branch main has been updated by jlduran: URL: https://cgit.FreeBSD.org/src/commit/?id=68f5e5b1244d1285f0ec5ea3f88ff63f2c9554dd commit 68f5e5b1244d1285f0ec5ea3f88ff63f2c9554dd Author: Jose Luis Duran AuthorDate: 2026-03-19 17:12:26 +0000 Commit: Jose Luis Duran CommitDate: 2026-03-19 17:12:26 +0000 nanobsd: embedded: Calculate FAT type and scheme Determine the FAT (MS-DOS) type (FAT32, FAT16, or FAT12) and partition scheme (fat32lba or fat16b) based on partition size. Accept any (NetBSD) strsuftoll(3)-compatible string, as the value will be fed to makefs(8) "-s" in a future commit. NANO_SLICE_FAT_SIZEs defined in sectors (ending with an "s") will not be supported. As a workaround, the letter "b" (blocks) may be used. Reviewed by: imp MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D54975 --- tools/tools/nanobsd/embedded/common | 49 ++++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/tools/tools/nanobsd/embedded/common b/tools/tools/nanobsd/embedded/common index 87dad52fcaca..ebbe764f9028 100644 --- a/tools/tools/nanobsd/embedded/common +++ b/tools/tools/nanobsd/embedded/common @@ -171,6 +171,31 @@ WITHOUT_INSTALLLIB=true NANO_PACKAGE_ONLY=1 +# makefs(8)-size compatible +# See NetBSD's strsuftoll(3) +strsuftoll() { + local num result unit + + num=${1%?} + unit=${1#"${num}"} + + case "$unit" in + [bB]) result="${num}x512" ;; + [kK]) result="${num}x1024" ;; + [mM]) result="${num}x1024x1024" ;; + [gG]) result="${num}x1024x1024x1024" ;; + [tT]) result="${num}x1024x1024x1024x1024" ;; + [wW]) result="${num}x4" ;; # sizeof(int) + [0-9]) result="$1" ;; + *) + printf "%s\n" "'$1': illegal number" + exit 1 + ;; + esac + + printf "%s" "$(echo "scale=0; $result" | tr 'x' '*' | bc)" +} + # Creates images for all the formats that use MBR / GPT # split later if the #ifdef soup gets too bad. create_diskimage_gpt() { @@ -190,7 +215,8 @@ create_diskimage_mbr() { pprint 3 "image in: ${NANO_DISKIMGDIR}/_.disk.image.${NANO_NAME}${fmt}" ( - local extra i sz fmt fmtarg bootmbr bootbsd skiparg + local extra i sz fat_scheme fat_size fat_type fmt fmtarg bootmbr \ + bootbsd skiparg set -o xtrace # Tell mtools not to be too picky export MTOOLS_SKIP_CHECK=1 @@ -208,7 +234,24 @@ create_diskimage_mbr() { # Populate the FAT partition, if needed if [ -n "${NANO_SLICE_FAT}" ]; then echo Creating MSDOS partition for kernel - newfs_msdos -C ${NANO_SLICE_FAT_SIZE} -F 16 -L ${NANO_NAME} \ + + # Minimum size of FAT filesystems + FAT16MIN=2150400 + FAT32MIN=34091008 + + fat_size=$(strsuftoll "$NANO_SLICE_FAT_SIZE") + if [ "$fat_size" -ge "$FAT32MIN" ]; then + fat_type=32 + fat_scheme=fat32lba + elif [ "$fat_size" -ge "$FAT16MIN" ]; then + fat_type=16 + fat_scheme=fat16b + else + fat_type=12 + fat_scheme=fat16b + fi + + newfs_msdos -C ${NANO_SLICE_FAT_SIZE} -F "$fat_type" -L ${NANO_NAME} \ ${NANO_LOG}/_.${NANO_SLICE_FAT} if [ -d ${NANO_FAT_DIR} ]; then # Need to copy files from ${NANO_FATDIR} with mtools, or use @@ -256,7 +299,7 @@ create_diskimage_mbr() { # Now shuffle all the slices together into the proper layout if [ -n "$NANO_SLICE_FAT" ]; then - eval $NANO_SLICE_FAT=fat16b + eval $NANO_SLICE_FAT=$fat_scheme fi out=${NANO_DISKIMGDIR}/_.disk.image.${NANO_NAME}${fmt}