Pull to refresh

Comments 61

~60 000 000 строк кода, ~40 000 файлов, если читать 1 строчку за секунду 12 часов в день, можно прочитать все исходники за ~5 месяцев…
— Дети, что вы прочитали летом?
— Войну и мир!
— Петр Первый!
— Тихий дон!
— Исходники ядра Linux 3.10…
«Исходники ядра Linux. Краткое содержание»
я испугался у меня ссылка фиолетовая
… и нашел несколько багов, которые успешно продал. Мариванна, эта нефритовая указка — вам!
UFO just landed and posted this here
Ну не все же время читать! «Чукча не читатель — чукча писатель!»
Вы о себе — «Чукча»? :)
можно прочитать все исходники за ~5 месяцев…
Если читать по 2 строчки в секунду, то можно успеть.
Вы всерьёз думаете что можно читать с такой скоростью?)
UFO just landed and posted this here
Поэтому всё же нужно выборку по кол-ву символов, а не строк. Более значимый показатель выйдет имхо.
По количеству операторов и прочих содержательных элементов кода.
В первоисточнике всё же не «Тихий дон», а «Тихий Дон».

«Тихий дон» — это про итальянскую мафию что-то.
sysop@cdecl.ru0:58 (8 мин. назад)
кому: мне
Добрый вечер!

Не имея возможности написать на хабр, укажу на одну досадную ошибку в содержимом и попрошу Вас любезно переадресовать этот багрепорт по адресу.

habrahabr.ru/post/183560/ — Линус говорит о том, что ядро содержит 16 (шестнадцать) миллионов строк кода, а не шестьдесят, как указано в переводе. На видео в статье (06:03) отчётливо слышно "..is slightly bigger, we're about sixteen million lines of code", что подтверждается статистикой с ohloh (http://www.ohloh.net/p/linux).
Из-за этой досадной неточности продолжат появляться априори некорректные, но заплюсованные комментарии (к примеру — habrahabr.ru/post/185178/#comment_6439388).

www.youtube.com/watch?v=yVpbFMhOAwE — вот еще одно видео для подтверждения
«Поддержка ускорения декодирования видео с использованием аппаратного декодера UVD, встроенного в современные GPU AMD, была добавлена в [bold]DRM-модуль Radeon[/bold]»
Просветите пожалуйста, значит ли это, что в ядре используются блобы?
Или этот DRM-модуль от Radeon open source?
Вторая ссылка неактуальна (пересборка не нужна). В данный момент чтобы задействовать UVD в Raring нужно:
1. Собственно накатить ядро 3.10: kernel.ubuntu.com/~kernel-ppa/mainline/v3.10-saucy/
2. В /lib/firmware/radeon/ закинуть обновлённые прошивки для используемой видеокарты и добавить прошивку для UVD.
Обновлённые прошивки брать здесь: people.freedesktop.org/~agd5f/radeon_ucode/
Какие прошивки брать: wiki.gentoo.org/wiki/Radeon#Firmware
3. Обновиться из ppa:oibaf/graphics-drivers и установить libg3dvl-mesa (обновиться можно и из ppa:xorg-edgers/ppa но libg3dvl-mesa из Oibaf PPA всё равно понадобится).
Перезагрузитесь и проверьте вывод «dmesg | grep UVD» а так же vdpauinfo.

В Saucy должно будет работать из коробки.
В Gentoo проще:
1. Размаскировать свежий radeon-ucode и gentoo-sources.(пара строчек в /etc/portage/package.keywords с именами пакетов).
2. Обновить эти самые пакеты.
3. Собрать ядро через make && make install && make modules_install или genkernel all.
Вот поэтому и ушёл с ubuntu, что надоело каждые пол года красноглазить и разбираться с системой. А тут всё по накатаной идёт.
Вы говорите так, как будто поддержку декодирования видео в свободные драйвера каждые полгода добавляют.
Каждые пол года выходит новый релиз Ubuntu и есть два варианта: оставаться на старом софте, либо перетрясать репозитории на предмет возможности перехода на новую ветку, отключения ненужных и прочие радости апгрейда. Как показала практика, сторонних репозиториев накапливается достаточно много и не всегда их авторы быстро реагируют на новые версии Ubuntu.
В Gentoo у меня подключено всего три оверлея: для плеера Deadbeef, для java и для игр (в том числе Steam). И мне не нужно заботится подходят они или нет к моей системе. Они просто подходят.
Справедливости ради надо заметить, что при попытке собрать старый софт вылезают некоторые траблы с зависимостями. Бывает и наоборот, один из недавних моих примеров: при попытке собрать octave напоролся на то, что в зависимостях у него стоит любой cblas, но тот, что помечен стабильным слишком стар и тянет за собой еще eselect-blas, но это конфликтует с другим пакетом. В итоге пока не размаскировал новый cblas со сборкой были проблемы.
> либо перетрясать репозитории на предмет возможности перехода на новую ветку
Зачем это делать? Версия софтины в новой Ubuntu новее или такая же — всё нормально, она обновится вместе с дистрибутивом и будет работать. Версия софтины в новой Ubuntu старше, чем уже установленная из PPA — она не обновится и будет работать. Всё.
Не, конечно вы сейчас приведёте пример из разряда редких исключений, но вам такой же и для Генты привели.

> отключения ненужных
Она автоматом отключаются. Привет.
Не путайте Direct Rendering Manager и Digital Rights Management.
А можно поподробнее что именно добавлено? Это поддержка RDMA на iscsi клиенте?

Если я правильно понимаю RDMA то серверная часть iscsi не требует никаких специальных фишек — просто стандартный API для работы с RDMA. Это так?
> Можно запретить выполнять скрипты как программы — функционал запуска скриптов, содержащие путь к интерпретатору в заголовке "#!", теперь может быть собран в виде модуля ядра
Можно поподробнее или ссылку на описание?
Раньше функция load_script() была просто функцией в ядре системы, а теперь ее вынесли в отдельный модуль, который можно отключить.
Вот эта функция, если что:
Скрытый текст
static int load_script(struct linux_binprm *bprm)
{
const char *i_arg, *i_name;
char *cp;
struct file *file;
char interp[BINPRM_BUF_SIZE];
int retval;
if ((bprm->buf[0] != '#') || (bprm->buf[1] != '!'))
return -ENOEXEC;
/*
* This section does the #! interpretation.
* Sorta complicated, but hopefully it will work. -TYT
*/

allow_write_access(bprm->file);
fput(bprm->file);
bprm->file = NULL;

bprm->buf[BINPRM_BUF_SIZE — 1] = '\0';
if ((cp = strchr(bprm->buf, '\n')) == NULL)
cp = bprm->buf+BINPRM_BUF_SIZE-1;
*cp = '\0';
while (cp > bprm->buf) {
cp--;
if ((*cp == ' ') || (*cp == '\t'))
*cp = '\0';
else
break;
}
for (cp = bprm->buf+2; (*cp == ' ') || (*cp == '\t'); cp++);
if (*cp == '\0')
return -ENOEXEC; /* No interpreter name found */
i_name = cp;
i_arg = NULL;
for (; *cp && (*cp != ' ') && (*cp != '\t'); cp++)
/* nothing */;
while ((*cp == ' ') || (*cp == '\t'))
*cp++ = '\0';
if (*cp)
i_arg = cp;
strcpy (interp, i_name);
/*
* OK, we've parsed out the interpreter name and
* (optional) argument.
* Splice in (1) the interpreter's name for argv[0]
* (2) (optional) argument to interpreter
* (3) filename of shell script (replace argv[0])
*
* This is done in reverse order, because of how the
* user environment and arguments are stored.
*/
retval = remove_arg_zero(bprm);
if (retval)
return retval;
retval = copy_strings_kernel(1, &bprm->interp, bprm);
if (retval < 0) return retval;
bprm->argc++;
if (i_arg) {
retval = copy_strings_kernel(1, &i_arg, bprm);
if (retval < 0) return retval;
bprm->argc++;
}
retval = copy_strings_kernel(1, &i_name, bprm);
if (retval) return retval;
bprm->argc++;
retval = bprm_change_interp(interp, bprm);
if (retval < 0)
return retval;

/*
* OK, now restart the process with the interpreter's dentry.
*/
file = open_exec(interp);
if (IS_ERR(file))
return PTR_ERR(file);

bprm->file = file;
retval = prepare_binprm(bprm);
if (retval < 0)
return retval;
return search_binary_handler(bprm);
}
А в чём смысл запрещать выполнение скриптов, всегда же можно сделать /bin/sh script.sh и он выполняется даже без +x?
А с какими правами? Видимо, идея в том, чтобы закрыть дыру с правами на исполняемые скрипты.
В плане? Если есть права на чтение, то я что угодно смогу скормить sh. Конечно, есть варианты, когда есть на чтение, но нет на исполнение, но это экзотика какая-то. Ну и не понятно чем скрипты хуже чем ELF.
UFO just landed and posted this here
Я опечатался, имел ввиду разрешение на выполнение и запрет на чтение.
UFO just landed and posted this here
UFO just landed and posted this here
commit 2535e0d723e4d7723b030f39fb350e436bdb983f
Author: Josh Triplett <josh@joshtriplett.org>
Date: Tue Apr 30 15:27:44 2013 -0700

fs: make binfmt support for #! scripts modular and removable

Add a new configuration option CONFIG_BINFMT_SCRIPT to configure support
for interpreted scripts starting with "#!"; allow compiling out that
support, or building it as a module. Embedded systems running exclusively
compiled binaries could leave this support out, and systems that don't
need scripts before mounting the root filesystem can build this as a
module.

Signed-off-by: Josh Triplett <josh@joshtriplett.org>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
UFO just landed and posted this here
>Интегрирована разработанная и используемая в Google система Bcache
а вот это интересно
Отличные новости! Можно пересобирать ядро с новыми плюшками.
Ядро можно собирать компилятором Clang благодаря подготовленным проектом LLVMLinux патчам;

Надо попробовать свой calculate linux перевести на clang, по идее это должно нехило сократить время обновление мира. Но может есть уже такие?
Вроде как производительность проигрывает gcc пока.
Если не затруднит, поделитесь последним бенчмаркингом, а то все что находил от 11 года или старше.
Вот, например, майские тесты GCC 4.8.0 vs. Clang последних версий [фороникс, да]. Clang уже почти везде хорошо выглядит, но все еще сливает на OpenMP-кейсах.
Clang не поддерживает openMP вообще, surprise!
Ну вот поэтому и сливает, никакого surprise. Ничего, думаю, это ненадолго. ;-)
openMP это расширение стандарта. У Apple есть свой Grand Central Dispatch, так что появление openMP в clang маловероятно.
Ну я свои программы тестировал, там линейная алгебра в основном, было медленнее. Но это было с год назад где-то.
Уже совсем скоро мечта о Linux 3.11 станет явью…
Так у нас и не Windows, а то была ирония.
А на чем сам Торвальдс сидит? Федора, Убунту?
Хочется уже не только стабильное ядро, но и стабильный дистрибутив со стабильным DE…
На убунте постоянно скайп крашится ни с того ни с сего… и tray iconки через раз в углу отображаются :(
На виндовс все равно не променяю, но хочется все таки чтобы хотя бы такой примитив как notification area был нормально отлажен.
1. на убунте надо ставить скайп из партнёрского репозитория
2. надо ставить пакет skype
3. для работы индикатора скайпа надо установить sni-qt:i386

P.S. только недавно разбирался с братом почему у него скайп выбивает, он после арч линукса очень много делает вручную, хотя в убунте надо просто использовать нормальные репозитории.
Sign up to leave a comment.

Articles