Watching Netflix on FreeBSD


#1

Firefox has dropped the support for npapi plugins and the pipelight project is dead, so how is a FreeBSD user supposed to watch Netflix now? Is it possible to install the linux chrome binary under the linux64 compatibility layer? I know that installing the closed-source chrome binary would allow me to watch Netflix on FreeBSD, but I have no idea how to install it. Can you please give me very detailed instructions on how to install it? Thank you in advance.


#2

Ditto. I’ve considered running a bhyve vm in graphical mode with linux inside it, not sure that would work though as presumably the emulated graphics h/w will not be HDMI compatible and therefore netflix wouldn’t be able to decrypt data. I’d contribute to a patreon or similar subscription for somebody to figure this out and maintain it over time. Currently I reboot to linux most days to netflix.


#3

The sad reality is that Netflix runs on FreeBSD (as in the servers) but you cannot watch Netflix on FreeBSD (as in movies on the website) :frowning:


#4

IRONY

With that said, I don’t use Netflix. I used to do the unlimited plan 5 at a time, back in 2001 (WOW that was 16 years ago)
and it came with online streaming that at the time nobody really used. Then they had the bright idea of splitting the services and taking away my streaming, that I rarely used but was nice to have on occasions though. I dropped them, and never looked back. I now just do RedBox.

Netflix is a corporation and corporations do one thing. Make money, if not being on FreeBSD still makes them a ton of money they will continue to do so, the only way we can change how a corporation does business is by not giving them any of our money until they realize that it would be in their interest to give the consumers what they want.


#5

I’ve not tried Linux Chrome under TrueOS yet but I have tried installing linux-firefox and linux-flashplayer from the TrueOS repos but Firefox fails to start with the error:

Sandbox: unexpected multithreading found; this prevents using namespace sandboxing.


#6

I wouldn’t bother trying to get Chrome to work with the CentOS 6 libs. Firstly, Chrome v58 is the last version that is supposed to run under COS6. That’s because Chrome 59 switched to GTK3 which isn’t in the C6 repos so it looks like we’ll have to try with the CentOS 7 libs instead. I’m surprised that no GTK Linux libs are in the TrueOS repos! I hear it’s quite popular :wink:

I installed the required libs to get Chrome ( google-chrome-stable-58.0.3029.110-1.x86_64.rpm ) running but eventually I got this error:

./chrome: /lib64/libstdc++.so.6: version CXXABI_1.3.5' not found (required by ./chrome) ./chrome: /lib64/libstdc++.so.6: versionGLIBCXX_3.4.15’ not found (required by ./chrome)
./chrome: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.14’ not found (required by ./chrome)

So the CentOS 6 glibc version is too old to run Chrome 58. :frowning:

I wonder why the Linux FireFox build in the TrueOS repos is still using C6? Is CentOS 7 compat. not quite ready to be widely used yet?


#7

I’ve had a quick go at getting Linux Chrome to run with the C7 libs but there are not suffient libs within the TrueOS linux-c7 metapackage to get it running. It looks like the easiest way to get Linux Chrome running under TrueOS currently is to install CentOS 7 in a (Virtualbox) VM, install Chrome to get all the extra libraries required without lots of hassle and then copy them into /compat/linux.

Here’s where I got up to (running the following as root):

pkg install linux-c7 rpm4
mkdir -p /var/lib/rpm
/usr/local/bin/rpm --initdb
cd /compat/linux/
rpm2cpio < /home/dan/Downloads/google-chrome-stable-59.0.3071.115-1.x86_64.rpm | cpio -id
brandelf -t Linux /compat/linux/opt/google/chrome/chrome

When you try to run Chrome:

ELF interpreter /lib64/ld-linux-x86-64.so.2 not found, error 2
Abort

#8

So, you haven’t succeeded in getting chrome running outside the VirtualBox?
It’s not possible to make it run under the linux-c7 compatibility libraries?


#9

Hi Oleg

It could be possible - I just got bored! :slight_smile:

When trying to run Chrome 58 with linux-c6 libs, I think I had to install 3 extra libs (outside of linux-c6) to get Chrome to almost run but nothing as fundamental as ld was missing. When I saw ld was missing from linux-c7, I immediately gave up and became concerned about how many other libs would be required. It could well be that I only need ld and a few more to make it run but it could also be that another 10/20 additional libs are required - Chrome is one of the biggest, most bloated apps out there of course!


#10

When I ran the command /compat/linux/opt/google/chrome/chrome , I got this
output:

prctl(PR_SET_DUMPABLE): Invalid argument
Could not drop privileges: Invalid argument
Read on socketpair: Success
Trace/BPT trap (core dumped)


#11

I installed the linux-c7 compatibility libraries before I ran that command.


#12

When I have tried to get Linux applications to work on FreeBSD before I found that ldd is a good command for getting a list of libraries that it needs (at least at start time). Then, you can plan your attack for getting the missing rpms.

This strategy worked for Master PDF Editor, but fell short for Mendeley Desktop—it started but fell down somewhere talking to their servers.

That said, I’ve never even tried to get Chrome for Linux working. Hats off for trying.


#13

Don’t forget to run

brandelf -t Linux /compat/linux/opt/google/chrome/nacl_helper

Run brandelf on any Linux ELF binaries included with Chrome.


#14

If I run this command: /compat/linux/opt/google/chrome/chrome --disable-gpu
–no-sandbox , the I get this output:

[31038:31038:0718/113800.284225:ERROR:nacl_fork_delegate_linux.cc(316)] Bad
NaCl helper startup ack (0 bytes)
[31037:100201:0718/113801.597261:ERROR:address_tracker_linux.cc(155)] Could
not create NETLINK socket: Address family not supported by protocol
[31037:100201:0718/113801.601477:ERROR:file_path_watcher_linux.cc(254)]
inotify_init() failed: Function not implemented
[31037:101322:0718/113801.716712:ERROR:bus.cc(422)] Failed to connect to
the bus: Did not receive a reply. Possible causes include: the remote
application did not send a reply, the message bus security policy blocked
the reply, the reply timeout expired, or the network connection was broken.
[31037:31037:0718/113802.572547:ERROR:proxy_config_service_linux.cc(954)]
inotify_init failed: Function not implemented
Trace/BPT trap (core dumped)


#15

Looks like we’re out of luck then. It seems Chrome depends on a unimplemented syscall in the Linuxulator.

Its a shame as Chrome is the #1 most popular non-free Linux app. Maybe file a bug upstream after testing the problem exists under FreeBSD head too?


#16

I ran those commands on 12-CURRENT.


#17

In that case I’d recommend you file a kernel bug at bugs.freebsd.org


#18

If they haven’t implemented inotify_init by now, then I doubt they’ll do
that in the future.


#19

There is at least one shim between inotify and kqueue. I’ve never tested it, but it probably works for some situations. The real issue is that inotify actually works on paths not inodes and kqueue works on file descriptors. Bryan Cantrill has a small rant about the issues with inotify (starting with dnotify).

It’s not impossible to implement, it’s not trivial. Though it may be worthwhile to see what Illumos does.


#20

Bryan Cantrill is a very good public speaker. Love his talks.