Похожие на magist3rУстановка принтера Canon LBP-1120/810 в linux
exelens 24.01.2009 22:54

Tips & tricksСтруктура файловой системы Linux

Файловая система Linux, имеет строгую структуру директорий, каталогов.

В корневом / каталоге установленной системы Linux Ubuntu обычно содержаться следующие подкаталоги:

Полностью.
+ 4 -
4
24.03.2009 12:03

pashazzWindows 7: дорога в пропасть?

Привет, welinux. Это мой первый пост, и я хотел бы подумать вместе с вами, а у винды будущее-то есть?

По-моему оно выглядит весьма призрачно.

Давайте поговорим об этом?

+ -7 -
88
30.04.2009 07:50

exelensWindows 7 и Linux

Прошу высказывать адекватные мнения по следующему поводу:

На подходе Windows 7 и если поискать то можно скачать и посмотреть.

Я уже посмотрел её в виртуалке. Оценка твёрдая 4. (5 не могу так как оно от МС).



В целом впечатления положительные. На 4х ядерном интеле с 2мя гигами оперативы ей был выделен 1 гиг. Мучал больше часа. Смотрел устройство меню и панелей, диспетчер устройств и процессов, различные настройки...

Полностью.
+ -2 -
32
Guest007 08.06.2009 12:13

НовичкуОрганизация дискового пространства в Linux

Частенько у новичков в Линуксе возникают вопросы по поводу организации дискового пространства. Это естественно, если учесть отличия от ДОСовской модели. Нет священных C:\ и D:\ А что тогда есть? И как этим пользоваться?

Полностью.
+ 14 -
65
pluton 31.07.2009 19:42

НовичкуТекстовые процессоры с открытыми исходниками дают вам множество возможностей свободного выбора. Часть 2

Оригинал




Если вы похожи на большинство пользователей ПК, то для вас текстовый процессор — одно из критически-важных приложений. На стороне Linux программа текстовой обработки OpenOffice.org Writer с недавнего времени получает множество внимания, частично из-за включения пакета OpenOffice.org на высокопроизводительных нетубках. Но фактически для Linux существуют много других текстовых процессоров, и некоторые из них легче, что позволяет использовать их на нетбуках, встроенных устройствах или на старых ПК, находящихся на вашем складе.

В первой части нашей серии статей о текстовых процессорах для Linux мы немного посмотрели на самые известные open source предложения: OpenOffice.org; альтернативный текстовый процессор с полным набором фич AbiWord; и три других программы, заточенные для специальных целей: KWord, LYX и e:doc.

Теперь мы переходим к следующим пяти записям в open source категории Linux. EZ Writer — дедушка всех их. Другие четверо в этой части — Ted, FLWriter, WordGrinder и EZ Word.

В противоположность к проприетарным текстовым процессорам для Linux — StarOffice и более новый ThinkFree, например, — эти open source программы являются свободными и бесплатными.



Ted

Поддерживаемые платформы: Linux и другие ОС Unix.



Если вы купили новый нетбук с Linux, такой как Dell Inspiron Mini 10 или HP Mini 100 Mi Edition, то на установлен OpenOffice.org Writer. Тем временем, китайский производитель HiVision прошлой осенью выпустил нетбук с Linux за $98, в котором установлен AbiWord.

Но некоторые пользователи предпочитают более лёгкие текстовые процессоры — для сохранения места, увеличения производительности или просто потому, что они не хотят или им не нужно множество воображаемых возможностей.

Хотя Ted меньше, чем Writer и AbiWord, в нём есть множество фич, его легко использовать, и он совместим с Micro$oft Word. Разработанная Mark de Does, многоязычная программа была выпущена как текстовый редактор — больше похожая на Micro$oft WordPad, чем на Word. По отзывам пользователей de Does исправил баги и добавил больше возможностей.

Ted содержит встроенную проверку правописания, но эта функция не надоедает вам при печати. Другие фичи — выравнивание текста, множество шрифтов, поддержка заголовков, колонтитулов и таблиц. Вы также можете найти и заменить текст, добавить в документ границы и тени параграфов, вставлять картинки, гиперссылки и закладки.

Хотя Ted не работает в Windows, он специально разработан для достижения большой совместимости с Windows. Вы можете сохранять документы в формате Windows .RTF для последующего использования в Windows. Ted также может быть настроен для чтения форматированных писем, отправленных с машины Windows к Linux или Unix.

Исходники лицензированы под лицензией General Public License (GPL), бинарные файлы упакованы в архивы RPM и tar.gz. Бинарники статически слинкованы с библиотеками Motif, что означает, что вам нет необходимости устанавливать эти проприетарные библиотеки для запуска Ted.



FLWriter

Поддерживаемые платформы: Linux и другие ОС Unix.



В имени FLWriter, буква «F» означает «Fast» (быстрый), а «L» — «Light» (лёгкий). Несмотря на начальное намерение, этот маленький WYSIWYG (what-you-see-is-what-you-get; что вы видите, то и получите <при печати>) текстовый процессор уже не разрабатывается несколько лет. Он был присвоен конкурентами.

Из-за остановки развития FLWriter, проект Damned Small Linux (DSL) удалил программу из своих дистрибутивов в пользу Ted в 2006 году. Последняя версия FLWriter была выпущена для XD640, сейчас практически исчезнувшем проекте создания десктопа с разрешением 640 на 480 для старых ПК.

FLWriter использует UTF-8 XHTML в качестве нативного файлового формата. Поддержка формата, однако, был добавлена в библиотеку FTLK, так что вам не нужна отдельная библиотека для запуска программы.



WordGrinder

Поддерживаемые платформы: Linux, другие ОС Unix, Windows и OS X.



Сейчас в состоянии бета, WordGrinder недавно наслаждается большим вкладом в разработку от сообщества Puppy Linux.

WordGrinder — текстовый процессор, настойчиво называемый его автором David Given не WYSIWYG процессором. «Тут нет принципа навёл мышь и кликнул. Это не десктопная программа. Это не текстовый редактор. Он не поддерживает разные шрифты и едва поддерживает стили. Он разработан для написания текста. Он уходит с вашего пути и позволяет вам печатать» — так написано в онлайн документации.

Исходник содержит всего 6300 строк кода, при этом эта миниатюрная программа поддерживает юникод, интуитивную систему меню, настраиваемые горячие клавиши, определённое количество символов и стилей, импорт и экспорт HTML, и экспорт в LaTeX и Troff.



Pathetic Writer

Поддерживаемые платформы: Linux и другие ОС Unix.



Pathetic Writer — часть догосрочного пакета Siag Office, вместе с электронными таблицами Siag, анимационной программой Egon, файловым менеджером Xfiler, текстовым редактором Sed Plus и просмотрщиком PostScript документов Gvu.

Сам по себе Pathetic Writer — простой, но достаточно заврешённый текстовый процессор, поддерживающий такие функции, как стили, разные шрифты, простое форматирование и сортировку по столбцам и строкам. Его тулбар предлагает иконки для открытия и сохранения файла, при этом много других функций являются командными.

Тем не менее, этот X-текстовый процессор предлагает большие возможности настройки (как минимум, если вы знаете, что с этим делать). Люди, знакомые с языками программирования Scheme, Ruby, Python, Guild или Tcl, могут легко создать расширения, чтобы Pathetic Writer делал именно то, что им нужно.

Pathetic Writer поддерживает RTF для обмена файлами с Micro$oft Word. Больше того, внешние конвертеры, например, Carolan McNamara's WV, могут использоваться для чтения документов множества сторонних программ.

Хотя PW закопирайтен его автором, Ulrick Eriksson, он доступен всем для использования бесплатно.



EZ Word

Поддерживаемые платформы: Linux и другие варианты Unix.



EZ Word — текстовый процессор, который менее всего вероятно установлен на ПК любого типа сегодня. Но хорошо знать о нём, как минимум с исторической точки зрения.

Оригинально разработанный как часть Andrew User Interface System (AUIS), проекта исследования пользовательского интерфейса в IBM, совместно с Carnegie Mellon University, EZ Word был самым первым графическим текстовым процессором, доступным для Linux.

Несмотря на его имя (EZ схоже по звучанию со словом easy (лёгкий) — прим. пер.), EZ Word никогда не был лёгким для использования людьми. Если вы не учились использованию EZ Word десять лет назад, то вам, возможно, не захочется начинать учиться сейчас. Хотя программа все ещё доступна под лицензией BSD, она не обновлялась после релиза версии 8.0 в 1997 году и баги в ней все ещё есть.



В следующий раз



Если у вас есть деньги для текстового процессора под Linux, будет ли это стоящим вложением? В следующей статье мы начнём рассматривать некоторые проприетарные текстовые процессоры, которые сейчас доступны для несвободной загрузки.



Автор оригинальной статьи: Jacqueline Emigh

Оригинал



ps от переводчика: принимаются замечания по поводу перевода. за ваши сломанные лексические парсеры ответственности не несу :)
+ 9 -
2
mirivlad 07.09.2009 04:48

Я рекомендуюЛ.Торвальдс, Д. Даймонд Just For Fun

Кто-то называет его фриком, кто-то хакером, кто-то просто - БОГ. Но все мы знаем что без этого человека не было бы того, ради чего мы все собираемся здесь, не было бы OS Linux. Можно спорить, можно мило улыбаться, но факт остается фактом - он тот, кто смог. В то время как остальные просто чесали языками в конференциях и рассылках.

Я очень рекомендую к прочтению книгу указанную в теме. В ней очень просто и понятно описано - как появился Linux, и как ко всему этому относился и относится Торвальдс. Факты создания Linux и биография Линуса тесно переплетены в книге, это не роман, но и не сухая статья из энциклопедии. Читать интересно и познавательно. Тем более что половина книги написана именно Линусом.

В общем хватит разводить демагогии - читайте тут - http://www.lib.ru/LINUXGUIDE/torvalds_jast_for_fun.txt
+ 5 -
11
Username 27.09.2009 14:56

ОпросыИгры вы запускаете:

нативные 50
wine 20
+ 0 -
17
digiwhite 23.10.2009 22:56

НовичкуКраткий перевод описания стандарта иерархии файловой системы Unix-like ОС (Часть 1)

Наткнулся тут недавно на описание стандарта иерархии файловой системы для Unix подобных систем.
Крайний стандарт датируется 29 января 2004 года и обозначен версией 2.3. Решил вот его немного перевести и чуть ужать. Собственно небольшая первая часть.
Полностью.
+ 9 -
11
Sinner 19.12.2009 18:29

Есть вопрос!Кросскомпиляция

Не подскажет ли почтенный all как имея gentoo amd64, собрать некоторый пакет под x86 архитектуру?
+ 2 -
12
m039 03.02.2010 15:20

CodingКопаимся в системе веселья ради - Системеный вызов Welinux


Часть первая. Появление собственного системного вызова.

Сначала, что же такое системный вызов ядра? Хм.. ну скажем так, есть функции С библиотек, они достаточно абстрактны, например функция puts или printf являются оболочкой и используют системные вызов ядра(write), с соответствующими параметрами. А что делает системный вызов.. хм.. их много, и все они достаточно разношерстные, для ознакомления мне нравится вот эта pdf-ка .

Заметка: можете использовать такие команды как ltrace и strace для анализа и удостоверения, что у системного вызова есть номер.

Сам по себе системный вызов это функция, но немного по особому определенная. А так как задача заключается в изменении её, приведу листинг написанный на коленке, который поможет вспомнить синтаксис сишника:
refresh_memory.c:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#include &lt;stdio.h&gt;

static int my_precious = 0;

long welinuxing(int a){
	return my_precious += a;
}

long welinuxing_new(int a){
	return my_precious -= a;
}

long (* welinuxing_current) (int);

int main(){
	welinuxing_current = welinuxing;
	printf("Yeah.. now it is %d\n", welinuxing_current(10));
	welinuxing_current = welinuxing_new;
	printf("Yeah.. now it is %d\n", welinuxing_current(1));
	return 0;
}


Хм.. это.. а всё таки как написать системный вызов? И встроить его в ядро? Гугл ответил вот такой вот пдф-кой . , но в ней также есть информация как скомпилировать ядро под .. ubunty.

Заметка: Хочу посоветовать, что лучше все-таки это безобразие вытворять на виртуальной машине. Там все скомпилируйте. А если используете virtualbox, то советую настроить общие папки(share folders). Но с этими папками не всё гладко, компилировать ядро не получиться в этой папке, потому что оно не понимает что такое символические ссылки. Поэтому можно настроить либо nfs, если хотите что бы файлы компиляции находились на хостовой машине.

Итак, что бы добавить в само ядро новый системный вызов нужно: добавить в таблицу системных вызовов(о ней далее) указатель на новый системный вызов(банально - функцию) и определить где-то этот системный вызов(функцию). А потом все это слинковать. Исправлять файлы в includes не нужно. Хотя если делаем системный вызов Welinux, то не плохобы напомнить всем, что мы зарезервировали себе номер..

Таблица системных вызов, это массив в котором содержится указатели на функции. Открываем lxr и находим эту таблицу по названию sys_call_table

Ой, чуть не забыл, тут уже пошел ассемблер, а не сишник. Немного поясню, ".long <>" это равносильна сишному "long <>". Но сам не до конца всего знаю, поэтому далее интересуюсь, что значит макрос ENTRY , а вот оно:
1
2
3
4
5
6
7
#ifndef ENTRY
#define ENTRY(name) \
  .globl name; \ 	//  символ станет доступен для линковки вне файла.
  ALIGN; \ 		// если посмотрите выше , то уведите определение. Это выравнивание по 4 байта (для x86), где свободные места будут заполнены ассемблерной вставкой 0x90(nop - no operation)
  name:
#endif
#endif /* LINKER_SCRIPT */


Для тех, кто делает все в голове получим вот такую штуку в конце манипуляций. Т.е. в конце всех манипуляций будет приведено к виду:
1
2
3
4
5
6
7
 
.globl sys_call_table
.align 4,0x90
sys_call_table:
        .long sys_restart_syscall       /* 0 - old "setup()" system call, used for restarting */
        .long sys_exit
...


Долго искал, что значит 0x90, вроде бы в глаза бросается, что это nop, но до конца не был уверен. Ответ нашел на сайте .

Итак, теперь немного воочию убедились, что есть такая таблица. Осталось добавить свой системный вызов и прилинковать его. Можете для начала поискать в lxr определение системных вызовов, вот например этот sys_getpid вызов не такой уж сложный. Но попробуйте его найти, не заглядывай в спойлер. Я чтот много времени потратил искамши :(

Пишем системы вызов welinux. (Большей частью руководствуясь pdf-кой):
Для это создаем папку в корне исходников линукса.
Помещаем в неё исходники wl.c и Makefile.
wl.c:
1
2
3
4
5
#include &lt;linux/linkage.h&gt;
static int my_precious = 0; // Копилка рейтинга.. 
asmlinkage long sys_welinuxing(int a){
	return my_precious += a; // Возможно надо было сделать "+1", а не "а"
}

Makefile:
1
obj-y := wl.o


Потом изменяем главный Makefile:
Строчку:
1
core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ /block

На:
1
core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ /block  welinux/


Ох-хо-хох, забыл добавить в таблицу системный вызов. Добавляем в конец файла "arch/x86/kernel/syscall_table_32.S" строчку ".long sys_welinuxing". И главное запоминаем номер под котором он идет! У меня виртуалка 6.26, номер будет 327.
Заметка: есть соглашение по поводу названий, т.е. sys_* предшествует названию системного вызова, но практически можно оставить любое название, которое придет на ум.

Усё, компилируем и запускаем ядро. Первый этап пройден. :)

Часть вторая. Захватываем мир.

Теперь можем поиграться с новым системным вызовом.
Для начало узнаем как прошли дела с компиляцией:
1
grep welinux /boot/System.map

Или:
1
grep welinux /proc/kallsyms


Выдало "c0211db8 T sys_welinuxing", что означает, что адрес нашей функции в ядре 0хc0211db8.

Тестируем вот такой вот исходничек:
1
2
3
4
5
6
7
8
#include &lt;unistd.h&gt;
#include &lt;stdio.h&gt;
#define __NR_mycall 327

int main() {
	printf("Мой рейтинг равен %d\n", syscall(__NR_mycall, 1));
	return 0;
}


Ну вы уже должны знать, что должно произойти. Уфф.. на данный момент системный вызов должен работать.

Часть третья. Люто бешено минусуем

Теперь переходим к 3му этапу написанию модуля ядра.
Создаем где угодно папку и помещаем туда 2 файла:
1
2
3
4
5
6
7
8
Makefile
obj-m += w.o

all:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

Первый вариант w.c:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include &lt;linux/module.h&gt;
#include &lt;linux/init.h&gt;
#include &lt;linux/kernel.h&gt;


static int example_init(){
	printk(KERN_ALERT"W: init\n");
	return 0;
}

static void example_exit(){
	printk(KERN_ALERT"W: exit\n");
}

module_init(example_init);

module_exit(example_exit);


После чего убедитесь в том, что система в состоянии скомпилоровать модули. Это я жестко опущу

А теперь вы уже может быть догадались, что у нашей таблицы(sys_call_table) есть свой адрес. Делается той же коммандой:
1
grep call_table /proc/kallsyms

Вывод:
"c042a86c R sys_call_table"

Теперь изменяем наш модуль на вот такой вот:
w.c:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#include &lt;linux/module.h&gt;
#include &lt;linux/init.h&gt;
#include &lt;linux/kernel.h&gt;
#include &lt;linux/linkage.h&gt;

long * welinuxing  = 0xc042a86c + 4 * 327;

static int example_init(){
	printk(KERN_ALERT"W: init %lx\n", *welinuxing);
	return 0;
}

static void example_exit(){
	printk(KERN_ALERT"W: exit\n");
}

module_init(example_init);

module_exit(example_exit);


Ну как, тот же адрес вывела на экран, как если бы использовали функцию "grep welinux /proc/kallsyms"?

А теперь попробуем из самого ядра вызвать эту функцию с помощью, этого файла:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include &lt;linux/module.h&gt;
#include &lt;linux/init.h&gt;
#include &lt;linux/kernel.h&gt;
#include &lt;linux/linkage.h&gt;

asmlinkage long (* welinuxing)(int);

static int example_init(){
	welinuxing =  *((long *) (0xc042a86c + 4 * 327));
	printk(KERN_ALERT"W: init %ld\n", welinuxing(10));
	return 0;
}

static void example_exit(){
	printk(KERN_ALERT"W: exit\n");
}

module_init(example_init);

module_exit(example_exit);


А теперь подменим её:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include &lt;linux/module.h&gt;
#include &lt;linux/init.h&gt;
#include &lt;linux/kernel.h&gt;
#include &lt;linux/linkage.h&gt;

#define pWelinux (long *) (0xc042a86c + 4 * 327)

asmlinkage long (* welinuxing_old)(int);

asmlinkage welinuxing(int a){
	return welinuxing_old(-a); // Кто хочет тщеславия, можете заменить на "a * 9000" 
};

static int example_init(){
	welinuxing_old =  *(pWelinux);
	*(pWelinux) = welinuxing;
	printk(KERN_ALERT"W: init\n");
	return 0;
}

static void example_exit(){
	*(pWelinux) = welinuxing_old;
	printk(KERN_ALERT"W: exit\n");
}

module_init(example_init);

module_exit(example_exit);


Теперь вставляя один модуль, мы управляли системным вызовом которым мы сделали.
Уфф.. закончил. На самом деле писать это кажется гораздо дольше чем делать, но думаю что кому-нибудь веселье доставить такой подход.

Из оставшихся вопросов:
Как отследить, то что произошло изменение ядра и старый системный вызов стал уже не тот.
Говорят, что есть динамическое создание системных вызовов.
Научить системный вызов генерировать прерывания, следовательно создать свой обработчик.
Полностью.
+ 8 -
7
1 2 3 4 5 6 7 8 42 43