Friday, April 29, 2016

Firefly failsafe image was updated

The following changes have been made:

  1. smf removed completely
  2. freebsd bootloader from the illumos loader project
  3. busybox provides init and many others commands
  4. network configuration script (/etc/init.d/netconfig) is included
  5. it's a possible to copy files over network using scp
  6. console has white background color
  7.  image size now is 58 MB


Wednesday, December 9, 2015

The Linux “free” command for Solaris/illumos


I never understood why Solaris does not contain a simple way to checking the amount of used/free memory and swap.  On Linux you can check the used and available space of physical memory and swap by using "free" command.  Here's the simple analogue for solaris/illumos, based on Brendan Gregg's swapinfo. Unlike Linux version, “cached" means here memory used by the ZFS ARC Cache. Many thanks to Sebastian Wiedenroth, who has made significant changes and continues development.

# uname -s
SunOS
# free
           total       used       free     locked     kernel     cached
Mem:        128G       916M      87.0G          0      17.0G      23.1G
Swap:      75.9G      1.26G      74.7G

Saturday, September 19, 2015

GPT fdisk on illumos

Is there an alternative to the illumos native fdisk? Yes, for example, GPT fdisk from Rod Smith. It includes the gdisk, cgdisk, sgdisk, and fixparts programs. Site mentions only usage on Linux, FreeBSD, Mac OS X and Windows, but it is possible that GPT fdisk may be suitable on illumos-based distributions. It requires popt library (OmniOS contains it) and latest version built with no problems, except for a small fix for ncurses.
root@test:# ./gdisk /dev/dsk/c2t3d0p0
GPT fdisk (gdisk) version 1.0.0

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): p
Disk /dev/dsk/c2t3d0p0: 10485760 sectors, 5.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): F24F914A-AD82-D84D-B0FC-81351563B356
Partition table holds up to 9 entries
First usable sector is 34, last usable sector is 10485726
Partitions will be aligned on 1-sector boundaries
Total free space is 222 sectors (111.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1             256        10469342   5.0 GiB     BF01  zfs
   9        10469343        10485726   8.0 MiB     BF07

Command (? for help): i
Partition number (1-9): 1
Partition GUID code: 6A898CC3-1DD2-11B2-99A6-080020736631 (Solaris /usr & Mac ZFS)
Partition unique GUID: F9BEC73D-23D3-C168-E74A-D60ED3EC565D
First sector: 256 (at 128.0 KiB)
Last sector: 10469342 (at 5.0 GiB)
Partition size: 10469087 sectors (5.0 GiB)
Attribute flags: 0000000000000000
Partition name: 'zfs'

Command (? for help):
b       back up GPT data to a file
c       change a partition's name
d       delete a partition
i       show detailed information on a partition
l       list known partition types
n       add a new partition
o       create a new empty GUID partition table (GPT)
p       print the partition table
q       quit without saving changes
r       recovery and transformation options (experts only)
s       sort partitions
t       change a partition's type code
v       verify disk
w       write table to disk and exit
x       extra functionality (experts only)
?       print this menu

Command (? for help):

Monday, July 27, 2015

Building own failsafe image using firefly scripts

I've put some distro-const scripts to the github repo at https://github.com/alhazred/firefly for anyone who wants to build their own illumos-based failsafe image. Current stuff was tested on OmniOS but also should work on OpenIndiana. Anyway the code can be simplified, so any pull-requests and customization are welcome.

Thursday, January 15, 2015

Get pid, user and command for the particular port in illumos


While the Solaris has the updated netstat with -u flag, illumos requires certain improvements in sockinfo, and possibly, rpcbind (tcpConnCreationProcess shows the old PID for rpcbind, until it did not become a demon). With help of pfiles is possible to obtain the desired information about pid for particular port, so I wrote a small pfiles-based utility which allows to determine the PID, user and command for the particular port:

# ./ptcpstat
PROTO           IP               PORT   PID    USER     COMMAND
--------  -------------------    ----- ------ -------- ------------------
AF_INET   127.0.0.1              25    692    root      /usr/lib/smtp/sendmail/sendmail -bl -q15m
AF_INET6  ::1                    25    692    root      /usr/lib/smtp/sendmail/sendmail -bl -q15m
AF_INET   127.0.0.1              587   692    root      /usr/lib/smtp/sendmail/sendmail -bl -q15m
AF_INET6  ::                     22    605    root      /usr/lib/ssh/sshd
AF_INET6  ::                     0     495    root      /usr/lib/inet/in.ndpd
AF_INET   0.0.0.0                520   637    root      /usr/sbin/in.routed
AF_INET   0.0.0.0                0     637    root      /usr/sbin/in.routed
AF_INET   0.0.0.0                10004 685    root      /usr/bin/python2.6 /usr/lib/pkg.depotd --cfg svc:/application/pkg/server:test
AF_INET   0.0.0.0                10000 9354   root      /usr/bin/python2.6 /usr/lib/pkg.depotd --cfg svc:/application/pkg/server:zfs
AF_INET6  ::ffff:198.168.1.1     22    2315   root      /usr/lib/ssh/sshd
AF_INET6  ::ffff:10.8.0.30       56027 2315   root      /usr/lib/ssh/sshd
AF_INET   0.0.0.0                80    1402   root      /usr/bin/python2.6 /usr/lib/pkg.depotd --cfg svc:/application/pkg/server:defaul
AF_INET6  ::ffff:198.168.1.1     22    2314   root      /usr/lib/ssh/sshd
AF_INET6  ::ffff:10.8.0.30       56027 2314   root      /usr/lib/ssh/sshd


Monday, May 19, 2014

How to prevent an IPS package from being upgraded

Recently I had a situation where some incorporating package depends on a package, say foo, version 3.1 and I had to wait for the update exactly to 3.2 and do not allow 3.1.1, 3.1.2, ...
"Freeze" option doesn't help here (may be should?) but it's a possible to use some versioning tricks in incorporating  manifest.
First option is to ensure that required version of 'foo' is published with trailing zero:

    foo@3.1.0
    foo@3.1.1
    foo@3.1.2

Then we can use "depend fmri=foo@3.1.0 type=incorporate" line in incorporating manifest and only upgrade to this version will be allowed.

More reliable option (and you don't need trailing zeros) is to use the timestamp in incorporate dependency:

    depend type=incorporate fmri=foo@3.1:20140507T021327Z

Only upgrade to version 3.1 with specific timestamp will be allowed here.

If foo@3.2 will be published and we want to wait until 3.3, then we can publish a new version of the incorporating package using next dependencies:

depend type=require fmri=foo@3.2
depend type=incorporate fmri=foo@3.2.0

P.S. Many thanks to @binarycrusader

Thursday, May 30, 2013

Firefly: failsafe image for illumos-based distros

If somebody is looking for illumos-based filesafe image, I've created small iso (usb image is available also) at sourceforge. This image provides the same method as old Solaris iso's: looks for bootable root pool, imports it to /a and mounts bootfs:

I hope someone will find this image useful for recovery purposes on any illumos-based distributions.

Friday, September 21, 2012

illumos grep(1) now able to traverse directories

This week I updated illumos grep(1), having added support for recursive searching:
$ man -M /usr/share/man grep
...
     -r
           Read all files under each directory, recursively. Fol-
           low  symbolic links on the command line, but skip sym-
           links that are encountered recursively. If file  is  a
           device, FIFO, or socket, skip it.

     -R
           Read all files under each directory, recursively, fol-
           lowing all symbolic links.

...

Enjoy!

Sunday, February 26, 2012

illumian, a new illumos based distro

This iso has become a rarity: as you know, NCP4 never saw the light:





Nevertheless illumos has now the second distribution - illumian, where the packaging system is the main difference from the OpenIndiana and the first iso has a very simple text-mode installer developed by Nexenta for the NCP distribution.
I hope illumian will continue to grow and improve, and for people who like Solaris but feel it could use a more practical "apt-get", illumian is exceptional.
If you're interesred in joining, feel free to talk in #illumian, or subscribe and make a post to the illumian-dev mailing list.

Thursday, June 30, 2011

Bring back lx brand?

It is hard to say why the BrandZ code was removed from the OpenSolaris. However this can be corrected. With small fixes I've now got CentOS running in a zone on Illumos:

The Illumos Project SunOS 5.11 illumos-gate June 2011
root@indy:~# zoneadm -z centos boot; zlogin -C centos
[Connected to zone 'centos' console]
Welcome to CentOS
Press 'I' to enter interactive startup.
Configuring kernel parameters: [ OK ]
Setting hostname centos: [ OK ]
Checking root filesystem: [ OK ]
Activating swap partitions: [ OK ]
...
CentOS release 3.7 (Final)
Kernel 2.4.21 on an i686

centos login: root
Password:
Welcome to your shiny new Linux zone.

- The root password is 'root'. Please change it immediately.

- To enable networking goodness, see /etc/sysconfig/network.example.

- This message is in /etc/motd. Feel free to change it.

For anything more complicated, see:
http://opensolaris.org/os/community/brandz/

You have mail.
-bash-2.05b# cat /proc/cpuinfo
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 30
model name : Intel(r) Core(tm) i7 CPU Q 720 @ 1.60GHz
stepping : 5
cpu MHz : 1596.146
cache size : 0 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 11
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm pni monitor ds_cpl est tm2 cx16 xtpr
...

How to determine PXE mac address when booting illumos via PXELinux/iPXE

In illumos, if you need to determine the interface which was used for booting via PXE then it's possible to use "boot-mac" pro...