Subcategories

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

    @Jeremy Last time I told you FOG’s server had no U-Boot support and your two
    options were to keep hand-rolling it or put UEFI firmware on the Pi. That’s no
    longer true - I built the server side. It’s merged into working-1.6 as of
    1.6.0-beta.4318, so update and you’ll have it.

    There’s a new endpoint:

    http://<fogserver>/fog/service/uboot/boot.php?mac=<the Pi's MAC>

    It answers with an extlinux.conf-style document, computed live from the
    database. If the host has a task queued you get kernel/initrd/append for FOS;
    if it doesn’t, you get localboot and U-Boot falls through to the disk. Fetch it
    with curl first - the whole thing is plain text and readable, which is the
    point.

    On the Pi:

    dhcp setenv pxefile_addr_r 0x02000000 wget ${pxefile_addr_r} http://<fogserver>/fog/service/uboot/boot.php?mac=${ethaddr} pxe boot ${pxefile_addr_r}

    Use pxe boot, not sysboot. Every extlinux example you’ll find online shows
    sysboot, and it’s wrong here - sysboot reads a config off a filesystem on a
    block device, so it can’t see what wget just put in memory and does nothing
    visible. That’s the one I’d expect to catch people out.

    This should also fix your truncation. “Unknown request type :: Null” was $type
    arriving empty because your bootargs were being cut short, and I pointed at
    U-Boot’s command buffer rather than the kernel. pxe boot doesn’t go through
    that buffer - it parses the append line out of the loaded file straight into
    bootargs, so the ceiling you were hitting isn’t in the path any more. Worth
    confirming, since I’m reasoning about your build rather than looking at it.

    Two deliberate omissions, both because they’re properties of your board and not
    of FOG:

    FOG serves no device tree. No fdt or fdtdir directive, so you keep the tree at
    ${fdtcontroladdr} - the one VideoCore just built for the exact board revision
    it’s running on, which is better than anything I could serve you. Load
    addresses stay yours for the same reason.

    And FOG writes no pxelinux.cfg files. The endpoint is stateless: the board asks
    by MAC and gets an answer out of the database, so there’s nothing on disk to
    drift from what’s actually queued and nothing to clean up when a task finishes.

    One thing to check before you start: if your FOG install has netboot set to
    HTTPS, none of this will work. U-Boot’s wget is HTTP-only with no TLS at all,
    so it can’t even fail a certificate check - the redirect just ends the boot with
    nothing on screen. The installer now exempts service/uboot/ from the HTTP-to-
    HTTPS redirect the same way it does service/ipxe/, but only when netboot is
    configured for HTTP in the first place.

    Full write-up is in docs/UBOOT_ARM_BOOT.md in the repo.

    Being straight about what this is: the emitted config is pinned byte-for-byte
    by tests and the decisions behind it are the same code the iPXE path runs, so I
    know FOG emits what I intended. What I can’t tell you is that a real U-Boot
    consumes it, because nobody here has a Pi. You’re the only person who can prove
    that, and if it’s wrong I’d rather hear it than not.

  • 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
    V

    What version of FOG are you running?

  • 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.
    686 Topics
    5k Posts
    Bristow 0B

    @Tom-Elliott

    I’ve updated my FOG to the stable release and also updated my script with the following three lines, and everything’s fine – the database has been backed up successfully, it’s perfect!

    fogApiToken="XYZ=" fogUsrToken="ZYF" curl -ik -X GET "http://$fogServerAddress/fog/system/export" -H "fog-api-token: $fogApiToken" -H "fog-user-token: $fogUsrToken" -o $backupDir/mysql/fog.sql 2>>$backupDir/logs/error.log 1>>$backupDir/logs/progress.log 2>&1

    Thanks again for all your hard work on the FOG project!

64

Online

12.7k

Users

17.6k

Topics

157.0k

Posts