ZENworks at Micro Focus Universe in Vienna, Austria

Gil Cattelain

Micro Focus transforms enterprises with ZENworks – Unified Endpoint Management solutions that bridge the gap between existing and emerging technologies. Innovate faster and carry less risk, even as you adopt BYOD and upgrade your infrastructure. Micro Focus Universe is invaluable to all roles—enabling attendees to gain the insight and assistance necessary to run a secure …

+read more

The post ZENworks at Micro Focus Universe in Vienna, Austria appeared first on Cool Solutions. Gil Cattelain


  • No Related Posts

Notification of important change for #ZENworks2020 and Request for your Assistance!

With the release of ZENworks 2017 Update 4 behind us, we have already started working on our next release, ZENworks 2020, planned for later this year. ZENworks 2020 has a host of new features which we believe would make ZENworks even better. However, today I’ll just detail an important change we are planning to bring …

+read more

The post Notification of important change for #ZENworks2020 and Request for your Assistance! appeared first on Cool Solutions. gvikram


  • No Related Posts

Unified Endpoint Management with the Latest Release of ZENworks 2017

Gil Cattelain

As an organization grows, the often-fragmented endpoint management that worked in a smaller company starts to present a significant risk. Scaling requires a user-centric approach with a focus on security and self-service access to your organization’s most necessary applications. Cloud-based apps that offer universal access from any device are flexible, but legacy support is equally …

+read more

The post Unified Endpoint Management with the Latest Release of ZENworks 2017 appeared first on Cool Solutions. Gil Cattelain


  • No Related Posts

Hyperledger Sawtooth Blockchain Performance Metrics with Grafana

This blog post shows how to setup Grafana to display Sawtooth and system statistics.


Grafana is a useful tool for displaying Sawtooth performance statistics. Hyperledger Sawtooth optionally generates performance metrics from the validator and REST API components for a each node. Sawtooth sends the metrics to InfluxDB, a time series database that is optimized for fast access to time series data. Telegraf, a metrics reporting agent, gathers supplemental system information from the Linux kernel and also sends it to InfluxDB. Finally, Grafana reads from the InfluxDB and displays an assortment of statistics on several graphical charts in your web browser. Figure 1 illustrates the flow of data.

Figure 1. Metrics gathering data flow.

Grafana can display many validator, REST API, and system statistics. The following lists all supported metrics:

Sawtooth Validator Metrics

  • Block number
  • Committed transactions
  • Blocks published
  • Blocks considered
  • Chain head moved to fork
  • Pending batchesnumber of batches waiting to be processed
  • Batches rejected (back-pressure)number of rejected batches due to back-pressure tests
  • Transaction execution rate, in batches per second
  • Transactions in process
  • Transaction processing duration (99th percentile), in milliseconds
  • Valid transaction response rate
  • Invalid transaction response rate
  • Internal error response rate
  • Message round trip times, by message type (95th percentile), in seconds
  • Messages sent, per second, by message type
  • Message received, per second, by message type

Sawtooth REST API Metrics

  • REST API validator response time (75th percentile), in seconds
  • REST API batch submission rate, in batches per second

System Metrics

  • User and system host CPU usage
  • Disk I/O, in kilobytes per second
  • I/O wait percentage
  • RAM usage, in megabytes
  • Context switches
  • Read and write I/O ops
  • Thread pool task run time and task queue times
  • Executing thread pool workers in use
  • Dispatcher server thread queue size

The screenshot in Figure 2 gives you an idea of the metrics that Grafana can show.

Figure 2. Example Grafana graph display.

Setting Up InfluxDB and Grafana

By default, Hyperledger Sawtooth does not gather performance metrics. The rest of this post explains the steps for enabling this feature. The overall order of steps is listed below with in-depth explanations of each step following.

  1. Have the required prerequisites: Sawtooth blockchain software is running on Ubuntu and Docker CE software is installed
  2. Installing and configuring InfluxDB to store performance metrics
  3. Building and installing Grafana
  4. Configuring Grafana to display the performance metrics
  5. Configuring Sawtooth to generate performance metrics
  6. Installing and configuring Telegraf to collect metrics

1. Prerequisites: Sawtooth and Docker

Install Hyperledger Sawtooth software and Docker containers. I recommend Sawtooth 1.1 on Ubuntu 16 LTS (Xenial). Sawtooth installation instructions are here: https://sawtooth.hyperledger.org/docs/core/releases/latest/app_developers_guide/ubuntu.html

The Sawtooth blockchain software must be up and running before you proceed.

Docker CE installation instructions are here: https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-using-the-repository

ProTip: These instructions assume a Sawtooth node is running directly on Ubuntu, not in Docker containers. To use Grafana with Sawtooth on Docker containers, additional steps (not described here) are required to allow the Sawtooth validator and REST API containers to communicate with the InfluxDB daemon at TCP port 8086.

2. Installing and Configuring the InfluxDB Container

InfluxDB stores the Sawtooth metrics used in the analysis and graphing. Listing 1 shows the commands to download the InfluxDB Docker container, create a database directory, start the Docker container, and verify that it is running.

sudo docker pull influxdbsudo mkdir -p /var/lib/influx-datasudo docker run -d -p 8086:8086  -v /var/lib/influx-data:/var/lib/influxdb  -e INFLUXDB_DB=metrics  -e INFLUXDB_HTTP_AUTH_ENABLED=true  -e INFLUXDB_ADMIN_USER="admin"  -e INFLUXDB_ADMIN_PASSWORD="pwadmin"  -e INFLUXDB_USER="lrdata"  -e INFLUXDB_USER_PASSWORD="pwlrdata"  --name sawtooth-stats-influxdb influxdbsudo docker ps --filter name=sawtooth-stats-influxdb

Listing 1. Commands to set up InfluxDB.

ProTip: You can change the sample passwords here, pwadmin and pwlrdata, to anything you like. If you do, you must use your passwords in all the steps below. Avoid or escape special characters in your password such as “,@!$” or you will not be able to connect to InfluxDB.

3. Building and Installing the Grafana Container

Grafana displays the Sawtooth metrics in a web browser. Listing 2 shows the commands to download the Sawtooth repository, build the Grafana Docker container, download the InfluxDB Docker container, create a database directory, start the Docker container, start the Grafana container, and verify that everything is running.

git clone https://github.com/hyperledger/sawtooth-corecd sawtooth-core/dockersudo docker build . -f grafana/sawtooth-stats-grafana  -t sawtooth-stats-grafanasudo docker run -d -p 3000:3000 --name sawtooth-stats-grafana  sawtooth-stats-grafanasudo docker ps --filter name=sawtooth-stats-grafana

Listing 2. Commands to set up Grafana.

Building the Grafana Docker container takes several steps and downloads several packages into the container. It ends with “successfully built” and “successfully tagged” messages.

4. Configuring Grafana

Configure Grafana from your web browser. Navigate to http://localhost:3000/ (replace “localhost” with the hostname or IP address of the system where you started the Grafana container in the previous step).

  1. Login as user “admin”, password “admin”
  2. (Optional step) If you wish, change the Grafana webpage “admin” password by clicking the orange spiral icon on the top left, selecting “admin” in the pull-down menu, click on “Profile” and “Change Password”, then enter the old password, (admin) and your new password and, finally, click on “Change Password”. This Grafana password is not related to the InfluxDB passwords used in a previous step.
  3. Click the orange spiral icon again on the top left, then click on “Data Sources” in the drop-down menu.
  4. Click on the “metrics” data source.
  5. Under “URL”, change “influxdb” in the URL to the hostname or IP address where you are running InfluxDB. (Use the same hostname that you used for Grafana web page, since the Grafana and InfluxDB containers run on the same host.) This is where Grafana accesses the InfluxDB
  6. Under “Access”, change “proxy” to “direct” (unless you are going through a proxy to access the remote host running InfluxDB)
  7. Under “InfluxDB Details”, set “User” to “lrdata” and “Password” to “pwlrdata”
  8. Click “Save & Test” to save the configuration in the Grafana container
  9. If the test succeeds, the green messages “Data source updated” and “Data source is working” will appear. Figure 3 illustrates the green messages. Otherwise, you get a red error message that you must fix before proceeding. An error at this point is usually a network problem, such as a firewall or proxy configuration or a wrong hostname or IP address.

Figure 3. Test success messages in Grafana.

For the older Sawtooth 1.0 release, follow these additional steps to add the Sawtooth 1.0 dashboard to Grafana (skip these steps for Sawtooth 1.1):

  1. In your terminal, copy the file sawtooth_performance.json from the sawtooth-core repository you cloned earlier to your current directory by issuing the commands in Listing 3.
$ cp sawtooth-core/docker/grafana/dashboards/sawtooth_performance.json .

Or download this file:

$ wget 


Listing 3. Commands for getting the Sawtooth 1.0 dashboard file.

  1. In your web browser, click the orange spiral icon again on the top left, select “Dashboards” in the drop-down menu, then click on “Import” and “Upload .json file”.
  2. Navigate to the directory where you saved sawtooth_performance.json.
  3. Select “metrics” in the drop-down menu and click on “Import”.

5. Configuring Sawtooth

The Sawtooth validator and REST API components each report their own set of metrics, so you must configure the login credentials and destination for InfluxDB. In your terminal window, run the shell commands in Listing 4 to create or update the Sawtooth configuration files validator.toml and rest_api.toml:

for i in /etc/sawtooth/validator.toml /etc/sawtooth/rest_api.tomldo [[ -f $i ]] || sudo -u sawtooth cp $i.example $i echo 'opentsdb_url = "http://localhost:8086"'  | sudo -u sawtooth tee -a $i echo 'opentsdb_db = "metrics"'  | sudo -u sawtooth tee -a $i echo 'opentsdb_username = "lrdata"'  | sudo -u sawtooth tee -a $i echo 'opentsdb_password = "pwlrdata"'  | sudo -u sawtooth tee -a $idone

Listing 4. Commands to create or update Sawooth configuration.

After verifying that the files validator.toml and rest_api.toml each have the four new opentsdb_* configuration lines, restart the sawtooth-validator and sawtooth-rest-api using the commands in Listing 5

sudo -vsudo -u sawtooth pkill sawtooth-rest-apisudo -u sawtooth pkill sawtooth-validatorsudo -u sawtooth sawtooth-validator -vvv &sudo -u sawtooth sawtooth-rest-api -vv &

Listing 5. Manual restart commands.

Add any command line parameters you may use to the above example.

If you use systemctl, Listing 6 shows the commands needed to restart.:

systemctl restart sawtooth-rest-apisystemctl restart sawtooth-validator

Listing 6. Systemctl restart commands.

Protip: The InfluxDB daemon, influxd, listens to TCP port 8086, so this port must be accessible over the local network from the validator and REST API components. By default, influxd only listens to localhost.

6. Installing and Configuring Telegraf

Telegraf, InfluxDB’s metrics reporting agent, gathers metrics information from the Linux kernel to supplement the metrics information sent from Sawtooth. Telegraf needs the login credentials and destination for InfluxDB. Install Telegraf use the commands in Listing 7.

curl -sL https://repos.influxdata.com/influxdb.key  | sudo apt-key add -sudo apt-add-repository  "deb https://repos.influxdata.com/ubuntu xenial stable"sudo apt-get updatesudo apt-get install telegraf

Listing 7. Commands for installing Telegraf.

The commands in Listing 8 set up the Telegraf configuration file correctly.

sudo echo '[[outputs.influxdb]]'  >/etc/telegraf/telegraf.d/sawtooth.confsudo echo 'urls = ["http://localhost:8086"]'  >>/etc/telegraf/telegraf.d/sawtooth.confsudo echo 'database = "metrics"'  >>/etc/telegraf/telegraf.d/sawtooth.confsudo echo 'username = "lrdata"'  >>/etc/telegraf/telegraf.d/sawtooth.confsudo echo 'password = "pwlrdata"'  >>/etc/telegraf/telegraf.d/sawtooth.conf

Listing 8. Create the Telegraf configuration file.

Finally restart telegraf with the command in Listing 9.

sudo systemctl restart telegraf

Listing 9. Restart Telegraf.

Try it out!

After completing all the previous steps, Sawtooth and system statics should appear in the Grafana dashboard webpage. To see them, click the orange spiral icon on the top left, then click on “Dashboards” in the drop-down menu, then click on “Home” next to the spiral icon, and then click on “dashboard”. This is the dashboard for Grafana.

Generate some transactions so you can see activity on the Grafana dashboard. For example, run the intkey workload generator by issuing the Listing 10 commands in a terminal window to create test transactions at the rate of 1 batch per second.

intkey-tp-python -v &intkey workload --rate 1 -d 5

Listing 10. Start the workload generator to get some statistics.

I recommend changing the time interval in the dashboard from 24 hours to something like 30 minutes so you can see new statistics. Do that by clicking on the clock icon in the upper right of the dashboard. Then click on the refresh icon, ♻, to update the page. Individual graphs can be enlarged or shrunk by moving the dotted triangle tab in the lower right of each graph.

Troubleshooting Tips

    • If the Grafana webpage is not accessible, the Grafana container is not running or is not accessible over the network. To verify that it is running and start it:

$ docker ps --filter name-sawtooth-stats-grafana$ docker start sawtooth-stats-grafana

    • If the container is running, the docker host may not be accessible on the network
    • If no system statistics appear at the bottom of the dashboard, either Telegraf is not configured or the InfluxDB container is not running or is not accessible over the network. To verify that InfluxDB is running and start it:

$ docker ps --filter name-sawtooth-stats-influxdb$ docker start sawtooth-stats-influxdb

    • Check that the InfluxDB server, influxd, is reachable from the local network. Use the InfluxDB client (package influxdb-client) or curl or both to test. The InfluxDB client command should show a “Connected to” message and the curl command should show a “204 No Content” message.

$ influx -username lrdata -password pwlrdata -port 8086  -host localhost$ curl -sl -I localhost:8086/ping

  • Check that the interval range (shown next to the clock on the upper right of the dashboard) is low enough (such as 1 hour).
  • Check that the validator and REST API .toml files and Telegraf sawtooth.conf files have the opentsdb_* configuration lines. Make sure that the passwords and URLs are correct and that they match each other and the passwords set when you started the InfluxDB container.
  • Click the refresh icon, ♻, on the upper right of the dashboard.

Further Information


  • No Related Posts

Empowering Security Policies with Rules Packages in ZENworks Mobile Workspace

This document provides information on how to configure and create contextual rules to modify access rights and security policies, on the fly, based on the mobile context and the user’s metadata in ZENworks Mobile Workspace.

+read more

The post Empowering Security Policies with Rules Packages in ZENworks Mobile Workspace appeared first on Cool Solutions. Subhashini Tatipamula


  • No Related Posts

ZENworks 2017 Update 4 – Now Available

Gil Cattelain

Micro Focus is pleased to announce the availability of ZENworks 2017 Update 4, which includes these new features and enhancements. Please note: Please register and attend “What’s new in ZENworks 2017 Update 4” webinar to be held on Wed Jan 30, 2019. Please click here to register. Also register to attend “Android Enterprise with ZENworks …

+read more

The post ZENworks 2017 Update 4 – Now Available appeared first on Cool Solutions. Gil Cattelain


  • No Related Posts

Upcoming #ZENworks Community Technical Webinars

Vikram Derebail

Hello ZENworks Community! Wishing you all a very Happy New Year! I’m pleased to announce our next schedule for ZENworks Community Webinars. Though these are the initial set of webinars for this year, we will be announcing more webinars in coming weeks.

+read more

The post Upcoming #ZENworks Community Technical Webinars appeared first on Cool Solutions. Vikram Derebail


  • No Related Posts

Show Customers how Dell EMC PowerEdge Servers Help Save Time and Effort

A Principled Technologies* study found that Dell EMC’s OpenManage Mobile app and iDRAC Quick Sync 2 technology enables IT data center administrators (ITDMs) to spend less time performing routine server managementtasks.

ITDMs can connect to the latest Dell EMC PowerEdge servers via the OpenManage Mobile app on any Android or iOS device, and through the app, ITDMs can quickly perform routine, essential server management tasks.

The study found that performing a basic set-up of a new PowerEdge server and viewing server health and inventory via the app took less time and fewer steps than it would with the traditional, manual methods using the LCD front display screen or a crash cart. ITDMs experienced incredible time savings:

  • Up to 77% less time to view server inventory, firmware, and network details;
  • Up to 145 fewer steps to set up IP address and network settings;
  • Up to 28% less time to view system events and Lifecycle Controller logs.

Featuring the latest Intel® Xeon® Scalable processors, PowerEdge servers are built to enable IT Transformation – with scalable business architecture, intelligent automation, and integrated security provided as standard.

Promote these fantastic benefits and help customers improve productivity! Explore the research findings now:

> Download the report

>Watch the OpenManage video

* Principled Technologies report, commissioned by Dell EMC, ‘Save server management time and effort for IT staff’, July 2017.

** Not available in all countries – please contact your account manager for more information.


  • No Related Posts

Montrez aux clients comment les serveurs Dell EMC PowerEdge leur font gagner du temps et leur simplifient la vie

Une étude de Principled Technologies* a montré que l’application OpenManage Mobile de Dell EMC et la technologie iDRAC Quick Sync 2 permettent aux administrateurs de datacenter IT (ITDM) de passer moins de temps sur les tâches de gestion habituelle des serveurs .

Les ITDM peuvent se connecter aux derniers serveurs PowerEdge de Dell EMC via l’application OpenManage Mobile sur n’importe quel appareil Android ou iOS. Sur l’application, les ITDM peuvent effectuer rapidement les tâches habituelles et essentielles de gestion des serveurs.

Selon l’étude, effectuer une configuration basique d’un nouveau serveur PowerEdge et afficher l’état et l’inventaire du serveur via l’application prend moins de temps et nécessite moins d’étapes qu’avec les méthodes manuelles traditionnelles à l’aide de l’écran LCD à l’avant ou un chariot d’urgence. Les ITDM ont réalisé des gains de temps considérables :

  • Jusqu’à 77 % de temps en moins pour afficher les détails sur l’inventaire des serveurs, les microprogrammes et le réseau ;
  • Jusqu’à 145 étapes en moins pour définir l’adresse IP et les paramètres réseau ;
  • Jusqu’à 28 % de temps en moins pour afficher les événements système et les logs Lifecycle Controller.

Dotés des derniers processeurs évolutifs Intel® Xeon®, les serveurs PowerEdge sont conçus pour favoriser la transformation de l’IT : architecture métier évolutive, automatisation intelligente et sécurité intégrée sont fournies par défaut.

Tirez parti de ces avantages considérables et aidez les clients à améliorer leur productivité ! Passez en revue les conclusions de l’étude :

> Télécharger le rapport

>Regardez la vidéo OpenManage

* Rapport Principled Technologies, réalisé à la demande de Dell EMC, « Save server management time and effort for IT staff », juillet 2017.

** Pas disponible dans tous les pays. Contactez votre responsable de compte pour plus d’informations.


  • No Related Posts

7017277: Basic Steps for the Micro Focus Desktop Containers Application Packaging Process (formerly ZAV)

Build a workstation with the OS compatible with the application tobe captured.

  • On this an “OS only” workstation, and only used for theapplication capture and building process.
  • Install all critical Windows Updates to the device (rebootingand checking until 0 critical updates are to be applied).
  • Log in as the local administrator. (Enable local Administrator if disabled)
  • Disable services that might contact network resources or (re)start processes after reboot:

Windows Updates

SSDP Discovery

Background Intelligence

Windows Firewall (all properties)

Windows Defender AntiVirus (if applicable) – gpedit.msc

Comp Config > Admin Temp > Win Components > Windows Defender AntiVirus > Turn off Windows Defender=Enabled

OneDrive (if applicable) – gpedit.msc

Comp Config > Admin Temp > Win Components > OneDrive > Prevent the usage of OneDrive for file storage = Enabled

Comp Config > Admin Temp > Win Components > OneDrive > Prevent the usage of OneDrive for the file storage on Windows 8.1 = Enabled

Notifications (if applicable) – Settings > System > Notifications &Actions > Notifications Section = Disable

Skype (if applicable) –
Open Skype > Tools > Options > uncheck option to start Skpewhen windows starts > Save

Remove unnecessary files (these change between OS types);


    C:WindowsInstaller*.* (Win7)


    • Control Panel > Programs > Uninstall any unnecessary programs OR any programs that may be installed that you want to capture.
    • Install the ZAV Utility
    • License the ZAV Utility
    • Shut down the workstation.
    • Copy VM (or image) this workstation to save as a template.
    • (If working with a VM workstation, Save as “ZAVReady”. Include comments of OS version, OS bit type, etc.)
    • Start up the workstation.
    • Log in as local Administrator.
    • Copy installation files (or load the installation media) ontoworkstation, that is not to be captured in the package.
    • Connect to any network services that the application needs innormal use (drive mappings, login to a particular system,etc).
    • Launch the ZENworks Application Virtualization Utility. (run as administrator and usethe latest ZAV version available)
    • License the installed ZAV utility (otherwise the captured appwill be “trial” time bombed)

    Up to this point the workstation should have all the necessaryresources to run the application about to be installed.

    Yet the device is as plain an OS as possible.

    Note: If the ZAV Package deltas and builds can be saved locally orto a network location.

    If the builds are to be saved to a network location or repository,connect to the repository at this point so it is available when youbuild the application package. (Or you can move the filesafter the capture.)

    Process of Capturing the Application

    • ZAV Utility | select “Capture Before”, once complete move tothe next step.
    • Add any files wanted to be contained in the “Capture” (Filesand Registry can be added after the Capture, modifying the packagebefore the Build)
    • Install the application
    • Open the application (this is important to have settings savedto Capture)
    • Any installation prompts – answer them to Capture thosesettings.

    Example: Microsoft Office applications prompts oninitial install the Updates-Automatic, Notify, or None. Keepin mind, if Automatic or Notify is selected, each time the appopens it will attempt to go to the vendor to get thoseupdates.

    • License the installed application (if required)
    • Add/Remove/Modify registry changes, shortcuts, files, etc.
    • Close the application
    • Open the application again making sure all application promptsdo not appear (if another prompt appears answer it and close/openthe application again)
    • Empty Trash

    Capturing the Application

    If there is nothing else to add the the package

    ZAV Utility | select “Capture and Diff”

    Select a the location for the deltas (snapshot) to be saved (thiscan be on the local device or a network repository if connectedpreviously).

    Add/Remove/Modify registry changes, shortcuts, files, etc. (ifadded earlier then already captured)

    Example: MS Office creates shortcuts, these can beremoved from the delta file system Start Menu or desktop.

    VBWarning registry settings that MSAccess uses, can beadded/imported into the delta Registry

    ZAV Utility | Multiple (button)

    Add all possible triggers to the package (use all .exe’s in theapplication), by doing this a rebuild won’t be necessary whenanother .exe is needed from the package.

    Note: If this is not done and an internal .exe needs to beexecuted, the package will have to be modified with the trigger,rebuilt and redistributed.

    Runtimes – If common runtimes are needed in the ZAVapplication – a selection of Runtimes can be selected above underRuntimes (tab). (Java, Dot NET, etc.) This can be in lieu ofinstalling the Runtime in the application while creating thebuild. Refer to documentation for use.

    MSI Installer – To create an .msi installer for the virtualapplication choose “Setup” and under “Project Details”, Browse tothe output file location and check “Automatically generate MSIafter successful application build” this will put a .msiversion of the application in the specified Output file locationalong with the .exe.

    .msi version will put the application in Add/Remove Programs touninstall.

    ZAV Utility | Output File – select the location and name the zavapplication package.

    Triggers – Auto Start

    Remember a 32-bit OS can not run an app built on 64-bit OS.

    Building the Virtualized Application

    Selecting Build, will build the package and compile into an .exe(and .msi if specified)

    After the “Build” copy the .exe (or .msi) to your location forlaunch and test it on the production environment.

    This can be deployed through ZENworks Configuration Management system as aBundle.

    Save the ZAV Configuration

    Save the Image (or snapshot the VM) as<ApplicationName>-ZAV

    Modifications to Captured package – go to Output Filelocation, open the “snapshot.xappl”, modify, rebuild and redeployto test on production device.


    Be sure to test, if fails on a regular environment device, run iton the “ZAVReady” image saved above.

    Note: Testing on ZAVReady VM (or image) requires manually addingthe network resources required by the application.


    Put “ZAV” in the name of the .exe so the application is easilyidentifiable.

    Example: MSAccess2010RT-ZAV.exe

    Put the ZAV file in their own directory for applicationseparation.

    Example: for runtime version of MSAccess 2010

    C:Program Files (x86)ZAVMicrosoftMSAccess2010RT-ZAV.exe

    Note: If running a 32-bit ZAV application on a 64-bit OS environment, put theZAV file in C:Program Files (x86) file structure so it can findall the 32-bit host .dll’s required to run. Also, 64-bit ZAV Applications cannot run in a 32-bit environment.