<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title></title>
    <link>http://www.cyber-tec.org</link>
    <atom:link href="http://www.cyber-tec.org/feed/" rel="self" type="application/rss+xml" />
    <description></description>
    <language>en-us</language>
    <pubDate>Tue, 04 Jan 2022 19:33:45 +0100</pubDate>
    <lastBuildDate>Tue, 04 Jan 2022 19:33:45 +0100</lastBuildDate>
    
    <item>
      <title>Using bhyve PCI passthrough on OmniOS</title>
      <link>http://www.cyber-tec.org/2019/05/29/using-bhyve-pci-passthrough-on-omnios/</link>
      <pubDate>Wed, 29 May 2019 15:36:00 +0200</pubDate>
      <author>drscream@cyber-tec.org (Thomas Merkel)</author>
      <guid>http://www.cyber-tec.org/2019/05/29/using-bhyve-pci-passthrough-on-omnios</guid>
      <description>&lt;p&gt;Some hardware is not supported in illumos yet, but luckily there is bhyve which
supports pci passthrough to any guest operating system. To continue with my
OmniOS desktop on “modern” hardware I would love wifi support, so why not using
a bhyve guest as router zone which provide the required drivers?&lt;/p&gt;

&lt;p&gt;First of all it requires an up-to-date OmniOS version which provide bhyve
support. Including the following IPS packages:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ pkg install system/bhyve
$ pkg install system/zones/brand/bhyve
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You can also found additional system requirements at the &lt;a href=&quot;https://omniosce.org/info/bhyve.html&quot;&gt;OmniOS bhyve
hypervisor page&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;simple-overview&quot;&gt;Simple overview&lt;/h3&gt;

&lt;pre&gt;
                                   __   _
                                 _(  )_( )_
                                (_  inet  _)
                                  (_) (__)
                                     |
                                     |
                                     |
           o-- global zone ----------|--------------------------o
           |        o-- bhyve zone --|----o                     |
           |        |                |    |                     |
pci-wifi --|- passthrough -&amp;gt; wifi-device  |                     |
           |        |         |           |                     |
           |        |       {NAT}         |                     |
           |        |         |           |                     |
           |        |        vnic &amp;lt;--&amp;gt; [ etherstub ] &amp;lt;---&amp;gt; vnic |
           |        o---------------------o                     |
           |                                                    |
           o----------------------------------------------------o
&lt;/pre&gt;

&lt;h3 id=&quot;global-zone-network-configuration&quot;&gt;Global zone network configuration&lt;/h3&gt;

&lt;p&gt;An etherstub is required which provides a virtual switch between the virtual
nic in the global zone and the one in the bhyve zone.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ dladm create-etherstub switch0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now it’s required to assign to virtual nics on this etherstub.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ dladm create-vnic -l switch0 uplink0
$ dladm create-vnic -l switch0 bhyve0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You can verify your configuration with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dladm show-vnic&lt;/code&gt;. It’s also required to
assign an IP address to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uplink0&lt;/code&gt; vnic which allow the communication into
the bhyve zone.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ ipadm create-addr -T static -a 10.1.1.2/30 uplink0/v4
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Choose whatever network you like, but because of the communication from only
two nics I choose a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/30&lt;/code&gt; network.&lt;/p&gt;

&lt;h3 id=&quot;configure-passthrough-device-via-ppt&quot;&gt;Configure passthrough device via ppt&lt;/h3&gt;

&lt;p&gt;Lookup the PCI information for the device you like to passthrough to your bhyve
zone. On this example I’m looking for the wireless network card.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ prtconf -dD
...
   pci8086,1311 (pciex8086,85) [Intel Corporation Centrino Adv....] (...)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Look for the correct &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pciex&lt;/code&gt; entry, I didn’t got it working with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pci&lt;/code&gt;
entry only. The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;prtpicl -v&lt;/code&gt; tool might also provide you additional information
about your PCI devices.&lt;/p&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pciex&lt;/code&gt; information need to be stored in the following two files:&lt;/p&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/ppt_aliases&lt;/code&gt; should look similar to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/driver_aliases&lt;/code&gt; file,
which will overwrite or assign the required &lt;strong&gt;ppt&lt;/strong&gt; driver on the device:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ppt &quot;pciex8086,85&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/ppt_matches&lt;/code&gt; file contains only the PCI information:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;pciex8086,85
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;An reboot is recommended to attach the driver on the device. A verification can
be done with the following commands:&lt;/p&gt;

&lt;p&gt;Look for the attached driver on the device:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ prtconf -dD | grep ppt
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Use pptadm to list dev and path:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ pptadm list -a
DEV        VENDOR DEVICE PATH
/dev/ppt0  8086   85     /pci@0,0/pci8086,1e12@1c,1/pci8086,1311@0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/dev/ppt0&lt;/code&gt; will be used later to passthrough it to the bhyve zone.&lt;/p&gt;

&lt;h3 id=&quot;use-zonecfg-to-configure-guest-zone&quot;&gt;Use zonecfg to configure guest zone&lt;/h3&gt;

&lt;p&gt;For the bhyve zone it’s required to create a dataset for the zonepath and a
zvol which contains the guest itself. My zone will be called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gw&lt;/code&gt; because it’s
the gateway to the internet.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;# Create the zvol
$ zfs create -V 10G rpool/bhyve0

# Create the zonepath
$ zfs create rpool/zones/gw

# Create some dataset for isos
$ zfs create rpool/iso
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Download the latest FreeBSD (or any operating system you like) ISO and store it
in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/rpool/iso&lt;/code&gt;. For me it looks like:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ cd /rpool/iso
$ wget -O freebsd.iso https://download.freebsd.org/...-bootonly.iso
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;To create a zone via zonecfg, I always recommend create one file which contains
the relevant data for zonecfg to work correctly, for example: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/tmp/gw.zone&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;create -b
set brand=bhyve
set zonepath=/zones/gw
add net
  set physical=bhyve0
  set global-nic=switch0
end
add device
  set match=/dev/zvol/rdsk/rpool/bhyve0
end
add device
  set match=/dev/ppt0
end

add fs
  set dir=/rpool/iso/freebsd.iso
  set special=/rpool/iso/freebsd.iso
  set type=lofs
  add options ro
  add options nodevices
end
add attr
  set name=cdrom
  set type=string
  set value=/rpool/iso/freebsd.iso
end

add attr
  set name=bootrom
  set type=string
  set value=BHYVE_RELEASE
end
add attr
  set name=bootdisk
  set type=string
  set value=rpool/bhyve0
end
add attr
  set name=extra
  set type=string
  set value=&quot;-S -s 8:0,passthru,/dev/ppt0&quot;
end
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Everything related to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;freebsd.iso&lt;/code&gt; can be removed later if you do not need
the install medium anymore. The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;BHYVE_RELEASE&lt;/code&gt; bootrom is required for FreeBSD
to work correctly, it might depends on your operating system which one you need
to use.&lt;/p&gt;

&lt;p&gt;The following two settings are required to get passthrough working correctly:&lt;/p&gt;

&lt;p&gt;This will add the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ppt0&lt;/code&gt; device into the zone and allow the required access.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;add device
  set match=/dev/ppt0
end
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Will add extra parameters to the bhyve command to passthrough &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/dev/ppt0&lt;/code&gt;
correctly to the PCI ID 8:0 in the guest. The PCI ID can be chosen by yourself
as long as it’s not used as an parameter already.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;add attr
  set name=extra
  set type=string
  set value=&quot;-S -s 8:0,passthru,/dev/ppt0&quot;
end
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-S&lt;/code&gt; is required to disallow the guest memory to be swapped. Otherwise
passthrough isn’t supported!&lt;/p&gt;

&lt;h3 id=&quot;finish-the-configuration-and-creating-the-zone&quot;&gt;Finish the configuration and creating the zone&lt;/h3&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ zonecfg -z gw -f /tmp/gw.zone
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;zoneadm&lt;/code&gt; to install and boot the zone:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ zoneadm -z gw install
$ zoneadm -z gw boot
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If something is going wrong and the zone doesn’t boot correctly check the bhyve
log file in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;zonepath/root/tmp/init.log&lt;/code&gt; (example: /zones/gw/root/tmp/init.log).&lt;/p&gt;

&lt;h3 id=&quot;configure-freebsd-bhyve-guest&quot;&gt;Configure FreeBSD bhyve guest&lt;/h3&gt;

&lt;p&gt;You should be able to log into the zone via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;zlogin&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ zlogin -C gw
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Follow the operating system installation based on you needs. For me it’s an
awesome FreeBSD installation which is straightforward anyway.&lt;/p&gt;

&lt;p&gt;After the installation some network configuration is required to support the
wireless card and setup NAT.&lt;/p&gt;

&lt;p&gt;Modify the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/boot/loader.conf&lt;/code&gt; to load the correct firmware:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;if_iwn_load=&quot;YES&quot;
iwn6000fw_load=&quot;YES&quot;
iwn6000g2afw_load=&quot;YES&quot;

wlan_wep=&quot;YES&quot;
wlan_ccmp_load=&quot;YES&quot;
wlan_tkip_load=&quot;YES&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Setup the network interfaces via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/rc.conf&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;# Check for the guest &quot;ethernet&quot; interface
ifconfig_vtnet0=&quot;inet 10.1.1.1 netmask 255.255.255.252&quot;

# Wireless network interface
wlans_iwn0=&quot;wlan0&quot;
ifconfig_wlan0=&quot;WPA up&quot;
create_args_wlan0=&quot;country DE&quot;

# Enable PF and IP forwarding
gateway_enable=&quot;YES&quot;
pf_enable=&quot;YES&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Add the NAT entry for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/pf.conf&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;nat on wlan0 from {10.1.1.0/30} to any -&amp;gt; (wlan0)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;To configure the wireless network (as required) I use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;wpa_supplicant&lt;/code&gt; and
store the information in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/wpa_supplicant.conf&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;wpa_passphrase &quot;SSID&quot; &quot;PWD&quot; &amp;gt;&amp;gt; /etc/wpa_supplicant.conf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;A reboot might be required to load the required firmware and configure the
network as described.&lt;/p&gt;

&lt;h3 id=&quot;test-network-configuration&quot;&gt;Test network configuration&lt;/h3&gt;

&lt;p&gt;The global zone should be able to ping the bhyve guest via:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ ping 10.1.1.1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If you haven’t configured a default gateway yet, it might be good time to do
that:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ route add default 10.1.1.1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After that you should be able to reach other networks and the always loved
internet via your awesome bhyve router :-)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Run Docker images on SmartOS</title>
      <link>http://www.cyber-tec.org/2018/02/11/run-docker-images-on-smartos/</link>
      <pubDate>Sun, 11 Feb 2018 12:46:00 +0100</pubDate>
      <author>drscream@cyber-tec.org (Thomas Merkel)</author>
      <guid>http://www.cyber-tec.org/2018/02/11/run-docker-images-on-smartos</guid>
      <description>&lt;p&gt;This feature is available on the &lt;a href=&quot;https://builds.smartos.skylime.net&quot;&gt;SkyLime SmartOS Version&lt;/a&gt; because we merged the changes from an &lt;a href=&quot;https://github.com/joyent/smartos-live/compare/gh-644&quot;&gt;existing issue&lt;/a&gt; into our branch to support the Docker Registry Version 2. This has been done because most of the existing Docker images only using version 2, which result in less usable images if you only support version 1. With this change no docker version 1 is supported any more, which is the biggest drawback if you’ve already version 1 images.&lt;/p&gt;

&lt;h3 id=&quot;usage&quot;&gt;Usage&lt;/h3&gt;

&lt;p&gt;Configure &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;imgadm&lt;/code&gt; to add docker hub sources:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ imgadm sources --add-docker-hub
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;imgadm avail&lt;/code&gt; doesn’t work against the Hub, so you’ll have to search the Hub manually. But you could import images simple via the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;imgadm import&lt;/code&gt; command:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ imgadm import busybox
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Show installed docker images:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ imgadm list --docker

UUID                                  REPOSITORY                             TAG  IMAGE_ID      CREATED
6357e9ab-0e79-5a0d-697b-b528d925026a  konradkleine/docker-registry-frontend  -    sha256:9976b  2017-10-11T23:50:25Z
5de66518-05f1-1ca2-34ee-6c8750a7a4bb  busybox                                -    sha256:0ffad  2017-11-03T22:39:17Z
1a99421d-7df8-23ec-1758-0b46b730aa1f  registry                               -    sha256:f792f  2017-12-01T22:15:41Z

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4 id=&quot;configure-personal-docker-registry&quot;&gt;Configure personal docker registry&lt;/h4&gt;

&lt;p&gt;Import the official image for the docker registry:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ imgadm import registry
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Install and activate docker registry with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vmadm&lt;/code&gt; command. For that store the following file on your SmartOS machine for example in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/opt/docker-registry.json&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-json highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;alias&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;docker-registry&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;hostname&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;docker-registry.dev.example.com&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;image_uuid&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;1a99421d-7df8-23ec-1758-0b46b730aa1f&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;nics&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;nic_tag&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;admin&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;primary&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;ips&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;172.22.175.100/25&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;gateways&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;172.22.175.1&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;brand&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;lx&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;docker&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;kernel_version&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;3.13.0&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;max_physical_memory&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1024&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;maintain_resolvers&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;resolvers&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;8.8.8.8&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;quota&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;internal_metadata&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;docker:cmd&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;[&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/bin/sh&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/entrypoint.sh&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/etc/docker/registry/config.yml&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;]&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Please modify the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ips&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gateways&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;resolvers&lt;/code&gt; field in the JSON manifest.&lt;/p&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker:cmd&lt;/code&gt; is based on the &lt;a href=&quot;https://github.com/docker/distribution-library-image/blob/master/Dockerfile&quot;&gt;Dockerfile&lt;/a&gt; from the repository. The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;image_uuid&lt;/code&gt; need to be set to the latest version you’ve downloaded via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;imgadm&lt;/code&gt;. If you need to verify it run:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ imgadm list --docker
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Create and run the container:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ vmadm create -f /opt/docker-registry.json
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;At the moment the &lt;a href=&quot;https://github.com/docker/distribution-library-image/blob/master/registry/config-example.yml&quot;&gt;configuration&lt;/a&gt; file described in the docker container show us that it will listen on port &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;5000&lt;/code&gt;.&lt;/p&gt;

&lt;h4 id=&quot;provide-web-interface-for-personal-docker-registry&quot;&gt;Provide web interface for personal docker registry&lt;/h4&gt;

&lt;p&gt;This could be easily done with an image provided on &lt;a href=&quot;https://hub.docker.com/r/konradkleine/docker-registry-frontend/&quot;&gt;Docker Hub&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ imgadm import konradkleine/docker-registry-frontend:v2
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Save the following manifest which describe the setup of the zone, for example in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/opt/registry-web.json&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-json highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;alias&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;docker-registry-web&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;hostname&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;docker-registry-web.dev.example.com&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;image_uuid&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;6357e9ab-0e79-5a0d-697b-b528d925026a&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;nics&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;nic_tag&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;admin&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;primary&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;ips&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;172.22.175.101/25&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;gateways&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;172.22.175.1&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;brand&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;lx&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;docker&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;kernel_version&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;3.13.0&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;max_physical_memory&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1024&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;maintain_resolvers&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;resolvers&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;8.8.8.8&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;quota&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;internal_metadata&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;docker:cmd&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;[&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/root/start-apache.sh&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;]&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;docker:tty&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;docker:attach_stdin&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;docker:attach_stdout&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;docker:attach_stderr&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;docker:open_stdin&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;docker:env&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;[ &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;ENV_DOCKER_REGISTRY_HOST=172.22.175.100&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;ENV_DOCKER_REGISTRY_PORT=5000&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;]&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;docker:noipmgmtd&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You should be able to access the web service via &lt;a href=&quot;http://172.22.175.101&quot;&gt;http://172.22.175.101&lt;/a&gt;, or whatever IP you’re using.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/uploads/2018/02/docker-registry-frontend.png&quot;&gt;&lt;img src=&quot;/uploads/2018/02/docker-registry-frontend.png&quot; alt=&quot;Docker Registry Frontend on SmartOS&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;tipps&quot;&gt;Tipps&lt;/h3&gt;

&lt;p&gt;Logfiles for docker images are stored in the zone so you need to look there:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ cat /zones/${UUID}/logs/stdio.log
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;You may like to login with a shell for some debugging:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ zlogin -i ${UUID} /native/usr/vm/sbin/dockerexec /bin/sh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>VMware vCenter 6.5 SSL ICA not send</title>
      <link>http://www.cyber-tec.org/2018/01/20/vmware-vcenter-6.5-ssl-ica-not-send/</link>
      <pubDate>Sat, 20 Jan 2018 15:08:00 +0100</pubDate>
      <author>drscream@cyber-tec.org (Thomas Merkel)</author>
      <guid>http://www.cyber-tec.org/2018/01/20/vmware-vcenter-6.5-ssl-ica-not-send</guid>
      <description>&lt;p&gt;It looks like there is still a bug in vCenter 6.5 to handle the machine SSL certificates correctly. Somehow the vCenter webserver does not send the intermediate certificates also if they are selected with the certificate manager &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/usr/lib/vmware-vmca/bin/certificate-manager&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This result in a broken trust path if you connect from any application or from your web browser to the vCenter web interface. You could verify it also with a simple &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;openssl&lt;/code&gt; command:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;echo | openssl s_client -showcerts -connect vcenter.example.com:443
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Mostly you could see it in these lines first lines&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;depth=0 OU = Domain Control Validated, OU = PositiveSSL, CN = vcenter.example.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 OU = Domain Control Validated, OU = PositiveSSL, CN = vcenter.example.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/OU=Domain Control Validated/OU=PositiveSSL/CN=vcenter.example.com
   i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I have tried to select the correct intermediate certificate chain in the machine SSL certificate and also in the root certificate or in VMware terms in the “signing certificate of the Machine SSL certificate”. Both without any success.&lt;/p&gt;

&lt;p&gt;The only thing that worked for me is installing the certificate with a valid chain again via the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vecs-cli&lt;/code&gt; tool.&lt;/p&gt;

&lt;p&gt;Check if the certificate chain are still missing with the following command. If it result in only one certificate I’m sure the chain isn’t send from the web server”&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ /usr/lib/vmware-vmafd/bin/vecs-cli entry getcert --store machine_ssl_cert --alias __MACHINE_CERT
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Save the machine certificate (server certificate) and the full chain (including all intermediate certificates) in one &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PEM&lt;/code&gt; file. The file content should be in the following order:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;machine certificate (server certificate) &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#1&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;intermediate certificate &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#2&lt;/code&gt; which signed the machine certificate &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#1&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;intermediate certificate &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#3&lt;/code&gt; which signed the intermediate certificate &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;#2&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also save the machine certificate key on the vCenter server for example both files are saved in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/tmp&lt;/code&gt;. Then remove the existing certificate:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ /usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store MACHINE_SSL_CERT --alias __MACHINE_CERT
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If you’ve saved both files on the server you could install the certificate and key again. Because &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/tmp/cert_with_chain.crt&lt;/code&gt; includes the full chain it will also send from the vCenter web server correctly:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ /usr/lib/vmware-vmafd/bin/vecs-cli entry create --store MACHINE_SSL_CERT --alias __MACHINE_CERT --cert /tmp/cert_with_chain.crt --key /tmp/cert.key
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Restart the virtual machine or restart the services of the vCenter!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Install ESXi 6.5 on MacMini 5,2</title>
      <link>http://www.cyber-tec.org/2018/01/18/install-esxi-6.5-on-macmini-5,2/</link>
      <pubDate>Thu, 18 Jan 2018 17:48:00 +0100</pubDate>
      <author>drscream@cyber-tec.org (Thomas Merkel)</author>
      <guid>http://www.cyber-tec.org/2018/01/18/install-esxi-6.5-on-macmini-5,2</guid>
      <description>&lt;p&gt;There are lot’s of websites around which describe how to install ESXi (VMware vSphere Free) on an MacMini. So this short article only cover some issues.&lt;/p&gt;

&lt;p&gt;The free version has some limitations which is mostly no problem for a personal small lab environment. You could download the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;iso&lt;/code&gt; image from &lt;a href=&quot;https://my.vmware.com&quot;&gt;my.vmware.com&lt;/a&gt; after you’ve created an account.&lt;/p&gt;

&lt;h3 id=&quot;installation-of-version-60&quot;&gt;Installation of version 6.0&lt;/h3&gt;

&lt;p&gt;I followed the article from &lt;a href=&quot;https://derflounder.wordpress.com/2015/03/24/setting-up-esxi-6-0-on-a-2012-mac-mini-server/&quot;&gt;derflounder.wordpress.com&lt;/a&gt; to install ESXi version 6 first. In an VMware forum somebody told that the version 6.5 isn’t installable on the MacMini because of some hardware detection issues.&lt;/p&gt;

&lt;p&gt;Especially if you run MacOS as your desktop system you like to create an bootable USB stick. Do not &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;dd&lt;/code&gt; the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;iso&lt;/code&gt; image to the USB stick, this will not work. There is an existing &lt;a href=&quot;https://github.com/cbednarski/vmware-usb-osx&quot;&gt;Makefile&lt;/a&gt; on &lt;a href=&quot;https://github.com/cbednarski/vmware-usb-osx&quot;&gt;GitHub&lt;/a&gt; which provide you with most information to generate one. Mostly it’s a simple copy &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;iso&lt;/code&gt; content to USB stick and add an additional &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;syslinux.cfg&lt;/code&gt; file.&lt;/p&gt;

&lt;h3 id=&quot;upgrade-to-version-65&quot;&gt;Upgrade to version 6.5&lt;/h3&gt;

&lt;p&gt;Most people recommended an update with the offline bundle but if you have only a free license the offline bundle couldn’t be downloaded. So I tried to update online with an remote shell on the ESXi, which works perfect.&lt;/p&gt;

&lt;p&gt;Enable SSH access to the ESXi by using the troubleshooting menu or web interface:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/uploads/2018/01/esxi-ssh-enabled.png&quot;&gt;&lt;img src=&quot;/uploads/2018/01/esxi-ssh-enabled.png&quot; alt=&quot;ESXi enable SSH access&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connect with your user and password via ssh to the server:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ ssh root@hostname
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The upgrade will be performed via http(s) so we need to allow this outgoing connection:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ esxcli network firewall ruleset set -e true -r httpClient
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Check for the latest version available to run the upgrade:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ esxcli software sources profile list \
  -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml |\
  grep -i ESXi-6.5
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Upgrade to specified version:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ esxcli software profile update \
  -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml \
  -p ESXi-6.5.0-4564106-standard
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Reboot the hypervisor and check the new installed version:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ vmware -lv
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Install new bash version on MacOS without homebrew</title>
      <link>http://www.cyber-tec.org/2018/01/11/install-new-bash-version-on-macos-without-homebrew/</link>
      <pubDate>Thu, 11 Jan 2018 14:12:00 +0100</pubDate>
      <author>drscream@cyber-tec.org (Thomas Merkel)</author>
      <guid>http://www.cyber-tec.org/2018/01/11/install-new-bash-version-on-macos-without-homebrew</guid>
      <description>&lt;p&gt;Also the latest MacOS (High Sierra) provide an outdated bash version (from 2007) I would like to install the latest version without &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;homebrew&lt;/code&gt; or similar tools!&lt;/p&gt;

&lt;p&gt;I would keep the system as minimal as possible because it will be used to build software. There should be no big difference from a regular MacOS installation.&lt;/p&gt;

&lt;p&gt;Download the latest &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;bash&lt;/code&gt; source from &lt;a href=&quot;http://ftp.gnu.org/gnu/bash/?C=M;O=D&quot;&gt;GNU.org&lt;/a&gt;, compile and install it!&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ cd /tmp/
$ curl -O http://ftp.gnu.org/gnu/bash/bash-4.4.12.tar.gz
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Extract it, your version may be newer!&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ tar xzf bash-4.4.12.tar.gz
$ cd bash-4.4
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;All not system defaults are installed in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/usr/local&lt;/code&gt; in my case.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ ./configure --prefix=/usr/local
$ make
$ sudo make install
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Add the new shell to the list of legit shells:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ sudo &quot;echo /usr/local/bin/bash &amp;gt;&amp;gt; /private/etc/shells&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Change the default shell for the user:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ chsh -s /usr/local/bin/bash
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Update FreeBSD-current</title>
      <link>http://www.cyber-tec.org/2017/07/07/update-freebsd-current/</link>
      <pubDate>Fri, 07 Jul 2017 09:41:00 +0200</pubDate>
      <author>drscream@cyber-tec.org (Thomas Merkel)</author>
      <guid>http://www.cyber-tec.org/2017/07/07/update-freebsd-current</guid>
      <description>&lt;p&gt;It may sound a little bit strange but mostly I couldn’t remember all the commands to update my &lt;strong&gt;FreeBSD-CURRENT&lt;/strong&gt; installation. For that I share the commands I use in a blog post.&lt;/p&gt;

&lt;p&gt;First of all get the newest base and kernel source via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;git&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;subversion&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; /usr/src
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;svn update
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We’re staying in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/usr/src&lt;/code&gt; folder. And building the new world and kernel:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;make &lt;span class=&quot;nt&quot;&gt;-j&lt;/span&gt; &lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;sysctl &lt;span class=&quot;nt&quot;&gt;-n&lt;/span&gt; hw.ncpu&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt; buildworld

&lt;span class=&quot;c&quot;&gt;# Add &quot;KERNCONF=yourkernelname&quot; for a custom kernel&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;make &lt;span class=&quot;nt&quot;&gt;-j&lt;/span&gt; &lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;sysctl &lt;span class=&quot;nt&quot;&gt;-n&lt;/span&gt; hw.ncpu&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt; buildkernel
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Install your kernel and reboot your system. It’s recommended to go to single user mode, but not required.&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;make installkernel
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;reboot
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After the reboot we should merge the new and old configuration, for that reason we create a merge environment.&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; /usr/src
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;mergemaster &lt;span class=&quot;nt&quot;&gt;-p&lt;/span&gt;                          
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Install the new world and merge configuration files.&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;make installworld
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;mergemaster &lt;span class=&quot;nt&quot;&gt;-iUF&lt;/span&gt;                         
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Than we should remove old files and libs which are no longer required.&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;yes&lt;/span&gt; | make delete-old
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;yes&lt;/span&gt; | make delete-old-libs
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; /usr/obj &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; chflags &lt;span class=&quot;nt&quot;&gt;-R&lt;/span&gt; noschg &lt;span class=&quot;k&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;rm&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-rf&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;That’s it and reboot. Maybe you need to update and check your userland files.&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;reboot
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

</description>
    </item>
    
    <item>
      <title>Sign pkgsrc packages manually</title>
      <link>http://www.cyber-tec.org/2017/01/02/sign-pkgsrc-packages-manually/</link>
      <pubDate>Mon, 02 Jan 2017 11:00:00 +0100</pubDate>
      <author>drscream@cyber-tec.org (Thomas Merkel)</author>
      <guid>http://www.cyber-tec.org/2017/01/02/sign-pkgsrc-packages-manually</guid>
      <description>&lt;p&gt;Starting a post with “this is only a workaround and you should only use it if you sure what you’re doing” is maybe not the best start but anyway: This is only a workaround if you missed to sign your package or would like todo it for your home environment!&lt;/p&gt;

&lt;p&gt;Please have a look at &lt;a href=&quot;https://github.com/joyent/pkgbuild&quot;&gt;pkgbuild&lt;/a&gt; from Jonathan which provides most features to have a nice build environment for &lt;a href=&quot;https://www.pkgsrc.org/&quot;&gt;pkgsrc&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To sign a package manually and not during the build process you could use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pkg_admin&lt;/code&gt; tool. The tool provides an argument &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gpg-sign-package&lt;/code&gt; which allow you to sign packages with GPG based on your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mk.conf&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;It’s required to have your GPG environment ready and working. So you need an public/private key pair in your trust store which you could use for signing the package. It’s not required to have &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gpg-agent&lt;/code&gt; or anything running but if not you need so insert your password on each package you like to sign.&lt;/p&gt;

&lt;p&gt;The following variables need to be configured in your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mk.conf&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;# Set your gpg key ID to the following variable&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;GPG_SIGN_AS&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;your_gpg_id
&lt;span class=&quot;c&quot;&gt;# Set the path to the GPG binary&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;GPG&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/opt/pkg/bin/gpg
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After this is done you could use the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pkg_admin&lt;/code&gt; command to sign you package:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ pkg_admin gpg-sign-package unsigned/vim-nox-8.0.0086.tgz signed/vim-nox-8.0.0086.tgz
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Because I’m a little bit lazy and only need to variables in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mk.conf&lt;/code&gt; I’ve created the following script which use a temporary &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mk.conf&lt;/code&gt; file for signing:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;#!/usr/bin/env bash&lt;/span&gt;

&lt;span class=&quot;nv&quot;&gt;GPG_SIGN_AS&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;your_gpg_id
&lt;span class=&quot;nv&quot;&gt;MK_CONF&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;mktemp&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-q&lt;/span&gt; /tmp/mk-conf.XXXXXXXX&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;cat&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;EOF&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt; &amp;gt;&amp;gt; &lt;/span&gt;&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;MK_CONF&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;
GPG_SIGN_AS=&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;GPG_SIGN_AS&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;
GPG=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;which gpg&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;EOF

&lt;/span&gt;pkg_admin &lt;span class=&quot;nt&quot;&gt;-C&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;MK_CONF&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt; gpg-sign-package &lt;span class=&quot;nv&quot;&gt;$@&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;rm&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;MK_CONF&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>SmartOS add delegate dataset later to zone</title>
      <link>http://www.cyber-tec.org/2016/12/21/smartos-add-delegate-dataset-later-to-zone/</link>
      <pubDate>Wed, 21 Dec 2016 11:46:00 +0100</pubDate>
      <author>drscream@cyber-tec.org (Thomas Merkel)</author>
      <guid>http://www.cyber-tec.org/2016/12/21/smartos-add-delegate-dataset-later-to-zone</guid>
      <description>&lt;p&gt;Maybe you missed to add a delegate dataset to one of your SmartOS or LX-branded zone and would like to add it later. This is possible with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;zonecfg&lt;/code&gt;, but you’re be warned this is only a workaround and not based on the official SmartOS documentation.&lt;/p&gt;

&lt;p&gt;First find out your zone UUID and your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;zfs_filesystem&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;vmadm list
&lt;span class=&quot;c&quot;&gt;# If your zone UUID is df779413-9943-481d-beb8-ba1a376afa2e&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;vmadm get df779413-9943-481d-beb8-ba1a376afa2e | json zfs_filesystem
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I would recommend stop your zone before you create the dataset and modify the zone metadata:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;vmadm stop df779413-9943-481d-beb8-ba1a376afa2e
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Create your dataset / file system in the global zone. It should be called &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;data&lt;/code&gt; and based on the already existing dataset:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;zfs create zones/df779413-9943-481d-beb8-ba1a376afa2e/data
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Modify the zone metadata with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;zonecfg&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;zonecfg &lt;span class=&quot;nt&quot;&gt;-z&lt;/span&gt; df779413-9943-481d-beb8-ba1a376afa2e
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The commands will add the dataset which you’ve created earlier:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;zonecfg:df779413-...&amp;gt; add dataset
zonecfg:df779413-...:dataset&amp;gt; set name=zones/df779413-9943-481d-beb8-ba1a376afa2e/data
zonecfg:df779413-...:dataset&amp;gt; end
zonecfg:df779413-...&amp;gt; verify
zonecfg:df779413-...&amp;gt; exit
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After that you could start your zone again and should be able to see the new delegate dataset. You could check this also via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vmadm&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;vmadm get df779413-9943-481d-beb8-ba1a376afa2e | json datasets
&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;
  &lt;span class=&quot;s2&quot;&gt;&quot;zones/df779413-9943-481d-beb8-ba1a376afa2e/data&quot;&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Memory and CPU usage tools on Illumos</title>
      <link>http://www.cyber-tec.org/2016/03/03/memory-and-cpu-usage-tools-on-illumos/</link>
      <pubDate>Thu, 03 Mar 2016 11:26:00 +0100</pubDate>
      <author>drscream@cyber-tec.org (Thomas Merkel)</author>
      <guid>http://www.cyber-tec.org/2016/03/03/memory-and-cpu-usage-tools-on-illumos</guid>
      <description>&lt;p&gt;This is only a small overview of memory and CPU usage tools on Illumos. Mostly I forgot the commands so it’s like a personal reference page :-)&lt;/p&gt;

&lt;h3 id=&quot;total-physical-memory&quot;&gt;Total physical memory&lt;/h3&gt;

&lt;p&gt;Show DIMM and hardware overview via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;prtdiag&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;prtdiag -v
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Show max physical memory via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;prtconf&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;prtconf | grep Memory
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Create an overview 10 times every 5 seconds:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;vmstat 5 10
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;memory-usage-by-process&quot;&gt;Memory usage by process&lt;/h3&gt;

&lt;p&gt;Show percentage of memory usage by process, you could use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sort&lt;/code&gt; to sorting the output:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;ps -A -o pmem -o pcpu -o args
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;overall-cpu-usage&quot;&gt;Overall CPU usage&lt;/h3&gt;

&lt;p&gt;Two processor reports with five seconds interval:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;mpstat 5 2
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Important fields are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;usr&lt;/code&gt;: user time in percent&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sys&lt;/code&gt;: system time in percent&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;idl&lt;/code&gt;: idle time in percent&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;cpu-usage-by-process&quot;&gt;CPU usage by process&lt;/h3&gt;

&lt;p&gt;Use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;prstat&lt;/code&gt; which is more or less similar to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;top&lt;/code&gt; on Linux. There are different sorting and command line options available.&lt;/p&gt;

&lt;p&gt;Sort by cpu usage (default):&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;prstat 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Sort by memory usage:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;prstat -s rss
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Sort by virtual memory usage:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;prstat -s size
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Sort by process execution time:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;prstat -s time
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Find top five processes:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;prstat -n 5
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Also print process numbers for each user:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;prstat -a
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Follow a particular process id:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;prstat -p &amp;lt;pid&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Follow threads of a particular process id:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;prstat -L -p &amp;lt;pid&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Create ISO image from folder in MacOSX</title>
      <link>http://www.cyber-tec.org/2016/03/01/create-iso-image-from-folder-in-macosx/</link>
      <pubDate>Tue, 01 Mar 2016 21:28:00 +0100</pubDate>
      <author>drscream@cyber-tec.org (Thomas Merkel)</author>
      <guid>http://www.cyber-tec.org/2016/03/01/create-iso-image-from-folder-in-macosx</guid>
      <description>&lt;p&gt;You maybe run into an problem that your remote server has no network connection because of some drivers are missing? And the only thing that works is to use IPMI and remote virtual devices which contains your driver?&lt;/p&gt;

&lt;p&gt;For that I created an folder which contains the drivers, packages and create an ISO image with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;hdiutil&lt;/code&gt;.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;hdiutil makehybrid -o ~/image.iso ~/your/folder -iso -joliet
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The tool creates an ISO file in your home, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;image.iso&lt;/code&gt;. You could burn that to an CD or you could use it with your IPMI tool and mount it remotely.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
