The Base image is a basic SmartOS configuration from which other SmartOS images are derived. This image is ideal for users who are comfortable with setting up their own environment and tools. This image contains only essential utilities.
There is an issue introduced with a recent OpenSSL 1.0.2k update where a pkgin upgrade will render the pkg_install tools (which includes pkgin) unusable, due to removing the previous openssl package prior to installing the update.
Here is an example error message you would see when attempting to use pkgin:
# pkgin update
ld.so.1: pkgin: fatal: libcrypto.so.1.0.0: open failed: No such file or directory
If you wish to upgrade your 16.4.0 image (via pkgin upgrade) you need to first update the openssl packgage using the pkg_add command:
pkg_add -U openssl
This will upgrade the openssl package in place and then the remaining upgrades can be handled normally via pkgin.
If you have already broken a system with pkgin upgrade you can fix the pkg_install tools (and pkgin) by doing the following:
New naming scheme and introduction of Long Term Support (LTS) releases:
All image names now include the architecture information. For example base-32 for 32-bit, base-64 for 64-bit and base-multiarch for multiarch.
All fourth quarter (Q4) pkgsrc releases are now LTS releases. Packages in an LTS release will receive security or build fixes for 3 years from the time the release is made available (assuming the fixes do not affect API or ABI compatibility)
Images based on a pkgsrc LTS release will have a new -lts suffix added to the image name e.g., base-32-lts
The 14.4.0 images represent the first LTS pkgsrc release
SmartOS packages are now PGP signed and verified during install.
The 14.4.0 images (and pkgsrc 2014Q4 packages) require a minimum platform of 20141030T081701Z
Starting with 14.3.0 Joyent now offers a multiarch image. The multiarch image provides both 32-bit and 64-bit support for packages. All packages default to 32-bit. To switch to 64-bit you can set the ABI environment variable to 64 bit.
As an example the sqlite package defaults to 32-bit:
You can also switch to 64-bit by calling the 64-bit version directly from opt/local/bin/amd64 by either setting your the PATH variable or or using the full path to the binary (e.g., /opt/local/bin/amd64/sqlite3).
The 2013Q3 pkgsrc package set, with 11,000+ binary packages available.
Refactored SMF support. pkgsrc packages now install their SMF files in /opt/local/lib/svc.
rsyslog pre-installed and running out of the box (in place of legacy syslog); has guardtime support built-in.
Backwards compatible change in how zoneinit is put in place: comes in a standalone 'zoneinit' package and doesn't perish when a VM is created successfully. Instead, a SMF property is set (application/done = true) to prevent it from starting again.
The TCP stack buffers are tuned up for significantly better throughput.
Change in the default MANPATH, to prefer more commonly used tools in case of the identical man pages.
terminfo path set so that interactive sessions support the 256-color term types.
Empty /usr/local path skeleton pre-created to help 3rd party software build/install gracefully, should it assume such paths exist.
Bash auto-completion support for pkgin.
Set XAuthLocation to /opt/local/bin/xauth path in /etc/ssh/sshd_config.
Improved memory usage of pkgin in 2013Q3 when performing an update.
New packages pre-installed: duo-unix, guardtime, sdc-manta and sdc-smartdc
pkgin database is not being updated when a machine is provisioned. This avoids difficult-to-track race condition provisioning failures. On first use, pkgin will automatically suggest to update the database. (For automated usage, pkgin -y is recommended, as always.)
Changed versioning scheme. The major version number matches the pkgsrc release year (13=2013), the minor version number matches the pkgsrc release quarter (1=Q1), and the tiny version number denotes a minor update.
Restore SunOS original syslog locations (/var/log/authlog instead of /var/log/auth.log, and /var/log/maillog instead of /var/log/postfix.log). The former was a legacy hack at Joyent, and some 3rd party tools anticipated the (standard) authlog/maillog names. The 'postfix' naming of /var/log/postfix.log didn't make much sense since other mail agents/servers (e.g. sendmail or courier) could log there too. Changes made to /etc/syslog.conf, /etc/rsyslog.conf and /etc/logadm.conf.
Change default logadm cron schedule to hourly for more granularity. Previously it was scheduled for once a day. The hourly schedule will help deal with log files that grow too quickly to be caught by a daily size cap.
Refactored mdata service to be more reliable in non-JPC environments (SmartOS or SDC7) and to be able to work on future platform image updates
/var/svc/mdata is now two files: /var/svc/mdata-execute and /var/svc/mdata-fetch
/var/svc/mdata-user-data relocated to /var/db/mdata-user-data
DATASET-684 - Fix a bug in the mozilla-rootcerts package that resulted in CA certificates saved under hash name not recognized by OpenSSL-linked packages, so that recognized https resources showed up as self-signed.
Add curl to default packages pre-installed (works around the limitation of the platform curl that didn't recognize the present CA certificates).
The /opt/local/gnu directory introduced in the 1.8.x has been rolled back. The GNU tools are provided in /opt/local/bin with and without the "g" prefix. For example, GNU grep is available as /opt/local/bin/grep and /opt/local/bin/ggrep.
Remove leftover /var/svc/provision- files (these files are created by the provisioner as needed).
DATASET-651 - Parse and set up resolvers (/etc/resolv.conf) properly, if provided in metadata.
Improve the way how hostname is handled when provisioning. In /etc/hosts entries for private/public IPs are not added to avoid conflicts with DNS. Only the machine's hostname is added to the entry for 127.0.0.1 to help with applications like Apache that default to resolving hostnames from IPs.
DATASET-674 - Remove NTP service from SMF. NTP cannot be used inside a zone.
Removed unused and legacy user entries from /etc/passwd. Special purpose users, such as www and postgres are created by the packages that require them.
Fixed a regression where /etc/hosts was not populated properly on non-DHCP setups.
Fixed a regression when /etc/resolv.conf was not populated properly if resolvers were passed in the vmadm payload (SmartOS).
Fixed a regression with IP logic in zoneinit on DHCP setups (SmartOS).
Special _pkgsrc user and group set up (UID/GID 999) so that useradd and groupadd create new entries at 1000 and above.
Stale "lp" user/group references removed, fixing problem with the cups package.
zoneinit now gathers as much source information from metadata as possible (SmartOS).
Fixed minor problems with user password handling (if requested).
Fixed problems with /etc/hostswhen provisioned on a DHCP setup (SmartOS).
In sync with changes in vmadm, letting mdata:execute finalize machine provisioning instead of zoneinit. If platform is recent enough, the /var/svc/provisioning file will be recognized, and moved to /var/svc/provision_success or /var/svc/provision_failure as appropriate. (zoneinit will do the latter early when it encounters an error. (SmartOS)
Updated to ensure SMF does not re-invoke zoneinit if a failure is found by forcing exit status 95.
The name of this machine image was changed from SmartOS to Base.
This image is targeted at the 2012Q1 pkgsrc repository.
GCC 4.7.0 lets us create a "build 64bit code by default" configuration, so that (unless you override with -m32), all compilers from the gcc47 package on the base64 image build 64bit objects by default. No more messing with CC, CFLAGS and the like (hopefully).
DATASET-440 - Remove stale rc2 scripts
DATASET-451 - Remove 3rd party 'man' binary, hook platform man with groff to properly parse pkgsrc man pages
DATASET-457 - Pre-install latest node.js by default
DATASET-474 - Set LANG=C as default
DATASET-480 - Increate timeout of mdata:execute to one hour (for scripts that try to fetch lots of data)