<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux &#8211; Giovanni F. Mazzeo De Santolo</title>
	<atom:link href="https://desantolo.com/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>https://desantolo.com</link>
	<description>That italian IT guy</description>
	<lastBuildDate>Sun, 20 Jun 2021 03:51:32 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>
<site xmlns="com-wordpress:feed-additions:1">123042357</site>	<item>
		<title>How to setup dual-stack IPv4 IPv6 Azure VM without a load-balancer</title>
		<link>https://desantolo.com/2021/04/how-to-setup-dual-stack-ipv4-ipv6-azure-vm-without-a-load-balancer/</link>
					<comments>https://desantolo.com/2021/04/how-to-setup-dual-stack-ipv4-ipv6-azure-vm-without-a-load-balancer/#respond</comments>
		
		<dc:creator><![CDATA[Giovanni]]></dc:creator>
		<pubDate>Sun, 11 Apr 2021 20:32:31 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[azure]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[dual stack]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[virtual server]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[vm]]></category>
		<category><![CDATA[vmnet]]></category>
		<guid isPermaLink="false">https://desantolo.com/?p=616</guid>

					<description><![CDATA[I wanted to document my Microsoft Azure saga in getting a public IPv6 address to work in a virtual machine without a load balancer in front of it. My needs were pretty simple and straightforward I wanted a virtual server &#8230; <a href="https://desantolo.com/2021/04/how-to-setup-dual-stack-ipv4-ipv6-azure-vm-without-a-load-balancer/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p>I wanted to document my Microsoft Azure saga in getting a public IPv6 address to work in a virtual machine without a load balancer in front of it. My needs were pretty simple and straightforward <strong>I wanted a virtual server that had a static IPv4 and IPv6 public addresses</strong> so that I can monitor my home network and other websites. </p>



<p>You would think this would be pretty easy, a few clicks and done? That wasn&#8217;t my experience on Azure and setting this up isn&#8217;t easy nor straightforward. Below is how to get it done, if this helps you &#8211; you can <a rel="noreferrer noopener" href="https://www.buymeacoffee.com/thelinuxguy" target="_blank">buy me a coffee or beer</a>.</p>



<span id="more-616"></span>



<div class="wp-block-jetpack-markdown"><h3>What Microsoft documentation said</h3>
<p>You can use public IPv6 address on a load balancer which needs to be a separate paid server/product in front of your servers. This isn&#8217;t what I was looking &#8211; I complained about it on github with screenshots <a href="https://github.com/MicrosoftDocs/azure-docs/issues/69167">issue #69167</a>.</p>
<p><strong>Disclaimer:</strong> I have no expertise on Microsoft Azure prior to this (I currently work at Google and GCP is what we do). I chose to use Azure for my hobby/playground primarily because I get $50 a month free credit with my MSDN subscription.</p>
<h3>My hacky (undocumented) way of getting it set up</h3>
<ol>
<li>Create a new Virtual Machine</li>
</ol>
<p>Use <a href="http://portal.azure.com/">portal.azure.com</a> &#8211; I am not going to go in depth here but I will call out the items you need to make sure to enable or change at setup.</p>
<p><strong>Do pay attention to these when creating VM</strong>:</p>
<ul>
<li>Use &quot;create a resource&quot; select &quot;Ubuntu Server 18.04 LTS&quot; and should default to virtual server.</li>
<li>Make sure to select &#8216;create new resource group&#8217; to bundle everything of this server together.</li>
<li>Disable default &#8216;scheduled shutdown&#8217;</li>
</ul>
<p>Deploy it. Go back to the newly created resource group.</p>
<ol start="2">
<li>Edit Virtual Network to add IPv6 (address space)</li>
</ol>
<p>You should see only IPv4 listed here. Like 10.0.0.0/24 &#8211; add IPv6.</p>
<p>Input: <strong>ace:cab:deca::/48</strong></p>
<p>Hit save.</p>
<ol start="3">
<li>Edit Virtual Network to add IPv6 (subnets)</li>
</ol>
<p>You should see <strong>default</strong> click it. On the right dialog that opens click <strong>Add IPv6 address space</strong></p>
<p>Input: <strong>ace:cab:deca::/64</strong></p>
<p>Make sure to select a network Security Group. (whatever the name you gave it). Save.</p>
<ol start="4">
<li>Create a dual-stack IPv4 and IPv6 public address</li>
</ol>
<p>Search Azure for <strong>Public IP addresses</strong> create one.</p>
<p><strong>Pay attention at creation</strong>:</p>
<ul>
<li>Select IP version <strong>both</strong></li>
<li>Select SKU <strong>standard</strong></li>
<li><strong>Ensure you associate it to your VM resource group and zone otherwise it won&#8217;t work</strong></li>
</ul>
<ol start="5">
<li>Stop virtual machine.</li>
</ol>
<p>Self explanatory, or during step 1 make sure to ensure it won&#8217;t be auto started.</p>
<ol start="6">
<li>Associate the new NIC and delete the old NIC from the VM</li>
</ol>
<p>With the VM shutdown, networking settings &gt; &quot;Attach network interface&quot; menu. Select create and attach network interface.</p>
<p>At <strong>NIC create</strong>:</p>
<ul>
<li>NIC security group select NONE.</li>
<li>Select Private IPv6 address. Give it a name &quot;v6&quot; for me.</li>
</ul>
<p>Detach the old NIC and delete from resource group (self-explanatory).</p>
<ol start="8">
<li>Associate the public IPv6 and IPv6 to the network interface</li>
</ol>
<p>Go to the new NIC we created and associated, &quot;IP configuration&quot; menu.</p>
<p>You should see &#8216;ipconfig1&#8217; is IPv4 and &quot;v6&quot; is secondary with our local IPv6 we gave on step 2.</p>
<p><strong>Associate IPv4 public address by clicking ipconfig1</strong> a new menu with a drop-down box and the new IPv4 (dual-stack) shows up. Select and save.</p>
<p><strong>Associate IPv6 public address</strong> same as above. You should end up with something like this</p>
</div>



<figure class="wp-block-image size-large"><a href="https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?ssl=1"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="500" height="382" data-attachment-id="618" data-permalink="https://desantolo.com/2021/04/how-to-setup-dual-stack-ipv4-ipv6-azure-vm-without-a-load-balancer/2021-04-11_16-24-18/" data-orig-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?fit=1179%2C901&amp;ssl=1" data-orig-size="1179,901" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="2021-04-11_16-24-18" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?fit=300%2C229&amp;ssl=1" data-large-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?fit=500%2C382&amp;ssl=1" src="https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?resize=500%2C382&#038;ssl=1" alt="" class="wp-image-618" srcset="https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?resize=1024%2C783&amp;ssl=1 1024w, https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?resize=300%2C229&amp;ssl=1 300w, https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?resize=768%2C587&amp;ssl=1 768w, https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?resize=800%2C611&amp;ssl=1 800w, https://i0.wp.com/desantolo.com/wp-content/uploads/2021/04/2021-04-11_16-24-18.png?w=1179&amp;ssl=1 1179w" sizes="(max-width: 500px) 100vw, 500px" /></a></figure>



<div class="wp-block-jetpack-markdown"><ol start="9">
<li>Incoming firewall rules</li>
</ol>
<p>Make sure to add necessary firewall rules, if you created the default settings on the security group you probably already have SSH (port 22) and that&#8217;s it.</p>
<p>You probably want to add a rule for ICMP traffic (ping).</p>
<p>If you like to have no security at all (or implement your own firewall on the virtual server) you can add a blanked incoming rule for all ports 0-65535 and this should open everything.</p>
<p><strong>Note microsoft IPv6 implementation sucks and <a href="https://docs.microsoft.com/en-us/answers/questions/279687/ipv6-icmp-tofrom-the-internet-with-public-ip.html">ICMP ping on IPv6 incoming/outgoing WILL NOT WORK</a>! This is what tripped me out and I spent several hours trying to troubleshoot something that Microsoft could have easily documented&#8230; but here we are&#8230; I spent hours frustrated but hopefully with this guide I wrote for you it saved you all this time. If you appreciated it &#8211; remember you can <a href="https://www.buymeacoffee.com/thelinuxguy">buy me a coffee</a></strong> <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Go ahead start your virtual server and you should be able to use nmap on its IPv6 address or SSH remotely and see it work. See above in:re ping on IPv6.</p>
</div>



<h2 class="wp-block-heading">Updates</h2>



<p><strong>June 2021</strong>: Reader &#8220;Ben R&#8221; contacted me about this article and shared some noteworthy information for folks using older VM images or installations. <strong>DHCPv6 may be disabled and must be manually enabled</strong>. See this article for <a href="https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-ipv6-for-linux" data-type="URL" data-id="https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-ipv6-for-linux">enabling DHCPv6 on Azure</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://desantolo.com/2021/04/how-to-setup-dual-stack-ipv4-ipv6-azure-vm-without-a-load-balancer/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">616</post-id>	</item>
		<item>
		<title>Linux IPv6 command cheatsheet</title>
		<link>https://desantolo.com/2021/03/linux-ipv6-command-cheatsheet/</link>
					<comments>https://desantolo.com/2021/03/linux-ipv6-command-cheatsheet/#respond</comments>
		
		<dc:creator><![CDATA[Giovanni]]></dc:creator>
		<pubDate>Fri, 05 Mar 2021 05:02:14 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[dhclient]]></category>
		<category><![CDATA[ip route]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[netstat]]></category>
		<guid isPermaLink="false">https://desantolo.com/?p=596</guid>

					<description><![CDATA[Good articles about IPv6: IPv6 range blocks IPv6 unicast, anycast, multicast &#8211; well known addresses. Troubleshooting tools: IPv6 ping from multiple locations. Bonus section &#8216;ufw&#8217; firewall Check status of firewall and enable or disable.# ufw status# ufw enable# ufw disable &#8230; <a href="https://desantolo.com/2021/03/linux-ipv6-command-cheatsheet/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[
<p>This post is intended to be a quick note to self on linux IPv6 commands, for quick reference when needed.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>



<pre class="wp-block-code"><code># Find the route decision for a given address.
ip route get 2a00:1450:4001:820::200e

ip -6 route
route -A inet6 (apt-get install net-tools) # equivalent to netstat -rn -A inet6
netstat -A inet6 -rn
netstat -r
ip -6 route show table 51820
ip -6 neigh
ip -6 neigh show proxy

# DHCPv6 release / renew
dhclient -6 -r ens18
dhclient -6 ens18

# Flush IPv6 neighbors cache
ip -family inet6 neigh flush any

# Find the route decision for a given address.
ip route get 2a00:1450:4001:820::200e

# Request a router advertisement (apt-get install -y ndisc6)
rdisc6 eth0

# Perform a Neighbor Solicitation (arp IPv4 equivalent) (apt-get install -y ndisc6)
ndisc6 2001:db8::42 eth0

# ping multicast address to have all link-local hosts to respond.
ping ff02::1%eth0</code></pre>



<p>Good articles about IPv6:</p>
<ul>
<li><a href="https://www.mediawiki.org/wiki/Help:Range_blocks/IPv6">IPv6 range</a> blocks</li>
<li><a href="https://menandmice.com/blog/ipv6-reference-multicast">IPv6 unicast, anycast, multicast</a> &#8211; well known addresses.</li>
</ul>
<p>Troubleshooting tools:</p>
<ul>
<li><a href="https://tools.keycdn.com/ipv6-ping">IPv6 ping</a> from multiple locations.</li>
</ul>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<h2 class="wp-block-heading">Bonus section &#8216;ufw&#8217; firewall</h2>



<p>Check status of firewall and enable or disable.<br># ufw status<br># ufw enable<br># ufw disable</p>



<p>View firewall rules and number to delete a specific rule.<br># ufw status verbose<br># ufw status numbered</p>



<p>Delete a firewall rule (from number of last cmd)<br># ufw delete 12</p>



<p>Rules needed to allow IPv6 routing via wireguard to endpoint (no iptables forwarding would be needed on IPv6 as the other peer carries the public IP &#8211; they also should implement a firewall before using the below command!)<br># ufw route allow in on eth0 out on wghub to 2602:xxx:730b:xxx:cafe::12</p>



<p>IPv4 firewall and routing rule to open Plex Media Server port 32400 and internal IPv4 space of wireguard peer.<br># ufw allow in on eth0 out on wghub to 10.100.100.11 port 32400<br># ufw route allow in on eth0 out on wghub to 10.100.100.11 port 32400</p>



<p>Add rule and get logs for matches of that rule:<br># ufw allow log proto any from any to 192.168.1.x</p>



<p>View logs:<br># tail -f /var/log/ufw.log</p>



<h3 class="wp-block-heading">Extra bonus iptables NAT forwarding</h3>



<p>On VPS (public endpoint) forward IPv4 traffic on tcp/32400 to wireguard peer. (recall IPv6 doesn&#8217;t need a rule)<br># iptables -A PREROUTING -t nat -i eth0 -p tcp &#8211;dport 32400 -j DNAT &#8211;to 10.100.100.11:32400</p>



<h3 class="wp-block-heading">Test your port forwards</h3>



<p>For IPv6 I use:<br><a href="http://www.ipv6scanner.com/cgi-bin/main.py">http://www.ipv6scanner.com/cgi-bin/main.py </a></p>



<p>For IPv4:<br><a href="https://www.yougetsignal.com/tools/open-ports/">https://www.yougetsignal.com/tools/open-ports/</a><br></p>
</div>
</div>
</div>
</div>
</div></div>
</div>
</div>


]]></content:encoded>
					
					<wfw:commentRss>https://desantolo.com/2021/03/linux-ipv6-command-cheatsheet/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">596</post-id>	</item>
		<item>
		<title>Fix ZFSonLinux pool  auto expanding</title>
		<link>https://desantolo.com/2017/07/fix-zfsonlinux-pool-auto-expanding/</link>
		
		<dc:creator><![CDATA[Giovanni]]></dc:creator>
		<pubDate>Mon, 24 Jul 2017 05:00:16 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[zfs]]></category>
		<category><![CDATA[zpool]]></category>
		<guid isPermaLink="false">https://desantolo.com/?p=560</guid>

					<description><![CDATA[If you&#8217;re having issues with zfsonlinux and your pool not expanding after replacing your hard drives with larger ones then here is a trick to fix it. # zpool set autoexpand=on {pool name} # zpool online -e {pool-name} {disk name/id &#8230; <a href="https://desantolo.com/2017/07/fix-zfsonlinux-pool-auto-expanding/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>If you&#8217;re having issues with zfsonlinux and your pool not expanding after replacing your hard drives with larger ones then here is a trick to fix it.<span id="more-560"></span></p>
<p class="p1"><span class="s1"># zpool set autoexpand=on {pool name}</span></p>
<p class="p1"># zpool online -e {pool-name} {disk name/id as displayed on zpool status}</p>
<p>Your pool should resize after running the second command. The first command was only to make sure you had set the zfs property that&#8217;s needed for the second command to expand the pool.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">560</post-id>	</item>
		<item>
		<title>Fix zfs-mount.service failing after reboot on Proxmox</title>
		<link>https://desantolo.com/2017/07/fix-zfs-mount-service-failing-after-reboot-on-proxmox/</link>
					<comments>https://desantolo.com/2017/07/fix-zfs-mount-service-failing-after-reboot-on-proxmox/#comments</comments>
		
		<dc:creator><![CDATA[Giovanni]]></dc:creator>
		<pubDate>Sat, 01 Jul 2017 01:33:33 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Proxmox]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[containers]]></category>
		<category><![CDATA[proxmox]]></category>
		<category><![CDATA[zfs]]></category>
		<guid isPermaLink="false">https://desantolo.com/?p=545</guid>

					<description><![CDATA[In my new homelab migration to Proxmox I came across a bug that will prevent you from being able to mount all your ZFS mount points and be a pain in the ass even more if you host containers in &#8230; <a href="https://desantolo.com/2017/07/fix-zfs-mount-service-failing-after-reboot-on-proxmox/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>In my new homelab migration to Proxmox I came across a bug that will prevent you from being able to mount all your ZFS mount points and be a pain in the ass even more if you host containers in that folder.<br />
<span id="more-545"></span><br />
<strong>Cause of the problem:</strong> When you use a different zpool than the default rpool, and setup a directory mount for PVE to use for ISO datastore, VZ dump, etc on reboot if the zfs mount points have not completed mounting at boot time. Proxmox will attempt to create the directory path structure.</p>
<p>The problem with creating a directory for something before is mounted is that when zfs-mount.service runs and attempts to mount the zfs mount points you will get these kind of errors:</p>
<p><code>root@pve:~# <strong>systemctl status zfs-mount.service</strong></code><br />
<code>● zfs-mount.service - Mount ZFS filesystems</code><br />
<code> Loaded: loaded (/lib/systemd/system/zfs-mount.service; enabled; vendor preset: enabled)</code><br />
<code> Active: failed (Result: exit-code) since Fri 2017-06-30 18:10:21 PDT; 21s ago</code><br />
<code> Process: 6590 ExecStart=/sbin/zfs mount -a (code=exited, status=1/FAILURE)</code><br />
<code> Main PID: 6590 (code=exited, status=1/FAILURE)</code></p>
<p><code>Jun 30 18:10:19 pve systemd[1]: Starting Mount ZFS filesystems...</code><br />
<code>Jun 30 18:10:20 pve zfs[6590]: cannot mount '/gdata/pve/subvol-102-disk-1': directory is not empty</code><br />
<code>Jun 30 18:10:20 pve zfs[6590]: cannot mount '/gdata/pve/subvol-106-disk-1': directory is not empty</code><br />
<code>Jun 30 18:10:20 pve zfs[6590]: cannot mount '/gdata/pve/subvol-109-disk-1': directory is not empty</code><br />
<code>Jun 30 18:10:21 pve systemd[1]: zfs-mount.service: Main process exited, code=exited, status=1/FAILURE</code><br />
<code>Jun 30 18:10:21 pve systemd[1]: Failed to start Mount ZFS filesystems.</code><br />
<code>Jun 30 18:10:21 pve systemd[1]: zfs-mount.service: Unit entered failed state.</code><br />
<code>Jun 30 18:10:21 pve systemd[1]: zfs-mount.service: Failed with result 'exit-code'.</code></p>
<p><strong>Fixing the root of the problem:</strong> change how proxmox deals with mounts by editing /etc/pve/storage.cfg &#8211; you need to add &#8220;mkdir 0&#8221; and &#8220;is_mountpoint&#8221; to the directory mount. Example:</p>
<p><code>dir: gdata-dump</code><br />
<code> path /gdata/vz</code><br />
<code> content iso,vztmpl,backup</code><br />
<code> maxfiles 0</code><br />
<code> shared 0</code><br />
<code> mkdir 0</code><br />
<code> is_mountpoint 1</code></p>
<p>Now we need to do some system cleanup before we reboot and confirm the problem is fixed.</p>
<p>Let&#8217;s check which mount points have failed:<br />
<code>root@pve:~# <strong>zfs list -r -o name,mountpoint,mounted</strong></code></p>
<p>Now let&#8217;s umount all zfs mount points (except rpool of course &#8211; assuming the rootfs is zfs)</p>
<p><code># zfs umount -a</code></p>
<p>After making sure ZFS mount points are unmounted, now we can delete the empty folders. Recall the failed mount points that the zfs list command gave you and one by one delete them like so:</p>
<p><code># rm -rf /gdata/pve/subvol-102-disk-1</code></p>
<p>Do this for each folder that showed issues mounting. You have a choice to remount everything with zfs mount -O -a &#8212; or better&#8230; reboot the system and check its fixed. I like the later better. So reboot.</p>
<p>After it boots back up check that service was able to mount zfs without issues:</p>
<p><code># systemctl status zfs-mount.service</code><br />
<code># zfs list -r -o name,mountpoint,mounted</code></p>
<p>That&#8217;s all folks&#8230; if you made the edit to storage.cfg and added the two variables this should not occur again. This was an annoying bug to deal with but good to have found a better solution than a startup script doing some dirty tricks!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://desantolo.com/2017/07/fix-zfs-mount-service-failing-after-reboot-on-proxmox/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">545</post-id>	</item>
		<item>
		<title>LXC allow non-root users to bind to port 80 (couchpotato example)</title>
		<link>https://desantolo.com/2017/06/lxc-allow-non-root-users-to-bind-to-port-80-couchpotato-example/</link>
		
		<dc:creator><![CDATA[Giovanni]]></dc:creator>
		<pubDate>Thu, 29 Jun 2017 08:37:42 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Proxmox]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[authbind]]></category>
		<category><![CDATA[containers]]></category>
		<category><![CDATA[couchpotato]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linux]]></category>
		<guid isPermaLink="false">https://desantolo.com/?p=541</guid>

					<description><![CDATA[A follow-up to my last post dealing with unprivileged port access on linux containers. This time, I have a couchpotato container that I want to change its default port from 5050 to port 80, so that it is as simple &#8230; <a href="https://desantolo.com/2017/06/lxc-allow-non-root-users-to-bind-to-port-80-couchpotato-example/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>A follow-up to my last post dealing with unprivileged port access on linux containers.</p>
<p>This time, I have a couchpotato container that I want to change its default port from 5050 to port 80, so that it is as simple as http://mycouch/ to access from the local network.<br />
<span id="more-541"></span><br />
Since CouchPotato is a python script, my other method of whitelisting the binary won&#8217;t work, an alternative is to use <strong>authbind</strong> to get around this by granting a user/group privileges to bind to one of those restricted ports (non-root can&#8217;t bind to ports 1024 or less).</p>
<p><strong>Environment:</strong> LXC Container (Debian 9.0 Stretch) image, with couchpotato defaults running on port 5050 and systemd init script setup (couchpotato user is named gmedia)</p>
<p><code>#  groupadd -g 3200 gmedia</code><br />
<code># useradd -u 3200 -g gmedia -M gmedia</code><br />
<code># apt-get install authbind</code><br />
<code># touch /etc/authbind/byport/80</code><br />
<code># chown gmedia /etc/authbind/byport/80</code><br />
<code># chmod 500 /etc/authbind/byport/80</code></p>
<p>Now edit the startup settings (Exec/user/group):<br />
<strong><span style="color: #444444;"># nano /etc/systemd/system/couchpotato.service</span></strong></p>
<p>Should look something like this:</p>
<p><code>[Unit]</code><br />
<code>Description=CouchPotato application instance</code><br />
<code>After=network.target</code></p>
<p><code>[Service]</code><br />
<code>ExecStart=/usr/bin/authbind --deep /opt/CouchPotatoServer/CouchPotato.py</code><br />
<code>Type=simple</code><br />
<code>User=gmedia</code><br />
<code>Group=gmedia</code></p>
<p><code>[Install]</code><br />
<code>WantedBy=multi-user.target</code></p>
<p>Now its time to test:</p>
<p># systemctl daemon-reload<br />
# systemctl start couchpotato.service<br />
# systemctl status couchpotato.service</p>
<p>Confirm all is hunky dory.</p>
<p><code>root@couchpotato:~# systemctl status couchpotato.service</code><br />
<code>● couchpotato.service - CouchPotato application instance</code><br />
<code> Loaded: loaded (/etc/systemd/system/couchpotato.service; enabled; vendor preset: enabled)</code><br />
<code> Active: active (running) since Thu 2017-06-29 08:35:32 UTC; 2s ago</code><br />
<code> Main PID: 1203 (python)</code><br />
<code> Tasks: 9 (limit: 4915)</code><br />
<code> CGroup: /system.slice/couchpotato.service</code><br />
<code> └─1203 python /opt/CouchPotatoServer/CouchPotato.py</code></p>
<p><code>Jun 29 08:35:32 couchpotato systemd[1]: Started CouchPotato application instance.</code><br />
<code>root@couchpotato:~# lsof -i :80</code><br />
<code>COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME</code><br />
<code>python 1203 gmedia 49u IPv4 6008724 0t0 TCP *:http (LISTEN)</code><br />
<code>python 1203 gmedia 52u IPv4 6024843 0t0 TCP 192.168.200.140:http-&gt;192.168.200.5:56928 (ESTABLISHED)</code><br />
<code>root@couchpotato:~#</code></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">541</post-id>	</item>
		<item>
		<title>Allow non-root processes to bind to privileged (ports </title>
		<link>https://desantolo.com/2017/06/allow-non-root-processes-to-bind-to-privileged-ports/</link>
		
		<dc:creator><![CDATA[Giovanni]]></dc:creator>
		<pubDate>Wed, 28 Jun 2017 07:53:49 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[containers]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[proxmox]]></category>
		<guid isPermaLink="false">https://desantolo.com/?p=538</guid>

					<description><![CDATA[As I work on my homelab migration from FreeNAS into Linux containers, I need to move my freebsd jails to LXC. In *nix any usage of well-known ports (aka 1024 or less) requires special privileges or a kernel setting. In &#8230; <a href="https://desantolo.com/2017/06/allow-non-root-processes-to-bind-to-privileged-ports/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>As I work on my homelab migration from FreeNAS into Linux containers, I need to move my freebsd jails to LXC.</p>
<p>In *nix any usage of well-known ports (aka 1024 or less) requires special privileges or a kernel setting. In FreeBSD a simple sysctl net.inet.ip.portrange.reservedhigh =1 was enough to allow the BSD jail to use any port on the jail.</p>
<p>On LXC, I had to figure out how to do the same thing and its quite different. My environment is a debian stretch LXC container but should work on other linux versions.</p>
<p><code><strong># apt-get install libcap2-bin</strong></code><br />
<code><strong># setcap 'cap_net_bind_service=+ep' /usr/bin/transmission-daemon</strong></code></p>
<p>In the example above, the binary /usr/bin/transmission-daemon is now able to open any port, or port 80 http in my case all while running a service as a non-root user.</p>
<p>Hopefully these helps folks out there, the answer took some digging but I already had an idea on what was needed thanks to my FreeBSD experience in zones <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">538</post-id>	</item>
		<item>
		<title>Install proxmox on a partition instead of a full-disk</title>
		<link>https://desantolo.com/2017/06/zfs-proxmox-on-a-partition-instead-of-a-full-disk/</link>
		
		<dc:creator><![CDATA[Giovanni]]></dc:creator>
		<pubDate>Sun, 11 Jun 2017 11:24:31 +0000</pubDate>
				<category><![CDATA[Guides]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Proxmox]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[freenas]]></category>
		<category><![CDATA[proxmox]]></category>
		<category><![CDATA[ssd]]></category>
		<category><![CDATA[zfs]]></category>
		<guid isPermaLink="false">https://desantolo.com/?p=532</guid>

					<description><![CDATA[By default, installing Proxmox with ZFS during the installation process will force you to use the entire disk for the root zpool. For most installs this is good enough. However, I like to do things differently sometimes. I have a &#8230; <a href="https://desantolo.com/2017/06/zfs-proxmox-on-a-partition-instead-of-a-full-disk/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>By default, installing Proxmox with ZFS during the installation process will force you to use the entire disk for the root zpool. For most installs this is good enough. However, I like to do things differently sometimes.</p>
<p>I have a pair of Samsung 840 Pro 256GB SSDs that I wanted to use for my new homelab that I am currently building (moving from vmware to proxmox). You may be wondering why I want to install the operating system on a partition instead of an entire disk. Several reasons:<br />
<span id="more-532"></span><br />
1. Proxmox (ZFS-on-Linux) does not yet support SSD TRIM, FreeBSD does support it so migrating from FreeNAS into Proxmox I should be aware of it.<br />
2. Data redundancy for the root filesystem does not need to be large. Even if I do RAID1 with my two SSDs I won&#8217;t be storing my critical data or VMs in the rpool &#8211; I want a smaller sized root pool that has fault-tolerance (RAID1). A partition of 60GB mirrored in two SSDs should fit the bill here.<br />
3. ZIL Intent Log experimentation, I also want to experiment by using the same two SSDs to speed up my ZFS writes. I want a small partition in a stripe (RAID0) for performance, 45GB total (22.5gb per ssd) is plenty for this.<br />
4. The left over unused space will be left untouched so that the SSD will have more available blocks during the controller&#8217;s built-in garbage collection (not the same as TRIM)</p>
<p>I don&#8217;t have enough time to go into a lot of details (it&#8217;s past 4am), so I will get to how to do it. If you are trying to follow my same steps, you will need at least 3 hard drives.</p>
<p>1. On a hard drive or device you don&#8217;t care to use in the final outcome, install Proxmox as you would normally. Wipe the entire partition table and let it install RAID0 on the whole disk.<br />
2. Boot into your new installation, have the two new disks you want to keep attached to the system and ensure linux sees them fdisk should help with this.<br />
3. You will now need to create the partitions on the new disks (not rpool):</p>
<p>You will need to know how to calculate hard disk sectors and multiply by your block size. I don&#8217;t have time to go over it but I will do a quick TL;DR example to give you an idea:</p>
<p>We want 25GB slice so that is around 25000000000 bytes / 512 (block size) = 48828125 total sectors to allocate this storage amount.</p>
<p>Take a look at the partition table to make sure you create something similar, fdisk -l /dev/sd$ (your rpool disk). We will leave 8MB disk at the end of the partition, Proxmox by default creates 3 partitions: GRUB_BOOT, ZFS data, Solaris 8MB.</p>
<p>This command creates the partitions for my new array, I&#8217;ve described them for you by the -c command. It should be self-explanatory.</p>
<p># sgdisk -z /dev/sdb<br />
# sgdisk -a1 -n1:34:2047 -t1:EF02 -c1:&#8221;BIOS boot&#8221; -n2:2048:156252048 -t2:BF01 -c2:&#8221;mirror&#8221; -n3:156252049:205080174 -t3:BF01 -c3:&#8221;stripe&#8221; -n4:205080175:205096559 -t4:BF0 /dev/sda</p>
<p># sgdisk -a1 -n1:34:2047 -t1:EF02 -c1:&#8221;BIOS boot&#8221; -n2:2048:156252048 -t2:BF01 -c2:&#8221;mirror&#8221; -n3:156252049:205080174 -t3:BF01 -c3:&#8221;stripe&#8221; -n4:205080175:205096559 -t4:BF0 /dev/sdc<br />
# zpool create -f stripe -o ashift=13 /dev/sda3 /dev/sdc3<br />
# zpool create -f newroot -o ashift=13 mirror /dev/sda2 /dev/sdc2<br />
# grub-install /dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSADB46090M<br />
# grub-install /dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S12RNEACC59063B</p>
<p>Backup &amp; moving stuff.<br />
# zfs snapshot -r rpool@fullbackup<br />
# zfs list -t snapshot<br />
# zfs send -R rpool@fullbackup | zfs recv -vFd newroot<br />
root@pve:/# zpool get bootfs<br />
NAME PROPERTY VALUE SOURCE<br />
newroot bootfs &#8211; default<br />
rpool bootfs rpool/ROOT/pve-1 local<br />
stripe bootfs &#8211; default<br />
root@pve:/# zpool set bootfs=newroot/ROOT/pve-1 newroot<br />
zpool export newroot<br />
zpool import -o altroot=/mnt newroot<br />
&#8212; rebooted with freenas live cd, enter shell, import newroot with new name rpool. rebooted<br />
&#8212; boot into proxmox recovery &#8212; once it boots, do recovery<br />
grub-install /dev/sdb<br />
grub-install /dev/sda<br />
update-grub2<br />
update-initramfs -u</p>
<p>#zpool set bootfs=newroot rpool could also work without renaming via FreeNAS but didn&#8217;t try.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">532</post-id>	</item>
		<item>
		<title>Xenserver 7.1 a good contender to replace esxi</title>
		<link>https://desantolo.com/2017/02/xenserver-7-1-a-good-contender-to-replace-esxi/</link>
		
		<dc:creator><![CDATA[Giovanni]]></dc:creator>
		<pubDate>Sun, 26 Feb 2017 21:37:13 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[esxi]]></category>
		<category><![CDATA[xenserver]]></category>
		<guid isPermaLink="false">https://desantolo.com/?p=506</guid>

					<description><![CDATA[I have been a big fan and user of vmware ESXi for years, I started playing with it since circa 2008. The bare metal hypervisor and its easy to use GUI on Windows makes virtualization management extremely easy. However in &#8230; <a href="https://desantolo.com/2017/02/xenserver-7-1-a-good-contender-to-replace-esxi/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>I have been a big fan and user of vmware ESXi for years, I started playing with it since circa 2008. The bare metal hypervisor and its easy to use GUI on Windows makes virtualization management extremely easy.</p>
<p>However in the past couple of years the free version of esxi has moved to HTML5 web management, and in the latest ESXi version the Windows client (vSphere client) requires you to pay for a license a run a central vcenter server/vm in order to manage via GUI (non-web).</p>
<p><span id="more-506"></span><br />
There are a few articles posted on how limited the web UI may be in contrast to all the features of the original windows GUI so I started pondering other products that may replace ESXi on my homelab (been an ESXi user since 3.x) but it looks like Xenserver 7.1 was just released and Citrix has been including a lot of Enterprise features on their free Xenserver product and offer a very comparable GUI on Windows as well.</p>
<p>A few days ago (February 23) Citrix just released the latest Xenserver 7.1 version (<a href="https://www.citrix.com/downloads/xenserver/product-software/xenserver-71-standard-edition.html">release link/downloads/changelog</a>). The feature I am most excited about? Docker integration via installing &#8220;container management supplemental pack&#8221;</p>
<p>Xenserver 7.1 seems to be based on Linux CentOS so installing packages (via rpm) should be pretty easy. I&#8217;ll post more information when I get more time to dig into it deeper as I am just installing it on my homelab for testing.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">506</post-id>	</item>
		<item>
		<title>Troubleshooting networking issues after fresh install of proxmox VE 4.4</title>
		<link>https://desantolo.com/2017/02/troubleshooting-networking-issues-after-fresh-install-of-proxmox-ve-4-4/</link>
		
		<dc:creator><![CDATA[Giovanni]]></dc:creator>
		<pubDate>Fri, 10 Feb 2017 06:04:02 +0000</pubDate>
				<category><![CDATA[Guides]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Proxmox]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[proxmox]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<guid isPermaLink="false">https://desantolo.com/?p=504</guid>

					<description><![CDATA[Writing a quick troubleshooting guide and informative post to address an issue I came across when installing Proxmox VE 4.4 on two of my machines. On servers with more than two network interfaces Debian/Proxmox renames all interfaces and does not &#8230; <a href="https://desantolo.com/2017/02/troubleshooting-networking-issues-after-fresh-install-of-proxmox-ve-4-4/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Writing a quick troubleshooting guide and informative post to address an issue I came across when installing Proxmox VE 4.4 on two of my machines.</p>
<p>On servers with more than two network interfaces Debian/Proxmox renames all interfaces and does not properly detect eth0 as the on-board ethernet as many other linux flavors. This may cause a mild headache if you just installed Proxmox with static IP addresses using the installer and upon reboot you can&#8217;t access any network resources.<span id="more-504"></span></p>
<p>I already explained the cause and you could argue that on the Proxmox installer they could add a built-in network detection check to properly label eth0 as eth0 as the device is named in many other linux distros. That currently does not exist so I will walk you around the troubleshooting.</p>
<p>Upon reboot or first boot after the installation is complete:<br />
<strong># ip link</strong></p>
<p>The bridge interface (<strong>vmbr0</strong>) should read &#8220;<strong>NO-CARRIER</strong>, MULTICAST, UP&#8221; as well as &#8220;<strong>state down</strong>&#8221; a few words further to the left of the results.</p>
<p><strong># dmesg | grep eth</strong></p>
<p>Read the entries in the dmesg logs, it tells you the name of network interfaces on your system.</p>
<p>&#8220;<strong>NO-CARRIER</strong>&#8221; indicates it does not detect an uplink, the interface is configured but none of its bridge members have a network cable or connection being detected.</p>
<p>To fix this you will want to run the following commands:<br />
<strong># ifdown -a</strong><br />
<strong># vi /etc/network/interfaces</strong></p>
<p>By default the installer sets up &#8220;eth0&#8221; as your only bridge member since the network card numbering got setup differently, the logical name on proxmox for eth0 is actually eth2.</p>
<p><strong>Edit the single instance of eth0 with eth2</strong> &#8211; save the file and exit the editor.</p>
<p><strong># ifup -a</strong><br />
should try to bring back up your interfaces. Trying pinging your network gateway, it should be working now. Cheers.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">504</post-id>	</item>
		<item>
		<title>How to flash Seagate firmware onto HP enterprise MB2000EAMZF drives</title>
		<link>https://desantolo.com/2017/01/crossflash-seagate-firmware-onto-hp-enterprise-mb2000eamzf-drives/</link>
		
		<dc:creator><![CDATA[Giovanni]]></dc:creator>
		<pubDate>Thu, 12 Jan 2017 07:06:40 +0000</pubDate>
				<category><![CDATA[Guides]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[crossflash]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[hard drive]]></category>
		<guid isPermaLink="false">https://desantolo.com/?p=492</guid>

					<description><![CDATA[In my previous post I talked about how HP locks down their hard drives (made by Seagate) with custom firmware that is exclusive to HP and with the huge caveat that if you do not have an HP storage controller &#8230; <a href="https://desantolo.com/2017/01/crossflash-seagate-firmware-onto-hp-enterprise-mb2000eamzf-drives/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>In my <a href="https://desantolo.com/2017/01/flashing-new-firmware-on-hp-hard-drives-without-proliant-hardware/">previous post</a> I talked about how HP locks down their hard drives (made by Seagate) with custom firmware that is exclusive to HP and with the huge caveat that if you do not have an HP storage controller the software update package provided by HP won&#8217;t work for you at all.</p>
<p>I spent the past 48 hours researching and trying different things. I unpacked the official HP firmware and tried to find the binary/firmware dump from within the .<strong>scexe</strong> file <a href="http://h20564.www2.hpe.com/hpsc/swd/public/detail?swItemId=MTX_8c93d86965e6415daf2350f691">provided by HP</a> on their website to no avail.  I even contacted HP for help and they would not be willing to help if the drives were not connected to HP hardware.</p>
<p>After some research I discovered that the HP MB2000EAMZF 2TB drive I had was almost exactly the same (part number) as the official Seagate ST32000644NS  drive after failing to be able to flash HPs firmware using HP&#8217;s bootable Firmware Update 8.3 (injecting the .scexe files inside this live CD) &#8211; I decided I really had nothing to lose but try the method I will explain below.<br />
<span id="more-492"></span></p>
<div class="wpe-box wpe-box-alert">
<p>The information provided below is provided to you with no guarantees it will work for you. By following my steps you are risking bricking your hard drive and I won&#8217;t be liable for it. <strong>Continue at your own risk</strong>.</p>
</div>
<h2>The tale of two drives</h2>
<p><img data-recalc-dims="1" decoding="async" data-attachment-id="493" data-permalink="https://desantolo.com/2017/01/crossflash-seagate-firmware-onto-hp-enterprise-mb2000eamzf-drives/st32000644ns-sample/" data-orig-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/ST32000644NS-sample.jpg?fit=650%2C942&amp;ssl=1" data-orig-size="650,942" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="ST32000644NS-sample" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/ST32000644NS-sample.jpg?fit=207%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/ST32000644NS-sample.jpg?fit=500%2C725&amp;ssl=1" class="size-medium wp-image-493 alignleft" src="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/ST32000644NS-sample.jpg?resize=207%2C300&#038;ssl=1" alt="" width="207" height="300" srcset="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/ST32000644NS-sample.jpg?resize=207%2C300&amp;ssl=1 207w, https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/ST32000644NS-sample.jpg?resize=552%2C800&amp;ssl=1 552w, https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/ST32000644NS-sample.jpg?w=650&amp;ssl=1 650w" sizes="(max-width: 207px) 100vw, 207px" />*Seagate original* Constellation ES ST32000644NS has part number: <strong>9JW168-039</strong></p>
<p>*HP enterprise* MB2000EAMZF has part number: <strong>9JW168-280</strong></p>
<p>It is possible that these two drives have different PCB control boards (basically what controls the disk heads and communicates to the physical disk). If I load a firmware that is written for a different PCB &#8211; my drive will most likely be bricked.</p>
<p>The part numbers were too close to eachother, only the last three digits were different. I did not find any other information online from anyone trying what I was about to attempt. HP had issued a *Critical* firmware update for these drives and my only choice was to take the risk now or put this drive on my ZFS array and wait for it to fail short term.<img data-recalc-dims="1" decoding="async" data-attachment-id="495" data-permalink="https://desantolo.com/2017/01/crossflash-seagate-firmware-onto-hp-enterprise-mb2000eamzf-drives/reason/" data-orig-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/reason.png?fit=741%2C157&amp;ssl=1" data-orig-size="741,157" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="reason-to-take the risk to flash firmware" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/reason.png?fit=300%2C64&amp;ssl=1" data-large-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/reason.png?fit=500%2C106&amp;ssl=1" class="aligncenter wp-image-495 size-full" src="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/reason.png?resize=500%2C106&#038;ssl=1" width="500" height="106" srcset="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/reason.png?w=741&amp;ssl=1 741w, https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/reason.png?resize=300%2C64&amp;ssl=1 300w" sizes="(max-width: 500px) 100vw, 500px" /></p>
<h2>Tools needed and where to get the firmware</h2>
<ol>
<li>I had another ST32000644NS drive around and used it&#8217;s serial number on seagate&#8217;s website. It provided me with <strong>firmware version SN12</strong> (ConstellationES1-Muskie-StdOEM-SATA-SN12.zip). Download to your desktop, unpack the zip and look inside the firmware folder <strong>SN12.lod</strong> file.</li>
<li><strong>Download and make a bootable CD</strong> of <a href="https://www.system-rescue-cd.org/">system-rescue live cd</a> &#8211; or if you have a Dell iDRAC like me boot from the .iso remotely <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
<li><strong>Ensure that only the hard drive to be flashed is connected to the server/system</strong>.</li>
<li><strong>Boot into the linux live CD</strong>, once in console check drive smart data to see the current model and version with<strong> smartct -x /dev/sda</strong> (or whatever the /dev/ name of your drive is)<img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="494" data-permalink="https://desantolo.com/2017/01/crossflash-seagate-firmware-onto-hp-enterprise-mb2000eamzf-drives/smart-before/" data-orig-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/smart-before.png?fit=822%2C691&amp;ssl=1" data-orig-size="822,691" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="smart-before-firmware-flash" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/smart-before.png?fit=300%2C252&amp;ssl=1" data-large-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/smart-before.png?fit=500%2C420&amp;ssl=1" class="aligncenter size-medium wp-image-494" src="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/smart-before.png?resize=300%2C252&#038;ssl=1" alt="" width="300" height="252" srcset="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/smart-before.png?resize=300%2C252&amp;ssl=1 300w, https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/smart-before.png?resize=768%2C646&amp;ssl=1 768w, https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/smart-before.png?resize=800%2C673&amp;ssl=1 800w, https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/smart-before.png?w=822&amp;ssl=1 822w" sizes="auto, (max-width: 300px) 100vw, 300px" /></li>
<li>Once you have verified the smart data of the drive you want to flash (it will have a name of /dev/sda or /dev/sdb or /dev/sd$)</li>
<li>Make sure to have a <strong>USB thumb drive with the SN12.lod</strong> file from step one &#8211; plug it in and mount the drive (if its linux formatted it will be as simple as <strong>mount /dev/sdb1 /mnt/windows</strong>)</li>
<li>Now we have the files and we&#8217;re ready to flash. Make sure disk is idle (no smart tests running in background). Push the firmware with <strong>hdparm  &#8211;fwdownload SN12.lod &#8211;yes-i-know-what-i-am-doing &#8211;please-destroy-my-drive /dev/sdb<img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="496" data-permalink="https://desantolo.com/2017/01/crossflash-seagate-firmware-onto-hp-enterprise-mb2000eamzf-drives/fw-download/" data-orig-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/fw-download.png?fit=822%2C691&amp;ssl=1" data-orig-size="822,691" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="fw-download" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/fw-download.png?fit=300%2C252&amp;ssl=1" data-large-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/fw-download.png?fit=500%2C420&amp;ssl=1" class="aligncenter size-medium wp-image-496" src="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/fw-download.png?resize=300%2C252&#038;ssl=1" alt="" width="300" height="252" srcset="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/fw-download.png?resize=300%2C252&amp;ssl=1 300w, https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/fw-download.png?resize=768%2C646&amp;ssl=1 768w, https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/fw-download.png?resize=800%2C673&amp;ssl=1 800w, https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/fw-download.png?w=822&amp;ssl=1 822w" sizes="auto, (max-width: 300px) 100vw, 300px" /></strong></li>
<li>Reboot the server.</li>
</ol>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="497" data-permalink="https://desantolo.com/2017/01/crossflash-seagate-firmware-onto-hp-enterprise-mb2000eamzf-drives/sn12-firmware-success/" data-orig-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/SN12-firmware-success.png?fit=822%2C691&amp;ssl=1" data-orig-size="822,691" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SN12-firmware-success" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/SN12-firmware-success.png?fit=300%2C252&amp;ssl=1" data-large-file="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/SN12-firmware-success.png?fit=500%2C420&amp;ssl=1" class="size-medium wp-image-497 alignleft" src="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/SN12-firmware-success.png?resize=300%2C252&#038;ssl=1" alt="" width="300" height="252" srcset="https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/SN12-firmware-success.png?resize=300%2C252&amp;ssl=1 300w, https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/SN12-firmware-success.png?resize=768%2C646&amp;ssl=1 768w, https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/SN12-firmware-success.png?resize=800%2C673&amp;ssl=1 800w, https://i0.wp.com/desantolo.com/wp-content/uploads/2017/01/SN12-firmware-success.png?w=822&amp;ssl=1 822w" sizes="auto, (max-width: 300px) 100vw, 300px" />You can repeat steps 4 to 5 and check smart data report and you should see the drive running the firmware you just flashed. In my case here you can see my firmware changed to SN12 on my HP hard drive.</p>
<p><strong>Good luck!</strong></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">492</post-id>	</item>
	</channel>
</rss>
