Как показать неверную контрольную сумму, если вычисленная контрольная сумма не совпадает

Я заставил его работать с хостом Debian 10 и гостевой Windows 10 в обоих направлениях.

установить вирт -менеджер установите spice -гостевые -инструменты в окнах (у него есть недорогая -лицензия наhttp://spice-space.org/)

найти вкладку сведений о виртуальной машине поместите видео qxl в qxl (другое может работать, но медленнее )внизу слева нажмите добавить оборудование, добавьте канал и введите тип spicevmc с именем redhat. Это очень важно для работы буфера обмена.

Вы должны перезапустить virt -менеджер. Также важно закрыть ОС виртуальной машины.

вы также можете использовать опцию virt -менеджер --отладка для просмотра журналов при копировании и вставке.

Подробнее здесь :https://blogs.nologin.es/rickyepoderi/index.php?/archives/87-Copy-n-Paste-in-KVM.html

благодаря redhat, предоставившем все драйверы


Поскольку мой ответ был популярен, я хотел бы также поделиться тем, как открыть общий доступ к папке. Я не думаю, что он поддерживается для ядра Linux старше 4.19. Но на 4.19 работает. Вы должны быть осторожны, чтобы не расшарить папку со всем интернетом без пароля. Но это нужно проверить самому.

Использовать диспетчер virt -для обмена файлами между хостом Linux и гостем Windows?

Вы устанавливаете папку как общую, щелкнув правой кнопкой мыши в Windows.

linux с Nautilus может подключаться к smb ://IP _WINDOWS. Но лучше использовать оболочку, она стабильнее.

включить правила прошивки в Windows Откройте панель управления, нажмите «Система и безопасность», а затем нажмите «Брандмауэр Windows».

In the left pane, click Advanced settings, and in the console tree, click Inbound Rules.

Under Inbound Rules, locate the rules File and Printer Sharing (NB-Session-In) and File and Printer Sharing (SMB-In).

For each rule, right-click the rule, and then click Enable Rule.

найти ips с помощью ipconfig и ifconfig

снять защиту паролем для smbhttps://pureinfotech.com/setup-network-file-sharing-windows-10/

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

См., в частности, раздел «Как обмениваться файлами по сети без пароля» по ссылке pureinfotech.com выше.

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

--А вот как монтировать sudo mount -t cifs //192.168.1.123/Users/MrHappy/Desktop/repos /media/vm -o user=externo,password=asd,uid=1000,gid=1000,mfsymlinks

или добавьте это в /etc/fstab //192.168.1.123/Users/MrHappy/Desktop/repos /media/vm cifs user=externo,password=asd,uid=1000,gid=1000,mfsymlinks И тогда можно монтировать с помощью sudo mount /media/vm

важно заменить gid и uid на те, что у Linux-машины, используя "id -g user" и "id -u user" пользовательский интерфейс и gid таковы, что не только root имеет доступ, но и пользователь

опция mfsymlinks разрешает работу символических ссылок

прежде чем выключить хост-компьютер, вы должны запустить это, иначе точка монтирования застряла :sudo umount -a -t cifs -l Лучше делать это за несколько минут до выключения компьютера.


если вы хотите, чтобы подключаемый модуль -и воспроизведение USB-микрофона (например, audio technica )работали в гостевой системе Windows, вам просто нужно добавить модуль «перенаправление USB» в virtmanager и, возможно, установить аппаратное USB-устройство на USB 3, если разъем синий для USB 3. lsusb -v может проверить, что хост находит устройство. После этого диспетчер устройств Windows должен увидеть устройство. Попробуйте отключить и снова подключить. не добавляйте конкретное имя usb в менеджер virt -, иначе произойдет сбой. иногда,вам может понадобиться в Windows отключить -повторно подключить микрофон и открыть настройки/система/звук, чтобы увидеть появление микрофона.


На рабочем ПК я использовал встроенную графику Intel, а не карту amd/nvidia. У меня был разрыв для видео внутри ВМ. Я удалил его, активировав TearFree в драйвере Intel. Вы можете проверить, включен ли TearFree, запустив «grep -i tear /var/log/Xorg.0.log»

2
27.03.2021, 09:41
3 ответа

Глядя на исходный код реализации GNU coreutils, perlодной(shasum)или ast -открытой (sum), ни одна из них не может быть указана для вывода вычисленной суммы в режиме проверки..

Однако с perlего легко модифицировать:

--- shasum.orig 2021-03-27 08:01:06.927965948 +0000
+++ shasum  2021-03-27 08:02:33.336241906 +0000
@@ -295,7 +295,7 @@
            $isOK = 1;
            $num_OK++;
        }
-       else { $rsp.= "FAILED\n"; $err = 1; $match_errs++ }
+       else { $rsp.= "FAILED (expected $sum, got $digest)\n"; $err = 1; $match_errs++ }
        print $rsp unless ($status || ($quiet && $isOK));
    }
    close(FH);

А потом:

$ echo '760382d5e8cdc5d0d079e8f754bce1136fbe1473be24bb885669b0e38fc56aa3  a' |./shasum -a 256 -c
a: FAILED (expected 760382d5e8cdc5d0d079e8f754bce1136fbe1473be24bb885669b0e38fc56aa3, got 3a1edb0672af06bc4712da1fcc00a09326e550d3f503ca41bf59d259f46afdc9)
2
28.04.2021, 22:55

Может быть, подобная функция bash сработает?

function check {
  file="$1"
  expected="$2"

  echo "$expected  $file" | sha256sum --check
  result=$?

  if [ $result -ne 0 ]; then
    printf "Expected: %s\n" "$expected"
    printf "Observed: %s\n" $(sha256sum "$file" | awk '{print $1}')
  fi
}

Вот демонстрация:

#!/bin/bash
function check {
 ...
}

file="emacs-26.1.tar.gz"
expected=760382d5e8cdc5d0d079e8f754bce1136fbe1473be24bb885669b0e38fc56aa3

if [ ! -e "$file" ]; then
  touch "$file"
fi

echo "This is what a mismatched file looks like"
check $file $expected


printf "\n--------------------------------------\n"
echo "This is what a matching file looks like"
expected=$(sha256sum "$file" | awk '{print $1}')
check $file $expected

Выход:

This is what a mismatched file looks like
emacs-26.1.tar.gz: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match
Expected: 760382d5e8cdc5d0d079e8f754bce1136fbe1473be24bb885669b0e38fc56aa3
Observed: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

--------------------------------------
This is what a matching file looks like
emacs-26.1.tar.gz: OK
0
28.04.2021, 22:55

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

#!/bin/sh

file='emacs-26.1.tar.gz'
expected='760382d5e8cdc5d0d079e8f754bce1136fbe1473be24bb885669b0e38fc56aa3'
actual="$(sha256sum "$file" | awk '{print $1}')"

if [ "$actual" = "$expected" ]; then
    echo "${file}: OK"
else
    echo "${file}: FAILED"
    echo "Expected: $expected" >&2
    echo "Observed: $actual" >&2
    exit 1
fi

echo "${file}: OKимитирует выходной формат sha256sum --check, а Expected:...и Observed:...используются вместо sha256sum --checkсообщения об ошибке sha256sum: WARNING: 1 computed checksum did NOT match.

1
28.04.2021, 22:55

Теги

Похожие вопросы