Windows subsystem for Linux

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Обновил на днях свой десктоп, поставил 10ку, пробую Linux Windows subsystem.

Когда работаешь в консоли - это обычная Ubuntu 14.04 trusty. Только докер не работает, конечно, а в остальном эффект присутствия очень глубокий.

Добавил репозитории, поставил библиотеки, как обычно.
apt-get update
apt-get upgrade

wget http://www.dotdeb.org/dotdeb.gpg
sudo apt-key add dotdeb.gpg

wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key

rm nginx_signing.key dotdeb.gpg

echo '
deb http://packages.dotdeb.org jessie all
deb-src http://packages.dotdeb.org jessie all

deb http://nginx.org/packages/ubuntu/ trusty nginx
deb-src http://nginx.org/packages/ubuntu/ trusty nginx
' >> /etc/apt/sources.list

apt-get update

apt-get install make libcurl4-openssl-dev libbz2-dev libxml2-dev libfreetype6-dev libxslt1-dev \
libmcrypt-dev memcached libmemcached-dev libmagick++-dev libgraphicsmagick1-dev \
node-less

Как обычно, собираю себе php из исходников - свеженький 7.1.1
'./configure' \
'--prefix=/usr/local' \
'--with-config-file-path=/usr/local/etc' \
'--with-mysqli=shared' \
'--with-pdo-mysql' \
'--with-bz2=shared,/usr/lib' \
'--enable-bcmath=shared' \
'--with-curl=shared' \
'--with-freetype-dir=/usr' \
'--with-png-dir=/usr' \
'--with-gd=shared' \
'--enable-gd-native-ttf' \
'--with-jpeg-dir=shared,/usr' \
'--with-openssl' \
'--with-zlib' \
'--enable-mysqlnd' \
'--with-layout=PHP' \
'--with-xsl=shared' \
'--with-iconv=shared' \
'--with-pear' \
'--with-mhash=shared' \
--enable-mbstring \
'--disable-exif' \
'--disable-ftp' \
'--disable-sockets' \
'--disable-sysvsem' \
'--disable-sysvshm' \
'--disable-shmop' \
--enable-fpm \
--enable-debug

В отличие от виртуалок, make по ядрам масштабируется как надо.
root@USER-PK:/usr/src/php-7.1.1# make clean
...
root@USER-PK:/usr/src/php-7.1.1# time make -j 4
...
real 4m33.903s
user 2m27.719s
sys 15m57.078s
# make clean
# time make -j 8
...
real 3m58.379s
user 3m26.891s
sys 20m54.500s
на моем Core i7 при 8 потоках диспетчер показывает 100%, проц разогревается до 86, и вентилятор включается на полную, а на 4х потоках - только до 75
Процессы компиляции видны в диспетчере задач по отдельности под именем bash - что логично, это ж fork-и.

Конечно, можно поставить из ondrej/php.

С этими их systemctl, или что там под виндой, еще не разбирался.
 
Последнее редактирование:

флоппик

promotor fidei
Команда форума
Партнер клуба
А докер под винду и так нативно через Hyper-V работает ж.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
да, не лучшая виртуалка, которая откушивает оперативку большим куском, "Поддерживаются SMP до 4 ядер", и, видимо, имеет обычные для виртуалок проблемы с симлинками в шареных папках
 
Последнее редактирование:

флоппик

promotor fidei
Команда форума
Партнер клуба
Нет, не в виртуалке.
Docker for Windows requires 64bit Windows 10 Pro, Enterprise and Education (1511 November update, Build 10586 or later) and Microsoft Hyper-V.

Виртуалка больше не нужна, если винда 64бит, свежая, не хом едишн, и проц умеет Hyper-V.
 

Фанат

oncle terrible
Команда форума
Я попробовал недавно, узнал что tail -f не работает, и закрыл нафиг.
Для производительности я родной линукс возьму, а если под виндой запускать, то виртуалки за глаза. Там хотя бы все работает.
 

fixxxer

К.О.
Партнер клуба
Ну это пока очень сырая штука. Но то, что они смогли сделать fork() на винде, внушает (страшно даже подумать, как :)). Года через три, думаю, можно будет пользоваться полноценно (так же, как на маке).

Вангую, кстати, что теперь начнут появляться вирусы "для линукса", хехе. Вряд ли про WSL антивирусы вообще в курсе :)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Я попробовал недавно, узнал что tail -f не работает, и закрыл нафиг.
Для производительности я родной линукс возьму, а если под виндой запускать, то виртуалки за глаза. Там хотя бы все работает.
Что-то очень удивительное ты пишешь. Там пакеты обычной 14й убунты из обычных репозиториев. С патчами даже иксы работают.
Я щас не дома, но через пару часов могу записать видео.

Это не для prod. Я рассматриваю это как замену макбуку, который в том году пошел совсем не туда, и на котором аналогично не работает докер.
Линукс у меня на рабочем ноуте, удобно врубить докер с 10ю контейнерами, но домой нужна винда. DLNA, игры, цена, софт.

Виртуалка - да, если задачи позволяют.
Можно не ждать пока она запустится, просто открой консоль. Можно не перенастраивать виртуалку чтобы добавить оперативку, когда надо поработать с большой базой. Осенью у меня виртуалка умерла когда место закончилось - просто не захотела больше загружаться.
А еще есть node.js - самая "дружественная" к виртуалкам технология. Каждый убил по несколько дней уже.
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
А нормальная консолька-то уровня iTerm для винды появилась, или как 10 лет назад через SecureCRT на локалхост? ;)

И, кстати, epoll() в wsl работает? Его полноценно реализовать, наверное, даже посложнее форка будет.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
какая-то родная консоль есть, но Shift-Ins сходу не работает - вставка через правый клик, как 20 лет назад :)
там какие-то настройки есть, не дошли руки еще

epoll - да, "but may not have all parameters supported"
235 / 384 syscalls implemented

еще года два таких коммитов - и тест posix пройдут
вот весело-то будет классификацию Unix переписывать!
 
Последнее редактирование:

grigori

( ͡° ͜ʖ ͡°)
Команда форума
По вопросам.
@Фанат,
root@USER-PK:~# tail -f /var/log/nginx/error.log
2017/01/24 00:54:30 [emerg] 159#0: bind() to 0.0.0.0:8080 failed (98: Address already in use)
2017/01/24 00:54:30 [emerg] 159#0: still could not bind()
2017/01/24 00:56:09 [notice] 169#0: signal process started
2017/01/24 01:11:01 [alert] 276#0: ioctl(FIOASYNC) failed while spawning "worker process" (22: Invalid argument)
2017/01/24 01:14:00 [notice] 319#0: signal process started
2017/01/24 01:14:07 [notice] 320#0: signal process started
2017/01/24 01:15:04 [alert] 323#0: ioctl(FIOASYNC) failed while spawning "worker process" (22: Invalid argument)
tail: неизвестный тип файловой системы 0x53464846 для «/var/log/nginx/error.log». Сообщите об этом в [email protected]. Возвращаемся к опросу.
то есть tail не знает про файловую систему типа rootfs, что неудивительно, но работает

@fixxxer, nginx запускается только в режиме master_process off, daemon off, но multi_accept on работает
с fpm общается по сокетам
на 127.0.0.1 сайт виден

думаю, это вопрос ближайшего времени, что в nginx запилят патч для этих урезанных условий, учитывая спонсорство microsoft
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
epoll - да, "but may not have all parameters supported"
235 / 384 syscalls implemented
Ну, вообще это довольно много, есть сисколлы типа fcntl (да или еполл тот же), которые по сути сто сисколлов в зависимости от флагов.
еще года два таких коммитов - и тест posix пройдут
Я так понимаю, что задача не только posix повторить (в котором, скажем, никаких еполлов нет), но и всю линукс-специфику вплоть до некоторого уровня бинарной совместимости. Это огого задачка-то.
nginx запускается только в режиме master_process off, daemon off, но multi_accept on работает
Если strace работает, можно посмотреть на чем валится, наверняка какой-нибудь не целиком реализованный сисколл.
 
Последнее редактирование:

MiksIr

miksir@home:~$
А кто знает, в докере который поверх этого майкрософтовского гипервизора, там на файловых системах fsnotify работает?
 

fixxxer

К.О.
Партнер клуба
@AnrDaemon, ну я виндой где-то в прошлом веке и пользовался. :) mintty, впрочем, нормально выглядит только на фоне дефолтной виндовой консольки, там даже табов нет.
 
Сверху