LINUX.ORG.RU

Сообщения seyko2

 

Глюк при переводе флешки с GPT на MBR

Решил описать удивившую меня ситуацию.

Была флешка с ChromiumOS. При установке ChromiumOS получается диск с разделами в формате GPT. Потом флешка потребовалась для расширения памяти маршрутизатора Upvel UR-312N4G (переноса ОС на флешку, так как в маршрутизаторе только 4гб внутренней). Для этого требовался диск (флешка) с ext2 fs и разделами MBR. Так как работал под Виндовс, то воспользовался Acronis Disk Director для этой цели. Все вроде нормально получилось и маршрутизатор с Домовенком (OpenWRT) нормально работал.

А теперь самое главное (глюк). Ubuntu 18.04 видит на этой флешке диск GPT с ChromiumOS и все его файлы. Вывод: какие то версии Linux начинают определять формат флешки, начиная с формата MBR. Другие ищут сначала GPT записи. И диски лучше всего при таких переходах затирать. а уж потом создавать разделы.

 , ,

seyko2
()

Видимость сайта по ipv6 из-под Windows

Есть сайт http://seyko2.infobox.vip Купил модем у мтс и решил настроить его работу по IPv6 (модем специально для этого покупал). Работал под Win7 и никак не мог увидеть сайт по IPv6. Поддержка пробовала открыть сайт в Win10 с таким же результатом. Изнутри VPS (openvz) сайт по ipv6 виден (пока работа по ipv4 на нем выключена), Тестировщики http://www.ipv6scanner.com/cgi-bin/main.py https://ready.chair6.net/?url=seyko2.infobox.vip показывают. что доступ по ipv6 открыт. Намучавшись, решил запустить tracecroute по TCP и 80 порту. Для этого загрузился в Убунту 18.04 и о чудо – сайт виден.

Где может быть проблема и каковы возможные методы ее нахождения?

PS: из под Виндовс все выглядит так, как будто соединение дропается. Я уж выключал файрвол в Виндовс и отключал IPv4. Не помогает. При этом ipv6.google.com страница открывается. И тестирование подключения компьютера с Вин по IPv6 проходит на отлично

 , ,

seyko2
()

android-4.0 livecd with openvz kernel

Привет! Хочу поделиться наработками и получить пожелания-отзывы.

Ядро openvz было расширено заплатками для работы android. livecd iso со сборкой выложен на Google Drive. Получилось 16 частей.

На iso два ядра: 32 и 64 бит, загрузка для VirtualBox и на нативном железе. То есть в отличии от стандартного android-x86 присутствует полный набор модулей ядра от openvz.

system и ramdisk только перепакованы. Ничего докачивать не надо (типа haundini). Каталог android-4.0-r1 можно переписать на любой раздел с ext2/ext3, прописать в загрузчик конфигурацию с iso и получить загрузку android, когда изменения сохраняются между перезагрузками.

initrd — лишь немного модифицированный initrd от gentoo. Поэтому может грузить стандартно с раздела или подкаталога на разделе. Если прописать к параметрам doshell, то вместо загрузки системы получим shell в initrd (с Midnight Commander).

android может запускаться в chroot параллельно X-сам.

Практически все приложения работают. Проблема (стандартная) только с проигрыванием локального видео на CPU от AMD (с Intel вроде должен работать).

Пробовал собрать сам userspace, но он получается немного не таким, как собранные бинарники от android-x86. Например, при начальном старте выскакивает менюшка с просьбой выбрать приложение, которое что-то там должно обработать.

Для работы переключателся ввода рус/англ(CAPSLOK) в VirtualBox пришлось заменить system/usr/keychars/Generic.kcm на содержимое Generic_ru.kcm

Вообще, в исходниках присутствуют игры (quake), но почему-то не попадают в образ. Хотелось бы также, чтоб на iso присутствовало API-demo как в android-3.2

В планах попробовать наложить на ядро заплатки от cells http://systems.cs.columbia.edu/projects/cells/build/ Эти заплатки (для framebuffer и android drivers) позволят запускать android в контейнере.

Если получится портировать, то эти заплатки реализуют для каждого контейнера свой framebuffer. Фактически, контейнеры станут похожи на VM.

Версия ядра изменена с 2.6.32 на 3.26.32, чтоб можно было использовать в CT0 дистры типа calculate с glibc, которая хочет ядро 3.12+

ebuild ядра с patch's для android: openvz_android_kernel_ebuild.tar.bz2

PS: имена файлов на Google Drive — абракадабра, поэтому придётся переименовывать при загрузке.

 , ,

seyko2
()

extfs git

Привет! Попробовал тут просмотреть содержимое .git в MC. Для этого в каталоге набираем команду:

cd gitfs://
Но толком это не работает. Во-первых, в mc.ext ошибка и надо исправить
-regex/^\[git\]
+regex//\[git\]
Иначе не распознаёт не входит в changesetfs или patchsetfs. Во-вторых, использование пробелов в выводе extfs-скрипта следует избегать. Ибо процедура разбора-парсинга в MC рушится. Поэтому в именах файлов надо пробелы заменять на что-либо, например _ В третьих, сама логика не проработана. По F3 и F4 хочется увидеть содержимое файла, а не diff или набор из 3 строчек. В общем, и это сделал. Но в текущем виде всё равно не интересно. Хотя можно подправить. Хочется услышать мнения как кому это видится.

Моё видение: при входе в gitfs:// показывается список branches и/или список checkin из вывода LOG. При входе внутрь — имена файлов этого пункта. При нажатии F3 или F4 — открывается/показывается сам файл. При нажатии Enter на имени файла входим в каталог с перечнем истории изменений этого файла. Здесь уже по F3 показывается diff, а не сам файл.

 , ,

seyko2
()

Что делает команда «Панелизация»?

Собственно subj... Не команда «Внешняя панелизация», а пункт меню для правой/левой панели... Как это можно использовать?

seyko2
()

a dir not empty dialog patch

Предлагаю для обсуждения заплатку, которая смещает окно запроса «Каталог не пуст» чуть ниже, чтоб оно не закрывало количество файлов, которые содержит каталог. Достиг этого путём введения нового флага для окон диалога D_LOWER (имя лучше не подобрал). При наличии данного флага окно опускается чуть ниже (смещение подобрано под конкретную ситуацию). Хотел вообще-то, чтоб запрос выводился на фоне суммарного размера файлов каталога (окошко появляется и исчезает перед запросом), но не смог. Прошу ногами не бить :-) Просто недавно лишь чудом смог восстановить кучу случайно удалённых архивов, и поэтому теперь удаление — очень чувствительная тема.

PS: в MC давно есть фича восстановления файлов с ext2 разделов. Как она в нынешнем MC? Раньше не очень. Я файлы восстанавливал с помощью ext3grep. Прога очень трудная для использования и в бета-состоянии.

diff -urN mc-4.8.12.old/lib/widget/wtools.c mc-4.8.12/lib/widget/wtools.c
--- mc-4.8.12.old/lib/widget/wtools.c   2014-06-16 17:59:52.000000000 +0400
+++ mc-4.8.12/lib/widget/wtools.c       2014-06-16 17:59:18.000000000 +0400
@@ -277,6 +277,9 @@
     int i;
     int result = -1;
     int cols, lines;
+    int lxx = 0;
+    int lyy = 0;
+
     const int *query_colors = (flags & D_ERROR) != 0 ? alarm_colors : dialog_colors;
     dlg_flags_t dlg_flags = (flags & D_CENTER) != 0 ? (DLG_CENTER | DLG_TRYUP) : DLG_NONE;

@@ -301,9 +304,16 @@
     cols = 6 + max (win_len, max (str_term_width1 (header), cols));
     lines += 4 + (count > 0 ? 2 : 0);

+    if (flags & D_LOWER)
+    {
+       lxx = (COLS  - cols) /  2;
+       lyy = (LINES - lines + 8) / 2;
+       dlg_flags = DLG_NONE;
+    }
+
     /* prepare dialog */
     query_dlg =
-        dlg_create (TRUE, 0, 0, lines, cols, query_colors, query_default_callback, NULL,
+        dlg_create (TRUE, lyy, lxx, lines, cols, query_colors, query_default_callback, NULL,
                     "[QueryBox]", header, dlg_flags);

     if (count > 0)
@@ -335,7 +345,7 @@
         va_end (ap);

         /* do resize before running and selecting any widget */
-        send_message (query_dlg, NULL, MSG_RESIZE, 0, NULL);
+        if ((flags & D_LOWER) == 0) send_message (query_dlg, NULL, MSG_RESIZE, 0, NULL);

         if (defbutton != NULL)
             dlg_select_widget (defbutton);
diff -urN mc-4.8.12.old/lib/widget/wtools.h mc-4.8.12/lib/widget/wtools.h
--- mc-4.8.12.old/lib/widget/wtools.h   2014-06-16 17:56:33.000000000 +0400
+++ mc-4.8.12/lib/widget/wtools.h       2014-06-16 17:58:10.000000000 +0400
@@ -20,7 +20,8 @@
 {
     D_NORMAL = 0,
     D_ERROR = (1 << 0),
-    D_CENTER = (1 << 1)
+    D_CENTER = (1 << 1),
+    D_LOWER  = (1 << 2)
 } /* dialog options */ ;

 /*** structures declarations (and typedefs of structures)*****************************************/
diff -urN mc-4.8.12.old/src/filemanager/file.c mc-4.8.12/src/filemanager/file.c
--- mc-4.8.12.old/src/filemanager/file.c        2014-06-16 17:56:33.000000000 +0400
+++ mc-4.8.12/src/filemanager/file.c    2014-06-16 18:02:22.000000000 +0400
@@ -679,7 +679,7 @@
             query_set_sel (1);

         ctx->recursive_result =
-            (FileCopyMode) query_dialog (op_names[OP_DELETE], text, D_ERROR, 5,
+            (FileCopyMode) query_dialog (op_names[OP_DELETE], text, D_ERROR | D_LOWER, 5,
                                          _("&Yes"), _("&No"), _("A&ll"), _("Non&e"), _("&Abort"));
         g_free (text);



seyko2
()

patch: mcedit external command

Привет всем. Долго сидел на MC 4.7.0. Теперь вот перешел на 4.8.12 Вроде пользоваться уже можно. Предлагаю для обсуждения заплатку для команды редактора «Вставить вывод внешней команды». Сама команда очень удобна, в стиле самых первых UNIX-редакторов, но ей похоже никто не пользуется, ибо дефект до сих пор не исправлен. Дефект в том, что при выполнении команды типа sort над выделенным блоком MC просто подвисает, ибо sort ждёт данных со stdin. Патч исправляет это. После исправления становится лишней команда редактора «Сортировать».

diff -urN mc-4.8.11.old/src/editor/editcmd.c mc-4.8.11/src/editor/editcmd.c
--- mc-4.8.11.old/src/editor/editcmd.c	2014-02-19 08:26:55.000000000 +0400
+++ mc-4.8.11/src/editor/editcmd.c	2014-02-19 08:25:06.000000000 +0400
@@ -3141,6 +3141,10 @@
     char *exp, *tmp, *tmp_edit_temp_file;
     int e;
 
+    const char *stdin_str = "/dev/null";
+    off_t start_mark, end_mark;
+    int  block_present_flag = 0;
+
     exp =
         input_dialog (_("Paste output of external command"),
                       _("Enter shell command(s):"), MC_HISTORY_EDIT_PASTE_EXTCMD, NULL,
@@ -3151,12 +3155,20 @@
     if (!exp)
         return 1;
 
+    if (eval_marks (edit, &start_mark, &end_mark)) {
+	stdin_str = mc_config_get_full_path (EDIT_BLOCK_FILE);
+	edit_save_block (edit, stdin_str, start_mark, end_mark);
+	block_present_flag = 1;
+    }
+
     tmp_edit_temp_file = mc_config_get_full_path (EDIT_TEMP_FILE);
-    tmp = g_strconcat (exp, " > ", tmp_edit_temp_file, (char *) NULL);
+    tmp = g_strconcat ( "< ", stdin_str, " ", exp, " > ", tmp_edit_temp_file, (char *) NULL);
     g_free (tmp_edit_temp_file);
     e = system (tmp);
     g_free (tmp);
     g_free (exp);
+    if (block_present_flag)
+	g_free(stdin_str);
 
     if (e)
     {
@@ -3165,6 +3177,10 @@
     }
 
     edit->force |= REDRAW_COMPLETELY;
+    if (block_present_flag) {
+	if (edit_block_delete_cmd (edit))
+	    return 1;
+    }
 
     {
         vfs_path_t *tmp_vpath;

seyko2
()

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