Quickie: PXE 0xC0000001 Error in SCCM

When you’re imaging/PXE-booting in SCCM, I think the “0xC0000001” error is one of the strangest errors to troubleshoot, because the source of the error is related to some problem/conflict between TFTP and the network adapter of the machine you’re imaging — but then sometimes it has to do with the network adapter of your distribution point.

Windows Boot Manager Error 0xC0000001

I have encountered multiple solutions to this problem, and here are some of them from other blogs:

There are others.

However for me, I had the following scenario, and my solution turned out to be quite simple.

Context:

  • Trying to image Pentium-based, 4 GB HP ProBook x360 11 G1 EE laptops
  • From a VMWare DP, the machines receive the boot image just fine.
  • From a Hyper-V DP, ‘0xC0000001’ error occurs on these laptops.
    • For the sake of curiosity, I did the three items above (change reg key, changed network adapter properties, and even reinstalled WDS). None of these worked.
    • I reverted all those settings and put the DP back in a ‘vanilla’ state

I found this behavior to be really odd. Why would it download the boot image on one just fine, but not on the other? Perhaps the boot image needs network adapter?

Well, it turns out the solution for this model laptop was to add the network adapter driver* to the boot image. We generally don’t add network drivers to boot images unless necessary, which in this case it turned out it was.

And that was that. If you don’t know how to add drivers to the boot image, I’m not going to reinvent the wheel, but I will direct you to this website that has a decent how-to.

Happy SCCM-ing!

(Edit 20180710 – clarified the use of a driver)

(Edit 20190702 – Added Windows Updates as a potential cause).

Quick Thoughts: KVM Host Validation FUSE Failure – virt-host-validate

Here’s a quickie fix.

Was doing a fresh KVM install on CentOS 7, and tried to validate the install with running “virt-host-validate”, but I was getting one item failing and couldn’t find a fix. The error:

LXC: Checking if device /sys/fs/fuse/connections exists : FAIL (Load the ‘fuse’ module to enable /proc/ overrides)

LXC: Checking if device /sys/fs/fuse/connections exists : FAIL (Load the 'fuse' module to enable /proc/ overrides)

The fix: just reinstall FUSE:

Problem solved: LXC: Checking if device /sys/fs/fuse/connections exists : PASS

SCCM: Using 7-Zip to Deploy Large Packages/Applications

One PITA problem to deal in SCCM with when deploying large application installs like AutoDesk Inventor or Adobe Creative Cloud is the sheer size of the install, which can be 10-20 GBs in size. Well after a fellow Twitterer asked about zipping packages and so forth for deploying large packages and applications in SCCM, I responded with something I do at my organization, and thought I’d share the info. This probably isn’t really anything new, but it’s what I’ve done to solve the problem.

Gizmo from Gremlins
I couldn’t think of an image for this post, so you get Gizmo.

Deploying large packages over the network can take awhile; one solution to this is to compress the contents into a package/application, deploy the compressed contents with the 7-zip executable (and dll), then use the 7-zip .exe to uncompress the contents on the remote device. After the install is complete, just remove the uncompressed contents, and Bob’s your uncle.

This requires the 7z.exe and 7z.dll files, and of course the compressed package in whatever format you want (I prefer .7z).

Below is a batch file I use to perform this task, and I’m using AutoDesk Inventor 2017 as an example. I also have a Github page that has the complete install and uninstall for AutoDesk Inventor.

Powershell: Creating and Using Nested Hash Tables

I was working on a new provisioning script for my work for creating new users, creating their home drives, and blah blah blah (that’s the technical term). During this while adding error detection and resolution, in dawned on me that one of the things I would like to do is get an email that contained the users that had issues or failed, and also I would like the email to contain each error for each user — but how was I going to do it?

Batman pensively rubbing his chin

Wait — I got it! Hash tables! Arrays! Something to that effect!

So I began my journey into figuring out how I was going to accomplish this.

The first place to start is the PowerShell help file (aka, “help about_hash_tables -full”). That certainly got me going with figuring out the details about it, but I also needed to read up the help files on arrays, because I began to slowly figure out that you can’t really — or at least it appears this way to me — nest hash tables within hash tables (I welcome being wrong about this). However, arrays can be nested within arrays. So to the help file on arrays I went (“help about_arrays -full”).

Again, not quite enough info for me, so the following articles REALLY helped enlighten me:

However, what I wasn’t really understanding was how to nest the arrays and hash tables two or more orders below. Maybe I just didn’t read the material well, or maybe I just had to get to work doing it.

So after some time and further reading, I figured it out. The gist of it is that you initialize an array, then in your loop initialize another array for a loop, then create a hash table that has the properties and values of the properties, create a PS object that has their properties defined as the hash table, then do the same process for the parent loop, and voila!

Ok, it’s not so voila, and that was a mouthful, so below is script I put together to explain it, with comments!

I don’t profess to be the expert on this, but it’s PowerShell, so there’s many paths to same destination — at least that’s what Don Jones says. :-p

Cheers!