OpenBSD Journal

64-bit Time on OpenBSD

Contributed by jj on from the guenther-to-play-dr-who-next-season dept.

Phillip Guenther(guenther@) has rolled over time on OpenBSD to 64 bits, avoiding Yet Another Time Apocalypsetm for at least another week.

Switch time_t, ino_t, clock_t, and struct kevent's ident and data members to 64bit types. Assign new syscall numbers for (almost all) the syscalls that involve the affected types, including anything with time_t, timeval, itimerval, timespec, rusage, dirent, stat, or kevent arguments. Add a d_off member to struct dirent and replace getdirentries() with getdents(), thus immensely simplifying and accelerating telldir/seekdir. Build perl with -DBIG_TIME.

Bump the major on every single base library: the compat bits included here are only good enough to make the transition; the T32 compat option will be burned as soon as we've reached the new world are are happy with the snapshots for all architectures.

However, in the same commit message, he warns about the lack of user-servicable parts:

DANGER: ABI incompatibility. Updating to this kernel requires extra work or you won't be able to login: install a snapshot instead. Upgrading by source is for the insane only.

Edit: Please read up on what to do to ease the transition here if you still want to jump on it right now.

(Comments are closed)


  1. By sthen (2001:8b0:648e:cc01:f2de:f1ff:fef9:a752) on

    This makes the curse in tunefs(8) somewhat more poignant...

  2. By Renaud Allard (renaud) renaud@allard.it on

    There is still an easy way to upgrade without any console (bsd.rd) access.
    Have a look at https://arnor.org/OpenBSD/upgrade54.txt

    1. By phessler (phessler) on why in god's name am I wearing pants?

      > There is still an easy way to upgrade without any console (bsd.rd) access.
      > Have a look at https://arnor.org/OpenBSD/upgrade54.txt

      have you *actually* used this to upgrade?

      I bet money it fails in the rc.local part.

      1. By Renaud Allard (renaud) on

        > > There is still an easy way to upgrade without any console (bsd.rd) access.
        > > Have a look at https://arnor.org/OpenBSD/upgrade54.txt
        >
        > have you *actually* used this to upgrade?
        >
        > I bet money it fails in the rc.local part.

        Yes, I did upgrade with this, and it succeeded. I tried first on a VM to find the easiest way to upgrade and the method I documented there works fine. The main problem is that sometimes, you really cannot get a console easily.

        1. By sthen@ (2001:8b0:648e:cc01:f2de:f1ff:fef9:a752) on

          > > > There is still an easy way to upgrade without any console (bsd.rd) access.
          > > > Have a look at https://arnor.org/OpenBSD/upgrade54.txt
          > >
          > > have you *actually* used this to upgrade?
          > >
          > > I bet money it fails in the rc.local part.
          >
          > Yes, I did upgrade with this, and it succeeded. I tried first on a VM to find the easiest way to upgrade and the method I documented there works fine.

          It really depends what software you're running. Plenty of software which runs before rc.local expects to have a functioning password database. Maybe it works in your particular case but I don't think it's safe to rely on and definitely don't think it's good enough to be telling people "do it this way".

          > The main problem is that sometimes, you really cannot get a console easily.

          This isn't the only case where console access is *seriously* useful. Any VM hosts should be able to do this with no trouble at all. For physical servers it can be a bit more awkward but there are certainly plenty of server hosts who will do this. The only area I have machines which don't have this is for some small firewall systems (though in most of the more important cases those usually have a second machine with serial console too..)

          If I was stuck with a remote system with no way of obtaining console access I would probably look at using a yaifo install kernel to update. There are other ways but I think that's likely to be the safest method.

          1. By Renaud Allard (renaud) on

            I agree that doing it the bsd.rd way is much safer and is the way to do it. Although, if having a console is a problem, the method I described works. It's neither clean, nor perfect, but it works for that particular case.
            For those who modded me down, now I think I will keep tricks for myself instead of trying to help people...

Credits

Copyright © - Daniel Hartmeier. All rights reserved. Articles and comments are copyright their respective authors, submission implies license to publish on this web site. Contents of the archive prior to as well as images and HTML templates were copied from the fabulous original deadly.org with Jose's and Jim's kind permission. This journal runs as CGI with httpd(8) on OpenBSD, the source code is BSD licensed. undeadly \Un*dead"ly\, a. Not subject to death; immortal. [Obs.]