LINUX.ORG.RU

Сообщения Cupper

 

Порядок линковки библиотек

Форум — Development

Столкнулись со следующей проблемой. Есть софт который собирается с использованием (не даст бог соврать) 20 сторонних библиотек, половина из которых это один большой проект, еще часть это буст и еще пара своих, и это все хитроспелетено между собой.

И вот все это чуду перестало собирается после добавление пары новых библиотек (из другого проекта). По причине undefine bla bla bla.

Постепенно удалось восстановить последовательность библиотек при которой все слинковалось. Но вот проблемы, эта последовательность сделана руками из строки для компоновки которую создал CMaka. СMake создает избыточность в этой строке дублируя часть библиотек. Это я думаю все решаемо.

Хотелось бы узнать поподробней про процесс линковки теперь, почему вообще такая проблема появляется. Почему линковщик не строит граф зависимостей на лету и не вычисляет что после чего надо линковать. Ведь для него вся эта информация доступна из самих библиотек. Ведь под виндой такой проблемы нет, получается VS делает это.

Может есть отдельные софт которому можно скормить либы и он построит сей граф и визуально или как угодно покажет что от чего зависит ?

Cupper
()

Pimpl + const'анстность методов

Форум — Development

Набрел я в хабре на следующую статью Перевод статьи «Pimp my Pimpl», часть 2

А именно на проблемы константности методов. Обычный Pimpl

class A()
{
void some() {_a->some();}
void some() const {_a->some();}

class Impl;
Impl* _a;
}
Для обоих A::some вызовет не константный метод A::Impl::some(). Увидав предложенный в статье deep_const_ptr, Я подумал «а зачем ?» ведь в место него можно заюзать shared_ptr. И вот тут меня настигло разочарование
    T * operator-> () const // never throws
    {
        BOOST_ASSERT(px != 0);
        return px;
    }

    T * get() const // never throws
    {
        return px;
    }

единственный вопрос, ПОЧЕМУ ? почему не

    T * get() // never throws
    {
        return px;
    }

    const T * get() cnost// never throws
    {
        return px;
    }

Cupper
()

как устроен Mutex, Event

Форум — Development

Случилось мне задуматься на тему того как происходит ожидание заблокированного мютекса. И я понял что понятие не имею.

С дурости предположил что он в цикле опрашивается до тех пор пока isLocke != false. Но сразу понял что это полная глупость.

Может кто на пальцах объяснить принцип работы мютекса в ядре. И уж коли начал, то тоже на счет событий... как происходит так что мы узнаем о том что событие произошло. Ну хотя бы банально на примере condition_variable wait() и notify_one notify_all.

Cupper
()

file_mapping and fread

Форум — Development

Значит, есть у меня класс обертка над boost'ким file_mapping (memmty mapped file), и есть к ней тесты.

Одни из тестов проверяет следующую логику: 1. файл маппиться в средствами boost

file_mapping mmfile(filename.c_str(), read_write);
MMFile file(&mmfile, 1);
MMFile предоставляет удобный способ работы c mapped_region, в виде read, write, seek, tell (полные аналоги fread,....).

2. открываю этот же файл fopen как readonly

3. через MMFile.write я делаю запись, что грубо говоря сводиться к memcpy в текущий спамленный регион.

4. через fread и считываю эти данные. И вот тут происходят казусы типа считанные fread данные могут быть просто нулями (хотя fread возвращает что было считано столько сколько нужно), или что часть данных как нули и другая нормальная.

В начале это казалось просто чем то фантастическим, потому что у меня первая пара действия возвращает нормальные данные, вторая возвращает нули... но после 2-х часов упорного тестирования до меня начала доходить следующая мысль:

file_mapping отображает память ядра в юзерспейс, тем самым избегая одного этапа копирования. А вот fread как раз в начале копирует данные из ядра в юзерспейс а потом только отображает в пространство процесса. И что возможно данные после определенного memcpy не успевают с копироваться в userspace для fread.

Но тогда для меня странно что на винде например этот тест проходит, а на лине нет. И что например при следующий действиях именно такое поведение:

mmfile = file_mapping(file);
region_ = mapped_region( mmfile, read_write, 0, windowSize_ );
file = fopen(file, "r");

memcpy(data, dest, len);
fread(dest, 1, len); // тут у нас данные целиком

memcpy(data, dest, len);
// если тут вставим memcpy(dest, readBuf, len) то следующая fread уже считает реальные данные вместо нулей
fread(dest, 1, len); // тут у нас уже вместо данных нули

проверить это в тестировании явно не получается, потому что в одном случае данные не нулевые, в другой нулевые, в третьем их только половина. А разница между кейсами нету, просто меняем порядок и количество операций.

Из документации буста, и это явно не уловил возможно там этот «ненормальный - попытка работать с файлом одновременно как с MM и fopen» кейс просто не указан.

Cupper
()

[gdb] не ставится бряк

Форум — Development

У меня проект состоит из десятка cpp файлов, каждый собирается в свой обжект, потом в общий bin. Структура папок примерно следующая:

./mybin
./CMakeFiles/*.o
./../../src/*.cpp
Запускаю из ./
gdb mybin
делаю
symbol-file CMakeFiles/needed.o
list
показывает нужные сорцы делаю
info line TestFunc
показывает функцию. Делаю
b 17
// Cannot access memory at address 0x16
b needed.cpp:17
// Cannot access memory at address 0x16

не могу понять что делаю не так :(

PS. да я даже просто b по умолчанию не могу поставить, пишет «No default breakpoint address now»

 

Cupper
()

[bash] случайный выход из цикла

Форум — Development

читаю построчно файл и на каждой итерации должен выполнять некую операцию по ssh на другой машине (на локальной машине). И так вот сегодня появилось не знаю как назвать иначе «не объяснимое поведение»

while read line ; do
	echo $line
	ssh user@127.0.0.1 "echo"
	echo "-----"
done < file.txt

в file.log больше одной строки. Но нданный цикл отрабатывает только одну итерацию для самой первой строки.

если убрать вызов ssh то цикл ровно столько раз сколько строк в файле.

Я понятие не приложу, как вызов ssh приводит к завершению работы цикла, притом выход происходит не сразу после того как отработает ssh, а благополучно дойдет до конца цикла, и не войдет в следующую итерацию.

ssh настроен по открытому ключу поэтому пароль не запрашивается.

 

Cupper
()

Выбор ноутбука

Форум — Linux-hardware

Знаю, была на форуме аналогичная тема. У меня потолок много меньше и мне не хватит даже на thinkpad L серии. Потолок 25к. Парметры:

проц i3 370M - 380M

видюха - самая большая проблема. Нужна не игровая но для комфортного full HD.

монитор - 14"

остальное уже вообще роли не играет.

теперь собстно к проблеме с видюхой. Запугался я до полу смерти это темой. Optimus неработает, вывод современный бук с Nvidia сразу отпадает. intel HD - эм... даже не смешно. Остается только ATI которая у кого то заработала, у кого то нет, у кого то с косяками... в общем русская рулетка.

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

Cupper
()

[Cmake] список поддиректорий

Форум — Development

В общем стоит тривиальная задача, пройтись по списку директорий и сделать там какие то действия. Проблема именно с тем что бы пройтись по директориям. В гугле вообще почти ничего нету на эту тему, а то что есть либо неработает, либо опять не то.

И так своял следующее

SET (CMAKE_SOURCE_BIN_DIR ${CMAKE_SOURCE_DIR}/resource/bin)
MESSAGE(STATUS "CMAKE_SOURCE_BIN_DIR = " ${CMAKE_SOURCE_BIN_DIR})
FILE (GLOB LISTS_BIN_DIR RELATIVE ${CMAKE_SOURCE_BIN_DIR} *)
MESSAGE(STATUS "LISTS_BIN_DIR = " ${LISTS_BIN_DIR})
FOREACH (BIN_DIR ${LISTS_BIN_DIR})
	if(IS_DIRECROTY ${CMAKE_SOURCE_BIN_DIR}/${BIN_DIR})
		if (WIN32)
			file(GLOB BIN_FILES ${BIN_FILES} ${CMAKE_SOURCE_BIN_DIR}/${BIN_DIR}/win/*.bat)
		else (WIN32)
			file(GLOB BIN_FILES ${BIN_FILES} ${CMAKE_SOURCE_BIN_DIR}/${BIN_DIR}/linux/*.sh)
		endif()
		MESSAGE(STATUS "BIN_DIR = " ${CMAKE_SOURCE_BIN_DIR}/${BIN_DIR})
		MESSAGE(STATUS "BIN_FILES = " ${CMAKE_SOURCE_BIN_DIR}/${BIN_FILES})
	endif()
ENDFOREACH(BIN_DIR)

но это работает совсем не так как нужно. Почему то на этапе

FILE (GLOB LISTS_BIN_DIR RELATIVE ${CMAKE_SOURCE_BIN_DIR} *)

Я получаю список файлов находящихся в директории из который был запущен CmakeLists (корневой директории проекта CMAKE_SOURCE_DIR) в виде отнросительных путей от директории которую я указал ${CMAKE_SOURCE_BIN_DIR} а это совсем не то что я ожидал получить.

Так как же мне получить список поддиректорий в нужной мне директории ?

 

Cupper
()

корректор раскладки

Форум — Development

Здравствуйте. Мне нужно отслеживать нажатые на клавиатуре клавиши (получить их коды, или же сразу букву по нажатой клавише, но только нужно в обоих раскладках это получать... поэтому лучше код) (только буквы или shift + буквы). Немного погуглив огорчился так как ничего точного на этот вопрос не нашел.

Реализовать это нужно на С++ (ну вернее хочется), не какие модули ядра не катят, работать должно без прав рута. Вопрос... это вообще возможно ?

На сколько я понял средствами С++ этого не сделать, и нужны библиотеки типа QT или чего там еще есть. В какую лучше обратить с поставленной задачей.

Задача максимум: получать коды символов нажатых в пределах одного окна (поля ввода) (не своей программы, а системы в целом).

Тобишь если «курсор ввода» попал в какую то область ввода (строка браузера, блокнот, опенофис) нужно это как то отследить и считывать в буфер (по ходу ввода) вводимые данные.

Воот, подсобите smile

Я НЕ ПИШУ ТРОЯ, я хочу написать корректор расскладки. ДЛЯ себя и чисто в учебных целях.

Для этого мне нужно:

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

Абсолютно с вами согласен, данный материал можно так же использовать и для написание кейлогера, так же как и ножом можно резать хлеб или людей, но ведь ножи продают везде...

Cupper
()

[C++][boost][asio] ошибка при выполнении

Форум — Development

Добрый лор, нужна мне помощь твоя непосильная. Есть у меня маленькое клиент серверное приложение.

Клиент, создает данные, сериализаует их (boost serialization), передает серверу(boost asio)

Сервер, получает их, десериализует, что то делает с ними, сериализует и отправляет назад.

Клиент, получает их, и выводит на экран.

Изначально писал проект на VS2010 (так как она была под рукой). Но в ходе работы возникала ошибка на сервере после чего он падал, ошибка абсолютно непонятная. Долго я парился, менял, тестировал, дебажил, но так и не понял в чем проблема. Спустя некоторое время собрал эти же исходники но под линь, а бац... все работает и не падает.

вот тема на винграде, там немного подробностей и скрин с ошибкой

http://forum.vingrad.ru/forum/topic-319037.html

вот ссылки на проекты для VS2010 и сборка в Cmake (для компиляции необходим boost, желательно последний)

http://rapidshare.com/files/441926386/for_win_MVS2010.zip

http://rapidshare.com/files/441926684/for_linux.tar.gz

Прошу, потестите пожалуйста оба на своих машинах, и отпишитесь о том появляются ли какие либо ошибки у вас.

 , ,

Cupper
()

CMake

Форум — Development

знакомлюсь с CMake, сразу возникли вопросы.

Проблема в том что не знаю разницы между .o и .a (и библиотеками). Раньше всегда собирал программы так: делаем .o файлы для каждого .c потом все это линкуем в общую программу.

А в CMake вместо объектных файлов используются только библиотеки как я понял. Например add_library делает сборку библиотеки из указанных хедерных и сурсных файлов.

В чем собсно разница между просто объектным файлом .о и библиотечным файлов .a (разнице между статической линковкой и динамической я вроде понял)

Например если я имею два .c файла, то раньше я собирал это в два .o потом линковал. Щас мне нужно написать add_library(... header source) таким образом подразумевается что ны выходе будет один библиотечный файл. А потом а гдето выше по иерархии add_executable. Разницу между двумя .o и одним .a есть вообще принципиальная?

Cupper
()

Makefile

Форум — Development

Пишу Makefile для небольшого проекта. Хочу что бы все по феншую, или хотя бы не в одной куче. Имеется следующая структура каталогок

./include - общие для server и client заголовочный файлы
./src - общие для server и client сурсные файлы
./server - специфичные исходники
./client - специфичные исходники
./bin - хотелосьбы чтобы сюда клались все .o файлы и файл конечной программы

Как я вижу себе расположение Makefil'ов

./src/Mikefile - отчетает за получение *.o для всех *.c расположенных в нем (по возможности распологать их в ../bin)
./server/Makefile - отвечает за получение *.о для всех *.с расположенных в нем
./Makifile - содержит два правила для сборки либо client либо server

Читаю gnu make manual, но вопросов и непоняток куча. Начал с ./src/Makefile

CXX	= g++
LD	= g++
CXXFLAGS += -std=c++0x -I../include

objects := $(patsubst %.c,%.o,$(wildcard *.c))
object = *.o

vpath %.hpp ../include

persone.o : persone.hpp
address.o : address.hpp

.PFONY : clean
clean: 
	-rm -f $(object) 
теперь по порядку:

1. в правие clean при использовании $(objects) оно пустое вместо того чтобы содержать все .o файлы для .c файлов. Так и не понял почему.

2. Как правильно использовать механизм $(CXX) -MМ *.c для того чтобы не ручками писать для каждого правила набор пререквизитов а получать его автоматически ? И возможно ли такое вообще ?

2.1 Если пунк 2 невозможен, то тогда получается что нужно все подключаемые хедеры руками перечислять ?

3. Если возможно (2) то тогда как правильно сделать вместо перечисления правил (persone.o, address.o,...) шаблонное статическое правило для сборки всех объектных файлов для всех .c файлов с указанием для них в качестве пререквизитов значения полученные в (2)

4. Как можно сделать так чтобы полученные *.o файлы лежали не в этой же директории а в нужной мне (../bin)

-------------------------------------------------------------------

Опуская все это написал второй makefile

./server/Makefile

CXX	= g++
LD	= g++
LDFLAGS += -lboost_system -lboost_date_time -lboost_serialization -lmysqlcppconn
CXXFLAGS += -std=c++0x -I/usr/local/include -I/usr/local/include/cppconn

object = persone.o main.o database_helper.o persone_db.o address.o address_db.o
#objects := $(patsubst %.c,%.o,$(wildcard *.c))

vpath %.o ../src # в надежде что будет производиться поиск в том месте где предполагается что они там лежат, а не в текущей директории
vpath %.hpp ../include

server: $(object)
	$(LD) $(LDFLAGS) $(object) -o server

include ../src/Makefile # для того чтобы загрузи, или выполнить правила указанные в этом файле, чтобы получить нужные .о

main.o: main.cpp persone.hpp persone_db.hpp address.hpp address_db.hpp database_helper.hpp
	$(CXX) $(CXXFLAGS) -c main.cpp
database_helper.o: database_helper.hpp database_helper.cpp
	$(CXX) $(CXXFLAGS) -c database_helper.cpp
persone_db.o: persone_db.cpp persone_db.hpp persone.hpp address_db.hpp address.hpp database_helper.hpp
	$(CXX) $(CXXFLAGS) -c persone_db.cpp
address_db.o: address_db.cpp address_db.hpp address.hpp persone.hpp persone_db.hpp database_helper.hpp
	$(CXX) $(CXXFLAGS) -c address_db.cpp

.PHONY : clean
clean :
	-rm -f server $(object)
Вопрос:

1. Самый главный. Строчку include ../src/Makefile не приводит к выполнению правил. В следствии чего при линковке в главном правиле gcc сурово ругается на undefine reference.

2. Остальные вопросы такие же, правильно юзание clean, поместить *.o в определенную директория, и взять из от туда же.

------------------------------------------------------------

Дальше делать пока смысла нет. Если поможите разобраться с этими вопросами то далее все по аналогии будет.

____________________________________________________________

Граждони форумчани, помогите разобраться :)

Cupper
()

отладка работы sys_read() -> file->f_op->read()

Форум — Development

Есть модуль (тестовый)

....
static int hello_read_proc(char *buffer, char **start, off_t offset, int size, int *eof, void *data)
{
...
}

static int __init hello_init(void)
{
	/*
	 * Create an entry in /proc named "hello_world" that calls
	 * hello_read_proc() when the file is read.
	 */
	if (create_proc_read_entry("hello_world", 0, NULL, hello_read_proc, NULL) == 0) {
		printk(KERN_ERR
			"Unable to register \"Hello, world!\" proc file\n");
		return -ENOMEM;
	}
	return 0;
}

module_init(hello_init);
....
Суть его создать в /proc/ устройство hello_world из которого можно прочитать строчку «hello world». Нужно на примере этого модуля проследить работу ядра начиная от sys_read до непосредственно вызова функции read реализованной модулем для этого устройства (через file->f_op->read()).

Отлаживаю в связке qemu+gdb. Делаю так: в вирт машине набираю строчку cat /proc/helloworld (не нижамаю enter). Ставлю бряк на sys_read, и теперь из фирт машины нажимаю enter, но слишком много остановок и не могу толком понять как мне таким способом можно изучить работу ядра по вызову функции реализованных в модулях.

PS. нужно изучить именно механизм ядра отвечающий за вызовы модульных функций которые навешиваются через file_operations в качестве обработчиков для конкретных устройств.

Cupper
()

Разное адресное пространство

Форум — Development

Щас глупый вопрос задам, но я просто не знаю с какой стороны к нему подойти, и надеюсь что смогу оттолкнуться о того что мне тут подскажут.

В ядре Linux адресные пространства пользователя и ядра «разные». Эта «разница» достигается за счет какого механизма основанного на регистре CR3. Собсно нужно понять что за механизм и как оно функционирует :) Ваще не знаю с какой стороны к этому подойти к понимание этого вопроса ))

Cupper
()

регистры fs и gs

Форум — Development

Для чего в ядре Linux используются регистры fs и gs. Как правильно называются дескрипторы, на которые указывают селекторы загружаемые в эти регистры

#define GDT_ENTRY_PERCPU			(GDT_ENTRY_KERNEL_BASE + 15)
#ifdef CONFIG_SMP
#define __KERNEL_PERCPU (GDT_ENTRY_PERCPU * 8)
#else
#define __KERNEL_PERCPU 0
#endif
...
#define GDT_ENTRY_STACK_CANARY		(GDT_ENTRY_KERNEL_BASE + 16)
#ifdef CONFIG_CC_STACKPROTECTOR
#define __KERNEL_STACK_CANARY		(GDT_ENTRY_STACK_CANARY * 8)
#else
#define __KERNEL_STACK_CANARY		0
#endif

почему они используються только ядром, для юзерспейса нету аналогичных дескрипторов, также при выполнение инстпукцмм iret (в слечае понижение привилегий) регистры fs и gs обнуляются.

Почему при заполнении GDT дескриптор

[GDT_ENTRY_PERCPU]		= GDT_ENTRY_INIT(0xc092, 0, 0xfffff),
аналогичен __KERNEL_DS а во время загрузки после отработки функции
static inline void setup_percpu_segment(int cpu)
{
#ifdef CONFIG_X86_32
	struct desc_struct gdt;

	pack_descriptor(&gdt, per_cpu_offset(cpu), 0xFFFFF,
			0x2 | DESCTYPE_S, 0x8);
	gdt.s = 1;
	write_gdt_entry(get_cpu_gdt_table(cpu),
			GDT_ENTRY_PERCPU, &gdt, DESCTYPE_S);
значение его base и limit модифицируються ? Почему ?

Инициализация дескриптора _KERNEL_STACK_CANARY, имеет еще более странные значения

#define GDT_STACK_CANARY_INIT						\
	[GDT_ENTRY_STACK_CANARY] = GDT_ENTRY_INIT(0x4090, 0, 0x18),
Суть которых еще большая загадка.

Почти не нашел не какой информации по этому вопросу. Надеюсь что хоть кто то сможет пролить свет на сею темную сторону

Cupper
()

Восстановление FS на .raw

Форум — General

Занимаюсь отладкой ядра в сборке qemu + cgdb. Образ для qemu сделан в *.raw. Очень часто в ходе отладки или после пересборки ядра (пересобираю на хост машине мантируя raw образ и делаю chroot) летит файловая система на образе. Восстанавливаю всегда по разному, начинаю от простого, делаю fsck прям из под chroot. Если система может загрузиться хотя бы до граба, гружу в ручную и делаю fsck уже из системы. Самый последний и самый противный способ это грузить qemu с liveCD и от тудава делать fsck. Последний способ не нравиться тем что обычно это занимает минут 40, уж больно долго грузиться у меня lieCD на кему.

Вот решил накоцто поитересоваться, есть ди еще какие способы восстанавливать рабочеться .raw при сбое в ФС на нем ? например передать его программе fsck. А то часто бывает что ФС ломается до такой степени что остаеться только с liveCD а это очень, очень долго.

На данный возникла еще и такая проблемма: при обращении(удалении) к некоторым файлам получаю отказ чтения/записи. Если просто мантирую образ

sudo mount -o loop,offset=32256 bka.raw /mnt
и тоже, если делаю chroot.

Cupper
()

[FreeBSD] Postgresql ERROR

Форум — Admin

Нужна консультация и помощь

при старте постгресса получаю

Apr  2 22:09:14 srv-web01 postgres[2056]: [1-1] FATAL:  could not create shared memory segment: Недопустимый аргумент
Apr  2 22:09:14 srv-web01 postgres[2056]: [1-2] DETAIL:  Failed system call was shmget(key=5432001, size=1101152256, 03600).
Apr  2 22:09:14 srv-web01 postgres[2056]: [1-3] HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter. 
Apr  2 22:09:14 srv-web01 postgres[2056]: [1-4]  You can either reduce the request size or reconfigure the kernel with larger SHMMAX.  To reduce the request size (currently
Apr  2 22:09:14 srv-web01 postgres[2056]: [1-5]  1101152256 bytes), reduce PostgreSQL's shared_buffers parameter (currently 131072) and/or its max_connections parameter
Apr  2 22:09:14 srv-web01 postgres[2056]: [1-6]  (currently 43).
Apr  2 22:09:14 srv-web01 postgres[2056]: [1-7] 	If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising
Apr  2 22:09:14 srv-web01 postgres[2056]: [1-8]  the request size or reconfiguring SHMMIN is called for.
Apr  2 22:09:14 srv-web01 postgres[2056]: [1-9] 	The PostgreSQL documentation contains more information about shared memory configuration.

Вроде все написано, но я не понимаю о чем идет речь. Перечитал 20-30 ссылок в гугле, но так и не смог ни чего сделать, везде два варианта пересобрать ядро, изменить параметр. Но как и на какие значения не сказано.

cat postgresql.conf | grep shared_buffers
# also need to raise shared_buffers to support more connections.
shared_buffers = 1024MB			# min 128kB or max_connections*16kB
cat postgresql.conf | grep max_connection
max_connections = 40			# (change requires restart)

Скажу честно, я вообще не понимаю о чем идет речь, что это за параметры и за что они отвечают, поэтому неимею не малейшего предствления о том что произойдет если я их поменяю и какие они должны быть. На сервере 16Gb RAM.

После начальной установки postgresql проверял все работало, далее за него взялся другой человек, перенес базу с другого сервера, вчера ночью было внеплановое отключение электричества, и сегодня уже я не смог стартовать постгрес.

Заранее спасибо.

 

Cupper
()

VirtualBox и доступ из «вне»

Форум — Admin

Установил виртуальную машинку, Debian 5.0, четь оставил через NAT (дефолтную), нужно теперь реализовать возможность подключаться к этой машине из мне (не только с рабоче станции) а с любого места на планете :) Нашел как это делает, вроде ничего сложно

VBoxManage setextradata "freebsd" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP

   VBoxManage setextradata "freebsd" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22

   VBoxManage setextradata "freebsd" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 2222
Заменил имя на свое. Сижу пытаюсь приконектиться, некак, подумал может надо было из под рута команды выполнить, делаю из под рута, и получаю
sudo VBoxManage setextradata "KPO-test" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

ERROR: Could not find a registered machine named 'KPO-test'
Details: code VBOX_E_OBJECT_NOT_FOUND (0x80bb0001), component VirtualBox, interface IVirtualBox, callee nsISupports
Context: "FindMachine(Bstr(a->argv[0]), machine.asOutParam())" at line 585 of file VBoxManageMisc.cpp
cupper@cupper-desktop:~$ VBoxManage setextradata "KPO-test" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

Имя машины

cat .VirtualBox/Machines/KPO-test/Logs/VBox.log | grep KPO
00:00:01.124   Name            <string>  = "KPO-test" (cb=9)
00:00:01.126   StreamName  <string>  = "KPO-test" (cb=9)
00:00:01.127   BootFile   <string>  = "KPO-test.pxe" (cb=13)
00:00:01.127   Path   <string>  = "/home/cupper/Qemu/KPO-test.vdi" (cb=31)

В чем кроется проблема ?

Cupper
()

Экспорт ядровых функций в модуль

Форум — Development

Может кто рассказать или навести на актуальный в данные момент материал в котором описывается как в современных ядрах происходит механизм экспорта функций ядра в модуль. Я не о том что нужно в модулей написать чтобы вызвать функцию ядра, я о самом механизме ядра/компилятора с помощью которого в скомпилином модулей оказываются толи ядреса функция в ядре толи они туда статиком в гоняются.

и что такое modpost ?

Заранее спасибо.

Cupper
()

[FreeBSD] Основы

Форум — General

Некогда не работал в БСДой, а теперь вот нужно. Сижу читаю, собираю инфу, есть вопросы, может поможете:

1) в чем разница между установкой через pkg_add -r ... и через порты ? как правильней как проще ?

2) Нужно jdk 1.6 поставить, ненашол манов по установке для 8 вряхи, если ставить через pkg_add -r jdk он поставит последнюю версию ? нормально поставит ?потом нужно будет чтото править ?

3) для интереса, команда less /var/run/dmesg.boot выводит как оперативку, так и число процессоров и ядер на них ?

 

Cupper
()

RSS подписка на новые темы