LINUX.ORG.RU

Сообщения ZugDuk

 

Как добавить возможность загрузки на EFI биосах?

Сохранив возможность загружаться на legacy.

На винде добавление EFI загрузчика к уже установленной винде делается одной командой
«bcdboot C:\Windows /s Z: /f ALL
После этого винда умеет загружаться на любых компьютерах.

Как сделать то же самое на дебиан?
При попытке установить grub-efi и efibootmgr
получаю миллиард каких то бредовых сообщений

Следующие НОВЫЕ пакеты будут установлены:        
  efibootmgr grub-efi grub-efi-amd64{ab} grub-efi-amd64-bin{a} 
  grub-efi-amd64-signed{a} mokutil{a} shim-helpers-amd64-signed{a} 
  shim-signed{a} shim-signed-common{a} shim-unsigned{a} 
0 пакетов обновлено, 10 установлено новых, 0 пакетов отмечено для удаления, и 4 пакетов не обновлено.
Необходимо получить 3 983 kБ архивов. После распаковки 38,4 MБ будет занято.
Следующие пакеты имеют неудовлетворённые зависимости:
 grub-pc : Конфликтует: grub-efi-amd64 но устанавливается 2.06-3~deb10u3
           Конфликтует: grub-efi-amd64:i386 но его установка не запланирована
 grub-efi-amd64 : Конфликтует: grub-pc но установлен 2.06-3~deb10u3
                  Конфликтует: grub-pc:i386 но его установка не запланирована
Следующие действия разрешат зависимости:

     Удалить следующие пакеты:                     
1)     grub-pc [2.06-3~deb10u3 (now, oldoldstable)]
Зачем творится это гавно? Мне просто нужно добавить EFI загрузчик не ломая старые настройки.

 , ,

ZugDuk
()

ChatGPT

Write a C code that will read one fragment, one megabyte in size for each file, and calculate the checksum of the read fragments. If the checksum is different, then overwrite the fragment in file 2 with the content from file 1.

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

Ответ бота: Here is an example C code that reads one megabyte of data from each file, calculates their checksums, and overwrites the data in the second file if the checksums are different:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define FRAGMENT_SIZE 1048576 // 1 MB in bytes
#define BUFFER_SIZE FRAGMENT_SIZE + 1

int main(int argc, char *argv[]) {
    // Check that the required arguments are provided
    if (argc != 3) {
        printf("Usage: %s file1 file2\n", argv[0]);
        return 1;
    }

    // Open the first file for reading
    FILE *file1 = fopen(argv[1], "r");
    if (!file1) {
        printf("Error opening file %s\n", argv[1]);
        return 1;
    }

    // Open the second file for reading and writing
    FILE *file2 = fopen(argv[2], "r+");
    if (!file2) {
        printf("Error opening file %s\n", argv[2]);
        return 1;
    }

    // Allocate memory for the buffer
    char *buffer1 = malloc(BUFFER_SIZE);
    char *buffer2 = malloc(BUFFER_SIZE);

    // Read one fragment from each file and compare their checksums
    while (!feof(file1) && !feof(file2)) {
        // Read one fragment from each file
        size_t bytes_read1 = fread(buffer1, 1, FRAGMENT_SIZE, file1);
        size_t bytes_read2 = fread(buffer2, 1, FRAGMENT_SIZE, file2);

        // Check if the number of bytes read is different
        if (bytes_read1 != bytes_read2) {
            printf("Error: Different number of bytes read from the files\n");
            return 1;
        }

        // Calculate the checksum of each fragment
        unsigned long checksum1 = 0;
        unsigned long checksum2 = 0;
        for (int i = 0; i < bytes_read1; i++) {
            checksum1 = checksum1 * 31 + buffer1[i];
            checksum2 = checksum2 * 31 + buffer2[i];
        }

        // Compare the checksums
        if (checksum1 != checksum2) {
            // Seek back to the start of the fragment in the second file
            if (fseek(file2, -bytes_read2, SEEK_CUR) != 0) {
                printf("Error seeking in file %s\n", argv[2]);
                return 1;
            }

            // Overwrite the fragment in the second file with the data from the first file
            if (fwrite(buffer1, 1, bytes_read1, file2) != bytes_read1) {
                printf("Error writing to file %s\n", argv[2]);
                return 1;
            }
        }
    }

    // Free the memory used for the buffers
    free(buffer1);
    free(buffer2);

    // Close the files
    fclose(file1);
    fclose(file2);


return 0;

}
This code uses a simple checksum calculation (based on the `djb2` algorithm) to compare the contents of the two files. If the checksums of two consecutive 1 MB fragments are different, the code overwrites the fragment in the second file with the contents from the first file. The code continues to read and compare fragments until the end of both files is reached.

Note: This code is just a simple example and may not be suitable for use in production, as it does not handle errors such as I/O errors or memory allocation failures.


И как вам? Я в программировании полено, по этому скилл оценить не могу, но по моему круто - прога работает и делает ровно то, что я просил.

 , ,

ZugDuk
()

CUE в линуксе когда нибудь начнет работать нормально или закопано в гроб?

Раз в несколько лет пробую каким нибудь плеером играть свои альбомы с cue - все как обычно - концовка трека дополняется началом следуюшего, потом звук обрывается и продолжает, а если ткнуть мышкой на какой нибудь трек, то у него обрезано начало. Помогать мне не нужно - проблем у меня нет (виндовый фубар все играет прекрасно). Помогать нужно линуксу, ибо у него нет нормального плеера аудиофайлов.

 

ZugDuk
()

Как примостить виртуалку к интерфейсу без использования классического bridge ?

Скриптом, а то статически описывать bridge заранее в /etc/interfaces как то нединамично что ли. В моем случае нужно примостить к адаптеру, который создал openvpn. (чтобы виртуалка оказалась в сети, куда подключается openvpn)

 , , , ,

ZugDuk
()

Как выжать максимум производительности одного ядра в qemu-kvm ?

Нужно для игры Supreme Commander.
Процессор мой i5-3570 3.40 GHz
Хочется оставить системе debian 2 ядра из 4ех (полностью убрать всякое воздействие debian на пробрасываемые 2 ядра)
прикрепить к виртуалке чистые 2 ядра
уже в виртуалке заставить винду использовать только 1 ядро, а еще 1 целиком отдать игре.
Как такое провернуть?

З.Ы. Еще желательно, чтобы у ядра, которое в результате окажется в игре, был включен вечный турбобуст.

 , ,

ZugDuk
()

Проброс порта в VPN

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

У него там вообще шлюз свой прописан и все что не из его подсети, он отвечает на свой шлюз. Вопрос в том как сделать, чтоб мой изначальный запрос (tcp пакет) содержал обратный адрес, который комп на той стороне туннеля поймет куда отвечать.

Блин, я так объясняю, наверное них.. не понятно)

 ,

ZugDuk
()

Как смотреть ютуб с помощью mpv и yotube-dl ?

Собственно нужна волшебная строчка с параметрами, которая будет работать для всех роликов. Например для этого
https://youtu.be/Im-CfoAL7zw
И такая строчка есть ytdl-format=22+bestaudio/best
Но качество будет не 720p, как у формата 22, а 360p. А мне нужно именно 720p, ибо моему orange pi и телевизору так оптимально.

Есть другая строчка
bestvideo[ext=mp4[height<=720]+bestaudio[ext=m4a]/bestvideo+bestaudio
Ее прекрасно понимает youtube-dl, скачивая сначала видео нужного мне формата, затем аудио, а затем скливая видео и звук в один файл mp4, который без проблем воспроизводится mpv.
Но в связке они работать не хотят. Если запускать mpv, он как обычно сам запускает youtube-dl, но спустя короткое время пишет Failed to recognize file format.

 , ,

ZugDuk
()

Бэкап виртуалок LVM

На просторах интернета какая то куча мусора.


Делаю снапшот работающей виртуалки

lvcreate -s -L 1G -n virtualka-snap /dev/vg/virtualka

Получаю за место одного диска, 4 диска:
/dev/mapper/vg-virtualka
/dev/mapper/vg-virtualka--snap
/dev/mapper/vg-virtualka--snap-cow
/dev/mapper/vg-virtualka-real

Вопросов 2:
Что из этого переписывать?
Как вернуть все в прежнее состояние? (1 диск и никакого мусора)

 , ,

ZugDuk
()

Нужна прога, удаляющая стертые файлы из образа.

Чтобы уменьшить размер сжатого образа. Желательно, чтобы понимала не только ext4, но и FAT32.

dd if=/dev/zero of=/path/file не предлагать. Ищу что нибудь по интеллектуальнее, но работа будет в скрипте, по этому без ГУЯ.

Я знаю, что прога для ext4 точно есть - ей уменьшают образы всяких raspberry pi перед выкладыванием в инет.

 , , , ,

ZugDuk
()

Как открывать и закрывать лоток CD-ROMа ?

А то лаз для кошки здоровый - все помещение выхолаживается - кошак замерзает. Нужно 2 cdrom поставить по бокам - сделать дверь как в метро.

Щас эксперементирую с USB cdrom
eject /dev/cdrom - открывает лоток
eject -t /dev/cdrom - eject: сбой команды закрытия лотка привода: Ошибка ввода/вывода

как дверь закрывать то?

 ,

ZugDuk
()

IIR фильтры бывают в линуксе ?

Чтобы можно было на всю систему их применить. Есть прога brutefir, но это FIRы, которые убивают звук. IIR, если кто не в курсе, это такие же фильтры, как аналоговые, только реализованы в цифре.

 ,

ZugDuk
()

А давайте таки засунем wlan0 в мост

А то как то уныло виртуалки подсоединять приходится. Сейчас оно мне торжественно сообщает «Operation not supported».

Но есть способы обойти это. Например, есть патч, называемый arpnat, который влияет на ebtables, используемый такими проектами, как маршрутизатор Gargoyle, который для MAC-адресов, которые IP-маскировка делает для IP-адресов.

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

http://wiki.deliberant.com/faq/wireless-bridge-routing-arpnat/

 ,

ZugDuk
()

Пропал /dev/lp0 в дебиан stretch

В jessie есть, а в stretch нет - куда же параллельный порт подевался?))

 

ZugDuk
()

Можно ли в линуксе настраивать кеширование?

У друга мускул тормозит и при этом целиком влезает в RAM. Можно конечно создавать на ramfs файл, форматировать его, класть туда файлы БД, но чего то слишком много слоев. Может можно создать маленький раздел на hdd для БД как обычно, форматнуть как обычно, положить туда файлы, но настроить кеш таким образом, чтобы линукс сразу сообщал об успешной записи мускулу, никогда не сбрасывал записанное на диск и никогда не выгружал однажды кешированное для чтения?

 

ZugDuk
()

Как без иксов запустить jack и слать на него по сети звук ?

Интересно, есть ли истории успеха? Я что то подергался, dbus злой портит всю малину. dbus любит иксы, а мелкие одноплатные компы их не любят.

 , , ,

ZugDuk
()

Jack, systemd и dbus - помогите скрестить

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

Итак создал юзера jack добавил в группу audio, убедился, что aplay радостно играет песенку через девайс hw:0

А вот теперь задачка натравить на девайс hw:0 джек. Да так, чтобы он запускался с помощью systemd как сервис и ждал звука с основного пк.

Ну проблем тут много, даже не знаю с какой начать. Наверное с той, чтобы научить systemd запускать jack, затем запускать jack_load netmanager, чтобы этот jack_load netmanager сумел увидеть основной сервер jack, затем сумел не повиснуть на 10 сек и вывалиться с ошибками, а таки заработал и начал ожидать подключения клиента.

Юнит jack.service пока такой

[Unit]
Description=JACK
After=sound.target

[Service]
LimitRTPRIO=infinity
LimitMEMLOCK=infinity
User=jack
ExecStart=/usr/bin/jackd -R -P89 -dalsa -dhw:0 -r44100 -p128 -n3

[Install]
WantedBy=multi-user.target
По мне это замечательный юнит, но результат печалит меня :(
Failed to connect to session bus for device reservation Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Oct 19 00:51:43 router jackd[24509]: Audio device hw:0 cannot be acquired...
Oct 19 00:51:43 router jackd[24509]: Cannot initialize driver
Oct 19 00:51:43 router jackd[24509]: JackServer::Open failed with -1
Oct 19 00:51:43 router jackd[24509]: Failed to open server
Oct 19 00:51:43 router systemd[1]: jack.service: main process exited, code=exited, status=255/n/a
Oct 19 00:51:43 router systemd[1]: Unit jack.service entered failed state.
Блин, зачем звуку иксы?.. бред какой то

А если просто под юзером залогиниться и ввести в консоль такое

export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket
а затем запускать из этой же консоли jack, то он стартует, только толку нету, потому что если затем ввести jack_load netmanager, получаем подвисон и отвал с ошибками
Cannot read socket fd = 5 err = Success
Cannot open jack_load client
CheckRes error
JackSocketClientChannel read fail

Правда если натравить jack на dummy, а не на алсу, то jack_load netmanager стартует нормально, но толку нет, потому что dummy - это фейковая пустышка.

Что делать, куда копать?

 , ,

ZugDuk
()

Как сделать сервис типа dropbox, только для себя?

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

Нужно то же самое, только в пределах поднятого VPN (в пределах локалки).

Главное требование - я не должен ничего нажимать и это не должно глючить.

 ,

ZugDuk
()

Где делают сборки линукса?

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

 

ZugDuk
()

Школа прогулена

а моск пропит))

Нужно вписать геометрическую прогрессию в диапазон (найти ее члены). Типа function(верхнее число, нижнее число, количество позиций включая верхнюю и нижнюю, коефф)

например function(125, 25, 5, 2)

Я методом виндовс калькулятора и чей то матери)) вычислил, что кусочки в конкретно в этом случае будут такие: 6.666666666666667 13.333333333333334 26.666666666666668 53.333333333333336

и позиции соответственно такие 125 118.333333333333333 104.999999999999999 78.333333333333331 24.999999999999995

Но как бы надо универсальную функцию на все случаи жизни

 ,

ZugDuk
()

Печать из винды на тонкие клиенты с линуксом

Когда то у меня был thinstation (и сейчас есть на паре компов). Прикольно было то, что на нем вообще ничего не нужно было настраивать - он работал с любыми принтерами, любыми мониторами, любым железом и т.д.. Но в винде нужно было ставить драйвера на принтеры.

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

Зачем я хочу так сделать? - потому что это круто!

Короче - винда одна, дебиан линукс на флешке один, ip адрес возможен один, а железо каждый раз разное (дом, работа, ноут, стационар).

VPN круто, линукс круто, принтеры - не круто, а должно быть круто.

Есть же дефаулт аудио девайс - почему нет дефаулт принт?

 , ,

ZugDuk
()

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