@saistrop said:
once I run the install script and go to the Database Updater page, it just navigates to a blank page.
This is what I’m hitting too in my thread.
@saistrop said:
once I run the install script and go to the Database Updater page, it just navigates to a blank page.
This is what I’m hitting too in my thread.
Fooling around with the results …
I tried
systemctl restart tftp* mysql* FOG* apache*
and got
Job for tftpd-hpa.service failed. See 'systemctl status tftpd-hpa.service' and 'journalctl -xn' for details.
… which got me
tftpd-hpa.service - LSB: HPA's tftp server
Loaded: loaded (/etc/init.d/tftpd-hpa)
Active: failed (Result: exit-code) since Wed 2015-07-29 16:28:05 EDT; 3min 6s ago
Process: 8289 ExecStop=/etc/init.d/tftpd-hpa stop (code=exited, status=0/SUCCESS)
Process: 8335 ExecStart=/etc/init.d/tftpd-hpa start (code=exited, status=71)
Jul 29 16:28:04 devfog systemd[1]: tftpd-hpa.service: control process exited, code=exited status=71
Jul 29 16:28:05 devfog systemd[1]: Failed to start LSB: HPA's tftp server.
Jul 29 16:28:05 devfog systemd[1]: Unit tftpd-hpa.service entered failed state.
Jul 29 16:28:12 devfog tftpd-hpa[8335]: Starting HPA's tftpd: in.tftpd
and
-- Logs begin at Wed 2015-07-29 13:01:02 EDT, end at Wed 2015-07-29 16:28:43 EDT. --
Jul 29 16:28:39 devfog mysql[8424]: Starting MySQL database server: mysqld . ..
Jul 29 16:28:41 devfog mysql[8424]: Checking for tables which need an upgrade, are corrupt or were
Jul 29 16:28:41 devfog mysql[8424]: not closed cleanly..
Jul 29 16:28:39 devfog /etc/mysql/debian-start[8893]: Upgrading MySQL tables if necessary.
Jul 29 16:28:42 devfog /etc/mysql/debian-start[8896]: /usr/bin/mysql_upgrade: the '--basedir' option is always ignored
Jul 29 16:28:42 devfog /etc/mysql/debian-start[8896]: Looking for 'mysql' as: /usr/bin/mysql
Jul 29 16:28:42 devfog /etc/mysql/debian-start[8896]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck
Jul 29 16:28:42 devfog /etc/mysql/debian-start[8896]: This installation of MySQL is already upgraded to 5.5.44, use --force if you still need to run mysql_upgrade
Jul 29 16:28:42 devfog /etc/mysql/debian-start[8911]: Checking for insecure root accounts.
Jul 29 16:28:43 devfog /etc/mysql/debian-start[8918]: Triggering myisam-recover for all MyISAM tables
Well the other thread is also unresolved, and my problems start with the server.
@Wayne-Workman said:
I think this is the same problem as here: https://forums.fogproject.org/topic/5548/internal-500-error-in-fog-client
Checking this out.
Getting this in 4252, still working on top of munged system.
Setting up and starting TFTP and PXE Servers................Failed!
Running Debian 8.1.0, I updated my SVN 3731 to GIT 4250.
At the Press Enter key when database is updated/installed. prompt all I see is an HTTP 500 Internal Server Error.
Pressing forwards with a Y response, the installation proceeds but web access remains HTTP 500 Internal Server Error. Checking the Apache error.log I find these entries of note:
:error pid 48093 client 172.19.252.91:52645 PHP Warning: http_build_query(): Parameter 1 expected to be Array or Object. Incorrect value given in /var/www/fog/lib/fog/FOGURLRequests.class.php on line 60, referer: http://devfog/fog/management/index.php?node=about&sub=kernel&install=1&file=aHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9mcmVlZ2hvc3QvS2VybmVsTGlzdC9LZXJuZWwuVG9tRWxsaW90dC4zLjE4LjUuNjQ=
ssl:warn pid 644 AH01909: 172.19.244.13:443:0 server certificate does NOT include an ID which matches the server name
:error pid 13817 client 172.19.252.91:53620 PHP Fatal error: Call to undefined method FOGCore::cleanInvalidEntries() in /var/www/html/fog/commons/init.php on line 179
For giggles I rolled back the installation by re-installing SVN 3731 and the problem persists.
Re-installation also generated this message immediately prior to the Press Enter key when database is updated/installed.
Downloading New FOG Client file.............................Backgrounded
ln: failed to create symbolic link ‘/var/www/html/fog/fog’: File exists
For our needs, the 6 weeks I spent building, scripting, documenting and testing for a universal image methodology for Windows 7, 8.1, 32bit and 64bit was well worth it.
Welp, SF is working enough again that I was able to pull down 3.18.5 . 3.0.1 is weirding out though.
With SourceForge a flaming crater, you wouldn’t happen to have working links for 3.18.5 and 3.0.1 bzImage and bzImage32 that I could grab from ya? I urgently needed 3.18.5 one hour ago.
That figures … and I picked today to download and cache 3.18.5 and 3.0.1 so I won’t have to worry about them anymore.
And then I’d have 23 images instead of 1.
And then I’d have 207 images for 9 recipes instead of just 9.
Adding drivers using pnputil and forfiles will bloat your registry and risk killing your image irrevocably.
I extract the drivers to the point I can see the .inf . If I can then manually install that driver without issue by using dpinst32 or dpinst64, I know I can proceed with dumping that driver into my repository.
I then test that driver against other versions of the same or similar drivers. That means I have a sample of every hardware out there for testing on.
That repository “xinf” is copied to c:\windows\inf .
Windows 7 recursively searches c:\windows\inf for drivers when coming out of sysprep with no other configuration.
This does not apply to those drivers that require supporting apps, like Intel USB3.0, and Infrared Receivers. For those I’ve crafted a script that applies those OEM and brand-specific drivers and apps during an Administrative auto-logon after sysprep completes.
There are also situations where a driver is badly crafted, identifying as for Hardware A but is meant for Hardware B, then loads Hardware B’s driver onto Hardware A, poisoning the system.
It is straight forward but there is a LOT of testing.
Here’s a list of the driver folders in my xinf:
AMD Graphics Radeon HD (2xxx,3xxx,4xxx)
AMD Graphics Radeon HD (5xxx,6xxx,7xxx,8xxx,R5,R7,R9)
Authentec Inc. (AES16(16)0,2501b,2550,266(015),2810)
Broadcom Ethernet NetXtreme I Desktop-Mobile
Broadcom Wireless 802.11abgn (BCM43xx)
Dell P2212H
Dell Wireless
DisplayLink USB Display Adapter
Intel Chipset Device Software
Intel Ethernet Connections Software
Intel Graphics (82945 Express)
Intel Graphics (GMA 3150)
Intel Graphics (GMA B43, G41, G43, G45, Q43, Q45 Express, 4 Series)
Intel Graphics (GMA G31, G33, G35, Q33, Q35, Q963, Q965 Express)
Intel Graphics 1st Gen Core (HD)
Intel Graphics 2nd Gen Core (HD 2000,3000)
Intel Graphics 3rd Gen Core (HD 2500,4000)
Intel Graphics 4th Gen Core (HD 4(246)00,5(012)00)
Intel Management Engine Interface (AMT)
Intel Matrix Storage Manager (3,4,5 Series, 900 Series)
Intel Rapid Start Technology
Intel Rapid Storage Technology
Intel Smart Connect Technology
Intel USB 3.0 eXtensible Host Controller
Intel Wireless Networking
Lava Dual Serial 16550 PCI (Minitel)
nVidia Graphics GeForce ((89)xxx,GTX(1234567)xx)
O2Micro USB CCID Smartcard Reader (OZ776)
Prolific Technology USB-to-Serial COM Port (PL-2303 HXD,EA,RA,SA,TA,TB)
Qualcomm Atheros Ethernet (PCIE 1Gb)
Qualcomm Atheros Wireless Adapter
Realtek Card Reader (RTS51xx,52xx,84xx)
Realtek Ethernet (PCIE 1Gb)
Realtek HD Audio
Realtek WiFi 802.11bgn Single-Chip (RTL8188,8191,8192)
Renesas Electronics USB 3.0 Host Controller (UPD720200)
Ricoh PCIe Media Controller R5(c8xx,u23x,u24x)
SoundMAX HD Audio (AD1882,1986,1988)
SoundMAX HD Audio (AD1984)2015-03-02 04:11 PM <DIR>
ST Microelectronics Accelerometer (DE351DL)
Startech PEX2S5521P
Texas Instruments USB 3.0 xHCI Host Controller (TUSB73x0)
TOSHIBA HDD Protection Utility
Validity Sensors
Vimicro Video Camera
Within these folders are the many extracted x86 AND x64 drivers that can be automatically distinguished and installed correctly by Windows 7.
For instance, the Dell Wireless folder has these drivers:
drv&util.Win7(32+64) - 6.20.55.51
drv.Win7(32) - 9.2.0.512
drv.Win7(64) - 9.2.0.512
… and the Intel Management Engine Interface (AMT) folder has these extracted drivers:
drv.MEI.Win(32+64) - 9.5.15.1730
drv.MEI.Win7(32+64) - 3.2.20.1046
drv.MEI.Win7(32+64) - 5.2.0.1008
drv.MEI.Win7(32+64) - 6.0.0.1179
drv.SOL.Win(32+64) - 9.5.15.1730
drv.SOL.Win7(32+64) - 5.4.1.1051
drv.SOL.Win7(32+64) - 5.5.1.1012
drv.SOL.Win7(32+64) - 8.1.0.1252
… and the Intel Rapid Storage Technology folder has:
11.2.0.1006 (4 Series - unsigned)
12.9.0.1001 (8 Series, C220 Series)
My particular Universal Image recipe is compatible with the following Systems:
I recommend starting simply with just the chipset, controller, ethernet and wireless drivers, which shouldn’t require any post-sysprep scripting to add OEM programs.
I’m using kernel 3.18.5 with SVN3731 for my 2012 R2 Hyper-V
I can’t get any newer kernel to work properly.
Mind you I also can’t download any other kernels right now, sourceforge appears to be hating me today.
For what operating system?
I have successfully captured Windows Server 2012 R2 Update 1 from Hyper-V R2, generation 1 machine as of SVN 3504 using kernel 3.18.5 . Newer version kernels do not work; for me at least, I haven’t heard from anyone else.
This same capture was successfully deployed to a virtual machine running on VMWare ESXi 5.5 using SVN 3731 and kernel 3.0.1 .
In my environment, I’ve honed in a compression level of 3.
level 6
level 3
I wonder what level 1 would do? …hmm…
In our environment, we have:
What I’ve built and will slowly deploy over what we currently have is:
Windows Server 2012 R2 Update 1 or Windows 8.1 Update 1 running Hyper-V
Hyper V machine consists of 2 (mobile systems) or 3 (desktop systems) virtual HDD (.vhdx)
OS.vhdx (Debian8 + Fog), two storage nodes: images.vhdx (DefaultMember/images), the optional other.vhdx (other/images)
A script is called as a job from rc.local to run at every powerup of the VM.
This script contains a while/do/done to wait for an IP address. Why wait? If there was a power failure at a site, the server will be up long before the switches, and wouldn’t be able to reach our centralized DHCP. So it waits until …
Once an IP is found, it changes the IP used in 3 MySQL entries, the storage nodes and two files (.fogsettings, default.ipxe); then restarts tftpd-hpa, mysql, fog and apache2 services to recognize the new IP address.
Any one of these dynamic FOG servers can be powered up at any site and will work without intervention. Worst case, it needs to be rebooted once.
To put the icing on the cake, I have another small script that can be run by the administrator that will change the hostname at all levels in one go if desired.
Images are separated into mandatory Approved images (DefaultMember/images.vhdx) available for every site, and site-specific (other) images created centrally or by the site’s technician.
When I bundle up a new wave of Approved Images, I can replace the entire images.vhdx, update the VM pointers without affecting the site-specific .VHDX, and we’re good.
I can also centrally manage the host OS and Virtual Machines through Hyper-V Manager .
… but that’s our environment. 
The following meat and potatoes is all taken out of context (I do a lot more) but is in order from my FOG installation recipe.
This Code Paste destroys/recreates the rc.local file (sudo su first of course)
cp -f /etc/rc.local /etc/rc.local.old &&
echo '#!/bin/sh -e' > /etc/rc.local &&
echo '#' >> /etc/rc.local &&
echo '# rc.local' >> /etc/rc.local &&
echo '#' >> /etc/rc.local &&
echo '# This script is executed at the end of each multiuser runlevel.' >> /etc/rc.local &&
echo '# Make sure that the script will "exit 0" on success or any other' >> /etc/rc.local &&
echo '# value on error.' >> /etc/rc.local &&
echo '#' >> /etc/rc.local &&
echo '# In order to enable or disable this script just change the execution' >> /etc/rc.local &&
echo '# bits.' >> /etc/rc.local &&
echo '#' >> /etc/rc.local &&
echo '# By default this script does nothing.' >> /etc/rc.local &&
echo ' ' >> /etc/rc.local &&
echo 'make_fog_portable &' >> /etc/rc.local &&
echo ' ' >> /etc/rc.local &&
echo 'exit 0' >> /etc/rc.local &&
chmod 755 /etc/rc.local &&
Create the make_fog_portable job script called by rc.local
echo '#!/bin/bash' > /bin/make_fog_portable &&
echo '#' >> /bin/make_fog_portable &&
echo '# make_fog_portable &' >> /bin/make_fog_portable &&
echo '#' >> /bin/make_fog_portable &&
echo '# This script is expected to be run as a job from /etc/rc.local' >> /bin/make_fog_portable &&
echo '# It will wait until an IP address is found, then use that IP' >> /bin/make_fog_portable &&
echo '# address to configure the FOG Server for that site.' >> /bin/make_fog_portable &&
echo '#' >> /bin/make_fog_portable &&
echo ' ' >> /bin/make_fog_portable &&
echo 'exit 0' >> /bin/make_fog_portable &&
chmod 755 /bin/make_fog_portable &&
vim /bin/make_fog_portable
Then you paste this in before exit 0:
# Wait for an IP address
IP=`ip addr list eth0 | grep "inet " |cut -d" " -f6|cut -d/ -f1`
while [ -z $IP ]
do
echo "Waiting :30 for an IP Address" > /dev/kmsg
sleep 30
IP=`ip addr list eth0 | grep "inet " |cut -d" " -f6|cut -d/ -f1`
done
# Make FOG Server Portable
sleep 6
echo "Updating IP address for FOG_TFTP_HOST to be $IP [`date`]" > /dev/kmsg
mysql --user=root -p<password> -e "UPDATE \`globalSettings\` SET \`settingValue\` = '$IP' WHERE \`settingKey\` ='FOG_TFTP_HOST';" fog
echo "Updating IP address for FOG_WEB_HOST to be $IP [`date`]" > /dev/kmsg
mysql --user=root -p<password> -e "UPDATE \`globalSettings\` SET \`settingValue\` = '$IP' WHERE \`settingKey\` ='FOG_WEB_HOST';" fog
echo "Updating IP address for FOG_WOL_HOST to be $IP [`date`]" > /dev/kmsg
mysql --user=root -p<password> -e "UPDATE \`globalSettings\` SET \`settingValue\` = '$IP' WHERE \`settingKey\` ='FOG_WOL_HOST';" fog
echo "Updating IP address for Storage Node DefaultMember to be $IP [`date`]" > /dev/kmsg
mysql --user=root -p<password> -e "UPDATE \`nfsGroupMembers\` SET \`ngmHostname\` = '$IP' WHERE \`ngmMemberName\` ='DefaultMember';" fog
echo "Updating IP address for Storage Node other to be $IP [`date`]" > /dev/kmsg
mysql --user=root -p<password> -e "UPDATE \`nfsGroupMembers\` SET \`ngmHostname\` = '$IP' WHERE \`ngmMemberName\` ='other';" fog
echo "Updating IP address in file .fogsettings to be $IP [`date`]" > /dev/kmsg
sed -i "s;ipaddress=\".*\";ipaddress=\"$IP\";" /opt/fog/.fogsettings
echo "Updating IP address in file default.ipxe to be $IP [`date`]" > /dev/kmsg
sed -i "s;http://\([^/]\+\)/;http://$IP/;" /tftpboot/default.ipxe
sed -i "s;http:///;http://$IP/;" /tftpboot/default.ipxe
# Restart Critical FOG Services
echo "Restarting Critical FOG Services [`date`]" > /dev/kmsg
systemctl restart tftp* mysql* FOG* apache*
echo "Sleeping 30 seconds before releasing script [`date`]" > /dev/kmsg
sleep 30
echo "releasing script [`date`]" > /dev/kmsg
I also perform this on the OS:
cd /var/www/fog/lib/fog &&
cp -f Config.class.php Config.class.php.old &&
sed -i "s;\".*\..*\..*\..*\";\$_SERVER['SERVER_ADDR'];" Config.class.php
If it’s a Ubuntu system I would also do:
echo manual >> tee /etc/init/mysql.override
FYI, using svn3504 I successfully captured and deployed a sysprepped Windows Server Standard 2012 R2 virtual machine using setting “Windows 8.1 - (7)”.