Subcategories

  • Technical help directly related to FOG.
    9k Topics
    86k Posts
    F

    Follow-up: I think I (spelled Claude) found the cause of 1b (post-upgrade runs missing from the chart).

    taskLog.createTime is a TIMESTAMP, so with the session at +00:00 it comes back as UTC (my 9:27 PM EST run reads as 2026-11-04 02:27). But WindowedStats::dailySeries() calls toDisplayStored($value) with the default $isDatetime = true. Inside the 26-hour band, that treats the UTC value as pre-boundary America/New_York time, puts it on Nov 4, past the end of the series, and drops it.

    The same applies to every chart that uses dailySeries() on a TIMESTAMP column: imaging (taskLog.createTime), storage (images.imageDateTime), inventory (inventory.iCreateDate) and fleet (hosts.hostCreateDate). Audit and snapin use DATETIME columns, so they’re fine.

    Suggested fix: add an $isDatetime parameter to dailySeries(), pass it through to toDisplayStored(), and have the four TIMESTAMP callers pass false:

    // WindowedStats::dailySeries(): new last parameter $countK = 'c', $isDatetime = true ) { ... $day = self::toDisplayStored( (string)$row[$dateK], $isDatetime )->format('Y-m-d'); // ImagingStats::runsPerDay(): taskLog.createTime is a TIMESTAMP return self::dailySeries($rows, $start, $end, 'd', 'c', false); // StorageStats, InventoryStats, FleetStats: same, add 'd', 'c', false

    Claude put together a full patch against current dev-branch (5 files, +30/−6) if that’s helpful. I haven’t applied it to my server (yet), so it’s untested beyond reading the code. I thought I’d run it by the forum first for feedback. See attached.

    Thanks

    fog-dashboard-timestamp-fix.patch.txt

  • Problems with specific computer models.
    713 Topics
    8k Posts
    R

    @Tom-Elliott

    Thanks so much for your help with this. Happy to feed back any info I can so please do let me know if there’s anything else you need me to test. Will be on annual leave for a couple of weeks after this and have no access to the systems but I think this confirms your suspicion. Please see results below from a Dell OptiPlex 3070:

    Addresses on this machine:

    NIC: 01:00.0 (Realtek RTL8168h)
    Root port: 00:1c.0

    UEFI mode:

    setpci -s 01:00.0 CAP_EXP+10.w = 0142 (last digit 2 = L1 enabled)
    setpci -s 00:1c.0 CAP_EXP+10.w = 0c42 (last digit 2 = L1 enabled)

    Legacy/CSM mode:

    setpci -s 01:00.0 CAP_EXP+10.w = 0040 (last digit 0 = ASPM off)
    setpci -s 00:1c.0 CAP_EXP+10.w = 0c40 (last digit 0 = ASPM off)

    Dell’s UEFI firmware enables L1 on both the NIC and root port. The Legacy/CSM path leaves both off. The only difference between the two readings is those two ASPM bits. Everything else in the register is identical.

    Thanks for the nudge to run these. Anything else needs testing please do let me know. We love using FOG and it’s invaluable in our set of schools that we work in at least so please do keep up the great work!

  • Technical help related to a Windows Problem.
    1k Topics
    8k Posts
    Tom ElliottT

    Glad you have a workaround. I think the cause is the Windows boot manager certificate change, not the image.

    Your golden Optiplex installed Windows with Secure Boot on. Windows servicing then added the “Windows UEFI CA 2023” certificate to that machine’s db, and switched the boot files to a boot manager signed with it. The other Optiplex 3000s only trust the 2011 Microsoft certificates, so they reject that boot manager. bcdboot works because it copies the older 2011-signed boot manager.

    Can you confirm with two checks, in admin PowerShell, on the golden machine and on one target?

    [Text.Encoding]::ASCII.GetString((Get-SecureBootUEFI db).bytes) -match 'Windows UEFI CA 2023' mountvol S: /s (Get-AuthenticodeSignature S:\EFI\Microsoft\Boot\bootmgfw.efi).SignerCertificate.Issuer

    If the golden machine says True and the target says False, that is the cause. A newer Dell BIOS may include the 2023 certificate in its default keys. I am also looking at having FOS add it during the Secure Boot enrollment task.

  • Technical help related to a Linux Problem.

    730 Topics
    6k Posts
    Mr_____TM

    @JasonNaughton

    Hi, I noticed that this was unresolved after so long. Wonder if you have solved it?
    I recently stumbled across the man page for dhcpcd.conf. In there is a denyinterfaces (pattern) should solve the issue for you. It tells dhcpd to ignore the nic interfaces listed in pattern. Just was wondering if you found the fix otherwise hope this helps.

  • Technical help related to a Mac Problem.

    81 Topics
    943 Posts
    Bristow 0B

    Hello everyone,

    As I work at a secondary school, I was able to get hold of some Catalina iMacs (iMac 14.3).
    I already use FOG to deploy Windows and Linux images on PCs.

    I would like to deploy a LinuxMint image on these iMacs.

    However, I am unable to boot into PXE on them with FOG, and I do not know what is wrong.

    I modified my DHCP server as follows:

    ## FOG class "UEFI-32-1" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00006"; filename "i386-efi/ipxe.efi"; } class "UEFI-32-2" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00002"; filename "i386-efi/ipxe.efi"; } class "UEFI-64-1" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00007"; filename "ipxe.efi"; } class "UEFI-64-2" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00008"; filename "ipxe.efi"; } class "UEFI-64-3" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00009"; filename "ipxe.efi"; } class "Apple-Intel-Netboot" { match if substring (option vendor-class-identifier, 0, 14) = "AAPLBSDPC/i386"; option dhcp-parameter-request-list 1,3,17,43,60; if (option dhcp-message-type = 8) { option vendor-class-identifier "AAPLBSDPC"; if (substring(option vendor-encapsulated-options, 0, 3) = 01:01:01) { # BSDP List option vendor-encapsulated-options 01:01:01:04:02:80:00:07:04:81:00:05:2a:09:0D:81:00:05:2a:08:69:50:58:45:2d:46:4f:47; } elsif (substring(option vendor-encapsulated-options, 0, 3) = 01:01:02) { #BSDP Select option vendor-encapsulated-options 01:01:02:08:04:81:00:05:2a:82:0a:4e:65:74:42:6f:6f:74:30:30:31; # filename "i386-efi/ipxe.efi"; filename "snp.efi"; } } } class "Legacy" { match if substring(option vendor-class-identifier, 0, 20) = "PXEClient:Arch:00000"; filename "undionly.kkpxe"; } ### END FOG

    I tested ipxe.efi in 64-bit and 32-bit, as well as snp.efi, but it still doesn’t work. I get some kind of spinning planet when I try to boot.

    I admit I don’t fully understand the documentation page: https://wiki.fogproject.org/wiki/index.php/FOG_on_a_MAC

    Thanks in advance!

  • General Developer questions relating to FOG.
    690 Topics
    5k Posts
    Tom ElliottT

    @astrugatch Short answer: no, the existing FOG Client does not pull the agent by itself. You push the agent with the tool you already use to deploy software.

    What happens when you upgrade the server

    Your legacy FOG Client installs keep working against 1.6. The server still serves the legacy client endpoints, so you can run both while you migrate. Nothing on the server needs to change first. Hosts, groups, snapins, printers, power schedules and module settings all carry over. The legacy Client Updater module is gone in 1.6. So the old client cannot update itself into the agent. The FOG server does not host the agent installer. It comes from the GitHub releases page: https://github.com/FOGProject/fog-agent/releases/latest

    How to move a machine to the agent

    Install the agent MSI on the machine. The MSI finds the legacy “FOG Service” and removes it for you. Do not run the two side by side.

    For a silent push (GPO, PDQ, SCCM/Intune, or a script):

    msiexec /i fog-agent-<version>-x64.msi /qn SERVER=https://your-fog-server/fog CAFINGERPRINT=<fingerprint> TOKEN=<token> /l*v C:\fog-agent-install.log SERVER is your web UI address with /fog on the end. Old scripts that use WEBADDRESS and WEBROOT still work. CAFINGERPRINT is the SHA-256 on the Root row of FOG Configuration → Certificates. Leave it out if your web UI uses a public or corporate certificate that the machines already trust. TOKEN is optional. Create one under Hosts → Agent Enrollment Tokens. With a token, the host enrolls with no click. Without one, each host waits under Hosts → Pending Agents until you approve it.

    The FOG Client page in the 1.6 main menu shows the same command with your server address already filled in.

    Images

    You can put the agent in your image. Capture the machine as it is, no sysprep needed. A deployed clone detects that it is a different machine and enrolls as itself. If FOG deployed to that host in the last 24 hours, the server approves it automatically.

    Docs

    Install and migrate: https://docs.fogproject.org/en/latest/installation/client/install-fog-agent (see “Moving from the legacy client”) What changes for an admin (printers, AD join, user tracking): https://docs.fogproject.org/en/latest/management/web/fog-agent Reference: https://docs.fogproject.org/en/latest/kb/reference/fog-agent-reference Troubleshooting: https://docs.fogproject.org/en/latest/kb/troubleshooting/fog-agent-troubleshooting

    If an install fails, post C:\ProgramData\FOG\fog-agent.log and the msiexec log here.

49

Online

12.8k

Users

17.7k

Topics

157.3k

Posts