►
From YouTube: Porting OpenZFS to OSX and Windows by Jorgen Lundman
Description
From the 2017 OpenZFS Developer Summit:
http://www.open-zfs.org/wiki/OpenZFS_Developer_Summit_2017
A
B
A
B
B
To
be
honest
with
you,
I,
don't
know
what
some
of
these
do,
but
at
least
well.
We
runs
at
FS
ZFS
on
the
brands
and
services
that
my
team
is
responsible
for
most
Rhema
for
the
Japanese
and
Asian
markets,
but
at
least
to
corner
hard
on
at
the
bottom.
Left
there
and
said
the
comm
with
Zito
comm
have
server
racks
here
in
California
and
a
few
other
places
around
the
world.
So
if
you
ever
get
tired
of
running
Amazon,
VMs
feel
free
to
try
those
too
or
don't
cuz
I,
don't
get
a
kick
back
anyway.
B
Enough
of
that.
So
today,
I
want
to
talk
to
you
about
the
OS
X
port
of
open
ZFS
and
as
I'm
talking
to
a
roomful
of
developers.
This
presentation
will
be
for
developers
and
to
show
how
to
get
up
and
running
with
the
OS
X
support
as
quickly
as
possible
and
how
to
do
rapid
development,
maybe
and
a
little
bit
also
getting
this
presentation
over
with
as
quickly
as
possible.
So
this
will
be
a
developer
speedrun.
So
with
that
in
mind,
I'm
gonna
die
right
in
there
are
some
prerequisites.
B
But
since
we
are
going
to
do
some
developing,
you
also
want
to
disable
the
debug
protection
and
while
you're
there,
you
also
want
to
disable
dtrace
protection.
So
to
be
honest
with
you,
you
must
have
disabled
sip
entirely.
It
doesn't
give
you
much
so,
especially
since
we're
going
to
be
loading
our
modules
on
a
VM,
so
boot,
the
VM
into
the
recovery
partition,
run
csru
till
disabled
and
then
reboot
normally
and
you're,
not
to
worry
about
sip.
B
Ever
again,
you'll
have
to
get
two
repositories:
SPL
Solaris,
porting
layer,
library
Bryan,
which
one
is
it
they're,
good
and
ZFS
itself.
If
you
place
them
next
to
each
other
on
the
same
level,
then
you
don't
have
to
specify
any
paths
to
configure
and
then,
like
most
open-source
projects,
run
the
origin
to
do
the
auto,
conf
stuff
and
then
run
configure
and
then
make
and
do
the
same
again
for
ZFS
and
I'm.
Actually
gonna
do
that
right
now,
but
it's
a
little
bit
laggy
I
hope
it
will
eventually
catch
up.
B
Hey,
okay
right!
Can
you
read
that
no
we're
gonna
have
to
squint?
Otherwise?
So,
let's
all
pretend
that
you
believe
I
just
ran
these
commands,
so
we
have
the
two
directories
next
to
each
other,
I'm
gonna
enter
SPL
and
I'm
gonna,
compile
that
it's
mostly
just
thin
wrappers.
It
doesn't
take
particularly
long
and
it
doesn't
change
very
often.
B
Basically,
if
there's
a
new
major
version
of
our
sex
out
there,
they
might
have
some
changes
that
took
about
10
seconds.
We're
gonna
do
the
same
in
the
ZFS
directory.
This
will
take
a
little
bit
longer,
but
it's
not
too
bad
once
this
is
finished.
Compiling
I'm
gonna
copy
everything
over
to
the
VM,
which
is
probably
an
unusual
way
of
doing
it.
I
think
most
platforms
would
compile
on
the
VM
and
unload
it
on
the
VM
is
alright
yeah.
B
But
whichever
way
you
prefer
to
do
it
and
I
will
use
just
our
sink,
because
this
space
is
cheap
and
it's
pretty
fast.
But
you
know
you
don't
have
to
you
can
use
whatever
you
want,
SCP
or
NFS
mount,
maybe
or
VMware
shared
folder
or
get
itself.
You
know
whatever
you
want
to
use
it's
up
to
you,
but
at
the
end
of
it,
I'm
gonna
have
the
same
object
files
on
both
machines.
B
I
wish
this
was
running
a
little
bit
faster
because
I'm
running
of
ad-libbing
material
here
and
my
brain
only
remembers
the
jokes
that
are
wildly
inappropriate,
so
I
think
I.
Will
you
know
avoid
doing
that,
but
we
are
at
the
tail
end
of
it
all.
So,
let's
just
you
know
pretend
it's
going
along.
Can
you
read
that
I.
B
B
It
OS
X,
yeah
Apple,
didn't
let
you
run
it
on
VMs
before,
but
now
they
do,
if
you
have
Apple
hardware
yeah
so
which
I
do
so
yeah
alright,
so
that
took
two
minutes
and
plus
SPL,
maybe
two
and
a
half
minutes
right.
I
was
too
surprised.
He
was
heckling
me
in
the
middle
of
it
all
right,
so
I'm
gonna
copy
there
over
to
my
VM,
which
won't
take
long
I
hope
she
won't
take
long.
B
I,
hope,
okay-
and
here
is
my
VM-
to
be
honest
with
you,
when
I'm
working
on
ZFS
myself,
I
will
stay
here
and
just
SSH
in
and
do
the
work
unless,
of
course,
I'm
working
on
a
u.s.
specific
problem
or
feature,
but
today
I'm
gonna
be
in
the
VM
just
to
show
a
bit
more
clearly
where
we
are
now
in
most
situations
you
would
be
well
we're
open
source.
B
You
would
probably
run
make
install
here
and
you
can
do
that
if
you're
on
making
so
all
it
will
copy
the
modules
where
they
need
to
go
and
all
the
binders
and
so
on,
so
that
when
you
reboot
it
loads,
it
automatically,
but
we're
not
gonna.
Do
that
basically
making
store
ads?
Maybe
another
minute?
You
know
we
don't
have
that
time,
and
this
is
a
speedrun,
so
we're
gonna
be
running
it
from
the
source
tree,
which
is
what
I
like
to
do,
but
whichever
you
prefer
to
help
us
run
us
run
from
the
source
tree.
B
We
will
rather
ZFS
comes
with
two
helper
scripts.
The
first
one
is
load
of
Sh,
which
well
loads
the
kernel
modules
it
chones
it
to
route
and
wheel,
which
is
a
requirement
by
the
apple
kernel
and
I.
Do
that
in
SAS
TMP,
just
because,
if
your
bitterness
or
Street
and
the
next
copy
will
break
so
there's
no
specific
meaning
with
using
/tmp
by
loading
it
this
way
means
that
if
you
reboot
or
panic,
it
won't
load
it
again.
The
next
boot
which
you
know
can
up
in
the
boot
cycle.
B
There
is
a
slight
detour
here
about
two
versions
of
OS
six
ago
you
could
tell
f
VAR
log
system
log
to
get
the
kernel
messages
and
life
is
good.
Then
Apple
went
and
changed
away.
Logging
works
so
now
it
is
stored
in
binary
database
files
that
in
itself
might
be
okay,
but
the
problem
is
the
command
that
Apple
provide
us
to
access
the
database.
Is
the
log
command
it's?
B
Well,
it's
garbage
really!
Well,
it's
not
very
good!
That's
a
bit
strong,
but
it's
not
very
good,
in
particular,
if
you're
on
log
stream,
you
can't
pipe
it
to
things
like
grep,
because
it
goes
into
buffered
I/o,
which
is
a
bit
of
a
pain.
Now
there
are
many
ways
to
solve:
buffered
I/o
problems,
but
I
wanted
to
find
a
way.
They
only
used
the
base,
install
utilities,
which
is
why
we
have
this
thing
here:
script
queued.
They
have
no
log
stream,
and
at
that
point
we
can
pipe
to
grep
and
so
on.
B
While
I
was
here,
I
figured
I
might
as
well
show
that
log
stream
can
output
the
messages
from
just
CFS
n
SPL,
so
just
left
it
as
an
example
and
at
the
very
end,
I
am
piping
it
to
something
just
to
show
that
I
can
pipe
it.
So
I
put
it
in
their
load
script,
so
I
don't
have
to
remember
it
every
damn
time.
B
B
This
time,
yeah
load
our
kernel
modules
and
you
get
this
vague
message
from
Apple,
where
it's
not
entirely
sure
whether
or
not
loaded,
something
that's
okay,
I
guess
over
here
we
have
SPL
starting
up
and
the
first
thing
the
SPL
does
is
initialize
came
in.
This
is
Jeff.
Bollocks
came
in
from
Solaris
/
Loomis,
I
guess
I
should
say
we
had
some
problems
using
Apple's
memory
manager
in
that
we're
not
allowed
to
call
half
the
functions,
so
we
allocate
all
pages
from
the
kernel.
B
So
then
we
of
course
needed
a
slab,
allocator
and
some
magazines
and
came
in
cache
and
all
that
stuff.
So
we
figured
since
we've
already
ported
half
over
Loomis
by
porting
ZFS
wanna
put
a
little
bit
more,
so
one
of
my
developers,
Brendan
did
the
port
of
came
in
and
there
was
actually
quite
easy.
Nice
clean
code
came
over
quite
easily.
The
hardest
part
was
in
fact
km.
B
B
We
should
probably
look
at
the
Apple
allocator
again,
but,
to
be
honest,
came
home
runs
rather
well.
For
us,
it
sits
in
his
own
little
world,
but
it
gets
pressure
from
the
apple
kernel,
so
we
can
shrink
and
all
that
and
the
came
em
from
illumise
has
some
great
debugging
features
with
the
red
zone
and
the
tagging
and
so
on,
and
it's
helped
us
find
a
few
problems
with
memory
management
anyway
and
then,
finally,
we
have
ZFS
loaded
up,
as
you
would
expect
now.
This
second
helper
script,
to
run
from
the
source
tree
is.
B
B
But
if
you
want
it
to
be
in
sash
tank,
you
set
the
mount
point.
We
only
move
it
to
search
volumes.
If
it's
not
set
just
to
be
nice
to
the
users,
you
can
also
set
an
environment
variable
this.
We
do
in
the
ZFS
test
environment
because
we
didn't
feel
like
changing
hundreds
of
scripts
to
handle
size
volumes
being
the
root.
So
those
are
two
ways
you
can
do
it
now:
I'm
actually
going
to
go
and
export
the
pool
and
then
unload
the
kernel
module.
B
We
can
unload
SPL
as
well,
if
you
want,
but
it
doesn't
change
very
often
so
I
wouldn't
necessarily
bother
so
I'm
going
to
go
back
to
my
command
line
and
I'm
going
to
edit
one
of
the
files
xenops.
You
should
all
know
bean
ups
I
hope
and
we
go
down
to
make
there.
It
doesn't
really
matter.
You
just
have
to
guess,
and
at
the
end
of
this,
let's
put
in
a
call
to
panic.
B
Right,
so,
if
you
pay
attention
to
the
time
we'll
save
it
well,
compile
it,
you
will
have
to
go
through
the
directories.
It
takes.
You
know
ten
seconds
or
something
just
some
steadier
there.
Okay
and
once
it's
finished,
compiling
we're
gonna
copy
it
and
then
we're
gonna
load
it
again.
So
that
is
generally
how
long
it
takes
to
do
a
new
version
of
ZFS
and
try
it
out.
I'm
sure
other
platforms
is
just
as
fast
I.
B
That
is
because
what
light
is
eager
I
guess
it's
a
safe
word:
whoops
we
crashed
so
at
this
point,
I'm
gonna
go
and
load
the
debugger
I'm
gonna
point
it
to
the
debug
kernel,
which
comes
in
the
kernel
debug
kit
for
the
KDK,
which
is
a
download
from
Apple
if
you
have
a
paid
subscription.
So
if
you
want
a
copy
of
this
I'm
afraid,
I
can't
really
help
you,
while
I'm
on
camera.
B
B
But
when
it
comes
to
the
panic
err
stack,
you
can
just
run
back
trace
to
get
the
full
stack
and
we
can
walk
up
until
we
get
to
our
source
line,
which
is
quite
nice,
and
at
this
point
we
know
we
have
a
Z
node
or
a
ZP
I.
Guess
you
call
it
so
you
can
have
a
look
at
the
zp
and
inside
it
and
yeah
just
go
past
that
and
we
have
the
fields
that
I'm
sure
you're
all
familiar
with
I
hope.
B
B
This
is
useful
for
panics
and
crashes,
and
so
on,
but
the
situations
where
we
have
deadlocks,
for
example,
you
can
nmi
their
host
or
non-maskable,
interrupt
your
VM
or
hardware
and
then
connect
the
the
debugger.
In
that
case,
you
can
run
something
like
show
all
stacks
which
will
dump
all
the
kernel
stacks
in
one
go.
I
won't
do
an
articles,
you
know
we
don't
have
that
time.
You
can
easily
then
search
for
which
stacks
have
ZFS
in
it
and
see
that
which
ones
are
blocked.
B
Ferhat,
perhaps
waiting
on
a
mutex
and
with
the
case
of
mutexes
you
can
of
course
take
a
look
at
whoopsie.
You
want
me
to
spell
that
right.
It
looks
like
this.
This
isn't
the
spa
namespace
lock,
isn't
held
in
a
moment,
because
owner
is
all
0,
but
if
it
was
held
we
can,
then
you
switch
to
act
with
the
address
and
then
do
back
trace
on
that
threat
and
try
to
figure
out
why
it
hasn't
returned
the
mutex
like
it
should.
B
So
that's
the
dead
looks,
but
you
can
also
use
it.
For
example,
Sean
one
of
my
developers
he
had
a
double
panic
situation
where
it
would
trash
his
stack
whenever
he
ran
the
code.
So
he
an
in
mind
his
host
set
a
breakpoint
on
panic
and
then
triggered
it,
which
I
thought
was
quite
neat,
so
he
can
get
the
pristine
stack
before
it
got
trashed
and
then
fix
this
problem,
which
of
course
means
that
if
you
have
old
or
new
code
that
you
want
to
debug,
you
can
nmi
set
a
breakpoint
and
then
single
step.
B
Your
way
through
the
kernel,
which
I
think
is
quite
powerful,
I,
don't
know.
If
any
other
platforms
that
use
single
step
for
the
kernel
good
excellent,
so
anyway,
those
are
good
things
once
you
finish
to
fix,
debug
whatever
you
can
then,
of
course
to
reboot
your
VM,
but
I'm
not
going
to
do
that.
Well,
I
mean
I
am
but
I
need
a
memory,
so
I'm
going
to
just
shut
it
off.
B
B
So
they're,
worse
export,
that's
our
home
page,
open
the
fs100,
sx
or
org,
we're,
of
course
in
github,
but
our
latest
version
is
one
six
one
would
consider
it
stable.
There
is
a
162
release
candidate
out
for
high
sierra
because
they
changed
some
things
and
the
believe
we're
working
on
I-17,
no
binary
release
right
now.
I
think
joe
is
working
on
the
package
right
now,
but
that
doesn't
really
matter
if
you
are
working
from
the
github
repository
we
internally
to
the
team.
We
check
our
sects
10.8
to
the
latest
64-bit.
B
If
you
really
wanted
to,
you
can
go
older
or
32-bit,
but
we
don't
bother
we
upstream
directly
with
open
ZFS
repository.
So
whenever
matt
approves
a
new
feature
or
a
PR
or
commit
just
a
few
hours
later,
we'll
pull
that
in
or
rather
cherry-pick
it
in
and
thanks
to
timezones.
Technically
we
get
all
the
features
first,
so
you
know
pretty
sure.
That's
our
time
zones
work
where,
in
terms
of
ZFS
itself
were
a
complete
command
line.
B
B
B
Now,
if
you
were
to
look
at
the
u.s.
export,
there
are
some
differences
in
particularly
are
many
of
the
kernel
structures.
You
you
iov,
node
and
buff
are
opaque,
so
you
cannot
see
inside
them
when
you're
compiling.
Of
course,
the
kernel
debugger
or
a
debug
kernel
will
let
you
look
inside
v
node,
so
it
doesn't
actually
impede
you
debugging,
which
is
nice,
but
while
you're
compiling
there
is
no
looking
inside.
B
We
also
cache
names
in
Zenon,
which
is
a
bit
unfortunate,
but
again
spotlight
likes
to
call
v,
get
a
lot
on
the
ID,
and
then
it
calls
get
a
tribute
asking
for
the
name.
So
yes
or
no
sex,
you
can
get
the
name
from
get
attributes.
This
was
a
little
bit
slow
and
painful.
So
at
the
moment
we're
caching
names,
but
we
should
probably
revisit
that
at
some
point.
B
Maybe
there's
a
better
way
to
solve
that
problem
and
then,
finally,
we
don't
call
the
DFS
layer
with
locks
held,
which
generally
just
means
we
delay
creating
the
V
node
until
the
transactions
being
committed,
but
there
was
only
like
five
places
in
the
code
that
we
had
to
check
make
the
change
that
was
ok
and,
more
importantly,
all
our
dead
locks
disappeared
overnight.
So
it
was
actually
a
good
thing
in
the
end,
I
know
I'm
wondering
if
other
platforms
to
try
it.
B
If
you
have
deadlock
so
I,
don't
know
right
so
part
two
there
we
gonna
descend
into
madness
and
things
might
go
a
little
bit
wrong
here.
Well,
let's
try!
So
then,
what
about
the
windows
port
and
can
be
usefully
hid,
learnt
all
the
windows
port
I'm
gonna
go
to
another
VM.
Will
you
believe
it?
This
might
be
a
little
bit
laggy,
because
there's
no
much
RAM
on
this
machine.
Is
it?
Oh,
it's
loaded,
Windows
10
64
bit
I'm
gonna,
look
in
dev
studio.
B
Can
you
read
that
let's
tidy
there
is
rather
tiny,
but
I
can't
change
the
font
size
so
over
here
it
says
kernel
and
userland.
Believe
me,
it
does
an
inside
kernel.
We
have
s
PL,
which
has
the
familiar
SPL
source
files
and
quite
a
few
more
I,
assure
you
and
then,
of
course,
we
have
ZFS
with
the
familiar
ZFS
source
files
and
quite
a
few
more
I
assure
you,
and
if
we
skip
the
colonel
and
go
look
in
the
userland
Oh
swapping
a
little
bit,
we
have
libraries
all
the
familiar
library.
B
We
would
expect
to
see
and
quite
a
few
more
I
assure
you
and
then
finally
we
have
command
line
we
have
to
because
that's
all
you
get
that's
all
you
need
really
sorry,
it's
a
bit
hard
to
read
that
but
yeah
okay.
So,
let's
take
a
look
at
a
command
line
here.
This
is
standard,
get
for
Windows
bash
shell.
So
it's
a
standard
windows
utility.
It's
nothing
to
do
with
Ubuntu
for
windows,
bash
shell,
so
I
can
run.
You
know
derp
well,
I
guess
both
of
them
can
but
anyway.
B
So
if
you
take
a
look
at
the
produced
binaries,
we
have
the
sis
file,
which
is
the
Windows
kernel
module
if
you
will-
and
that
comes
with
an
INF
file
which
you
used
to
install
this
file
and
I'm.
Finally,
the
two
binaries.
Yes,
that
means
those
libraries
to
you
so
earlier
are
all
compiled.
Statically
I'll
go
back
and
change
that
sometime.
Maybe
it's
not
so
important
and
if
we
have
a
look
at
the
kernel
message
buffer
here,
there's
a
too
small
to
read.
We
have
SPL
starting
up
as
before,
and
it's
analysis.
Initializes
came
em.
B
Yes,
this
too
is
running.
Jeff
bond
mix
bond
box
came
in
he'll
just
have
to
find
some
way
to
live
with
that,
and
and
finally,
we
have
ZFS
loading
up
as
you
would
expect.
So,
let's
run
some
of
these
commands.
Oh
I
had
this:
shell
command
line
is
running
elevated
as
in
run
as
administrator'
I
didn't
want
to
get
bogged
down
with
the
whole
pseudo
for
Windows
problem,
so
standard
output
really
expect.
We
can
then
try
to
go
and
import
a
pool.
B
I
should
mention
that
these
commands
are
rather
verbose
with
a
hint
of
desperation,
so
we're
gonna
get
some
walls
of
texts
here
may
run
import.
We
get
boom
right
and
the
first
problem
is
Windows
does
not
handle
EFI
petitions
at
all,
so
I
had
to
use
Libby
fi
in
the
lip
ZFS
library
to
handle
it,
but
we
can
find
a
pool
called
boom.
B
So
let's
try
to
import
that
we'll
get
the
same
wall
of
text
again,
but
the
most
important
message
here
is
that
boom
was
mounted
on
D
:
yeah
D
:.
Now
there
are
some
errors
afterwards,
but
that
is
because
Miley
share
library
has
been
gutted,
there's
no
sharing
in
a
moment,
so
we
can
run
run
the
normals
that
actually
try
to
get
rid
of
that
Exe
cuz.
It
looks
a
little
bit
wrong,
but
it
turns
out
that
a
problem
was
a
little
bit
bigger
than
the
5
minutes.
B
I
wanted
to
invest
into
it,
so
maybe
in
the
future,
so
we
can
run
the
usual
pull
commands
now
very
exciting.
Let's
get
all
the
properties
and,
of
course
status
here
you
will
notice
that
the
device
name
has
the
petition
offset
encoded
in
the
beginning
of
it,
followed
by
the
petition
length.
Yes,
it's
a
bit
of
a
hack,
but
is
also
interesting
to
note.
B
The
only
place
that
we
open
the
device
name
is
in
Vida
disk,
so
it
was
really
easy
to
pass
those
two
numbers
out
before
opening
the
disk
and
the
only
place
we
issue
IO
is
in
Vida
disk.
So
it
was
really
easy
to
add
the
petition
offset
onto
the
start
io
offset,
so
they
ended
up
being,
even
though
it
is
a
hack
here
and
there
I'm
being
quite
pleasing.
B
So
it
gives
me
a
bit
of
conflicted
feeling
there
but
I
think
that's
quite
normal
for
my
code
to
be
honest,
but
you
know,
and
of
course
we
can
run
the
ZFS
command.
I
hope
no
and
get
just
usual,
get
all
the
properties
you'll
notice
it's
using
lz4,
but
otherwise
a
pretty
standard
pool.
But
anyway,
it's
probably
more
exciting
to
have
a
look
in
Explorer.
B
B
B
B
It
doesn't
really
have
a
name
yet
there's
a
story
to
that.
But
anyway
the
current
version
is
alpha
or
he
wants
to
be
alpha
when
it
grows
up.
I
did
you
know
it
is
for
Windows
10
64
bit,
not
because
any
source
is
specifically
for
Windows
10,
but
it's
the
only
VM
I
have
so
still.
No
one
I
tried,
but
I
am
feeling
confident
they
will
also
compile
on
this
star
and
eight
without
much
change.
It
comes
with
free
panics.
B
So
often
they
run
their
own
test.
Vms
on
test
pools
with
test
data.
I
don't
want
to
spend
the
rest
of
this
summit.
Fixing
people's
windows
boxes
in
fact,
I
never
want
to
fix
people's
windows
boxes.
Make
that
clear
right.
It
is
missing
large
bits,
in
particular
the
user,
ID
and
group
IDs
aren't
connected
to
anything.
So
you
can
shown
all
you
want.
B
It's
similarly
for
file
permissions,
but
some
are
supported.
There
certainly
doesn't
have
any
code
for
ACLs
or
extended
attributes,
but
the
core
is
working.
Their
videos
are
over
the
mirrors
raid-z
one
two
and
three
compressions
are
all
there,
including
LC
for
seesaw
check
sums.
Are
there,
including
head
donor
and
skeins
I,
hope
you'll
answer
encryptions
there
in
that
the
library
is
compiled
like
check
sums
I
just
haven't
pulled
in
there
committing.
Yet
it's
just
a
matter
of
cherry
picking
in
it
D
dope.
Is
there
the
tasks?
B
Queues
are
spinning
up
all
the
threads,
so
that's
all
running
as
you
would
expect
to
the
combos
and
arc.
Reclaim
thread
is
running,
so
everything
is
ticking
away
as
it
should
now.
It
does
need
some
resources.
I
must
admit.
Usually
that
means
money
and
I
like
money,
but
you
know
developers
would
be
nice
to
when
I
started.
This
I
didn't
know
the
Windows
kernel
at
all
and
I
still
don't
know
the
Windows
kernel.
B
So
even
if
someone
doesn't
want
to
commit
to
it
full-time
or
anything,
but
if
just
want
to
look
at
the
code
and
go
you
know,
maybe
you
should
call
this
function
on
that
function,
because
I
Windows.
This
has
a
lot
of
misinformation
out
there.
It's
hard
to
know
exactly
because
of
the
legacy
problem
now
XP
is
your
first
hit
right,
but
you
don't
do
XP
calls
anymore
Amy,
so
money
direction,
nobody
knowledge
in
direction.
B
Let's
pretend
that
that's
what's
happening,
who
knows
I
just
want
to
mention.
Also
Microsoft
have
Windows
10
developer
vm
disk
images
there
you
can
download,
come
in
90-day
license
and
Visual
Studio
installed,
because
if
this
project
had
to
start
with
me
downloading
windows,
installing
windows,
downloading
this
vicious
studio
and
then
installing
is
just
to
do
it
wouldn't
have
happened.
That's
the
straw
that
broke
the
camel's
back.
You
know
that
first
straw
well
bad
analogies
aside
anyway.
B
How
long
did
it
take
me
to
port
it
on
OS,
X
and
Windows?
Interestingly
enough,
actually
they
asked
answered
a
little
bit
differently.
I
found
there
were
sex
to
be
harder
to
port,
but
not
because
of
OS
X
fault.
Basically,
when
I
started,
I
didn't
know,
ZFS
and
I
didn't
know,
SPL
and
I
didn't
know
the
Apple
kernel.
So
there
was
three
unknowns
and
it
was
quite
hard
to
guess
where
the
solution
should
be
right,
whereas
with
Windows
I
knew
SPL
very
well,
because
I
wrote
most
of
it.
B
B
B
From
a
performance
perspective,
I
have
a
tested
it
on
Windows.
No,
not
really.
This
is
more
of
a
for
me.
It
was
a
proof-of-concept.
You
know
if
you'd
asked
me
why
I
can
give
you
a
pretty
long
answer
as
to
why
I
tried
to
pour
it
so
now,
I,
don't
know
how
it
performs,
but
it
does
okay
with
the
little
tests
that
I
do.
But
it's
hard
to
tell
when
it's
a
VM
and
Windows
is
always
updating,
so
yeah
all
right.
Any
other
questions.
B
B
A
B
The
OS
X
version
boot
or
availability
is
that
a
viable
option
and
we'll
encryption
come
to
OS
X.
As
for
booting,
there
are
quite
a
few
users
out
there
who
are
booting
with
the
Z
volume
and
yes,
there
are
ons
rather
well
and
we're
even
trying
to
make
it
compatible
enough
so
that
the
u.s.
X
installer
will
see
the
Z
volume
as
an
option.
But
again
there
are
some
hidden
things
that
we're
not
sure
what
Apple
did.
So
you
know
we're
fighting
there.
A
little
bit
asks
for
the
encryption.
That's
already
in
there.
B
B
Guess
I
wanted
to
challenge
myself.
I.
Think
most
people
here
kind
of
knew
that
it
could
be
done
in
that,
like
x3,
is
already
be
imported.
The
windows
and
x3
uses
the
same.
Vino.
Ops,
see
you
first,
it's
not
like
ZFS.
Has
these
advanced
secret
v
knobs
that
right?
So
in
that
sense,
it
could
be
done.
It's
more
of
our
question
of
perseverance
and
sanity.
B
I
didn't
know
if
I
could
do
it
right,
I
did
I
didn't
know
if
I
was
up
for
a
challenge,
but
you
know
I
wanted
to
try
so
I
just
started
and
see
how
far
I
could
get.
Basically
any
every
time
I
came
across.
Maybe
three
brick
walls
and
I
almost
gave
up
at
that
point,
but
you
found
a
solution
and
kept
going
as
for
whether
or
not
should
be
ported
I.
It's
not
really
something.
You
know.
I
want
to
touch
I.
You
just
want
to
see.