Линукс и в СмартХому линуксом останеться.directman66 писал(а):winiso, winimage еще есть, или как вариант прямо из линукс снять копию dd
СпойлерПоказатьКод: Выделить всё
Создание образа жесткого диска dd if=/dev/sda of=/mnt/backup/sda.img bs=8M conv=sync,noerror if=/dev/sda — копируем весь жесткий диск sda; of=/mnt/backup/sda.img — копируем в /mnt/backup/sda.img; bs=8M — задаем размер кэша жесткого диска для ускорения процедуры копирования (иначе данные будут сбрасываться малыми порциями по 512 байт); conv=sync,noerror — указываем dd на необходимость копирования по типу бит-в-бит с игнорированием ошибок чтения. Для сокращения размера образа жесткого диска его можно сжать любым архиватором. dd if=/dev/sda bs=8M conv=sync,noerror | gzip -c > /mnt/backup/sda.img Восстановление образа жесткого диска Для восстановления образа жесткого диска необходимо проделать процедуру обратную процедуре создания этого образа. dd if=/mnt/backup/sda.img of=/dev/sda bs=8M conv=sync,noerror При использовании сжатия параллельно необходимо разархивировать образ. gunzip -c /mnt/backup/sda.img | dd of=/dev/sda conv=sync,noerror bs=8M
Всякие winiso подавай CD, winImage подавай букву диска тобиш раздел, а надо думаю весь диск слить.
Подцепил к малинке и вот результат, балуйтесь, дорабатывайте. Если это важно то флэшка с которой снят имидж восьмигиговая
GoogleDrive
YandexDisk
MailCloud
Рабочий скрипт на питоне:
Код: Выделить всё
#!/usr/bin/env python
# Copyright (C) 2017 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import print_function
import argparse
import os.path
import json
# import urllib
import requests
import google.oauth2.credentials
from google.assistant.library import Assistant
from google.assistant.library.event import EventType
from google.assistant.library.file_helpers import existing_file
def process_event(event):
"""Pretty prints events.
Prints all events that occur with two spaces between each new
conversation and a single space between turns of a conversation.
Args:
event(event.Event): The current event to process.
"""
if event.type == EventType.ON_CONVERSATION_TURN_STARTED:
print()
print(event)
if (event.type == EventType.ON_CONVERSATION_TURN_FINISHED and
event.args and not event.args['with_follow_on_turn']):
print()
if event.type == EventType.ON_RECOGNIZING_SPEECH_FINISHED:
isay = {"qry":event.args['text']}
r = requests.get("http://192.168.1.255/command.php", params=isay)
print(r.text)
def main():
parser = argparse.ArgumentParser(
formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument('--credentials', type=existing_file,
metavar='OAUTH2_CREDENTIALS_FILE',
default=os.path.join(
os.path.expanduser('~/.config'),
'google-oauthlib-tool',
'credentials.json'
),
help='Path to store and read OAuth2 credentials')
args = parser.parse_args()
with open(args.credentials, 'r') as f:
credentials = google.oauth2.credentials.Credentials(token=None,
**json.load(f))
with Assistant(credentials) as assistant:
for event in assistant.start():
process_event(event)
if __name__ == '__main__':
main()