В руководстве по FreeBSD есть довольно полное руководство по выращиванию диска. Для UFS (используемой по умолчанию во FreeBSD), вы можете наращивать онлайн, начиная с версии ядра 10.0 и далее.
Однако изменение разделов вокруг смонтированных файловых систем может привести к потере данных или несоответствиям, которые могут быть впервые обнаружены при следующей попытке загрузки системы. Также не забудьте проверить свой загрузчик.
Рост файловой системы в основном сводится к следующему:
Настройте таблицу разделов. Будьте очень осторожны с этим шагом, поскольку ошибка здесь может привести к повреждению всего диска. Скорее всего, вы захотите размонтировать все разделы, которые не нужны для работы минимальной системы, особенно раздел подкачки.
Судя по вашему вопросу, я предполагаю, что вы знаете, как использовать gpart
для этого.
После внесения корректировок вы можете смело перемонтировать все разделы и снова включить swap.
growfs
с
в качестве раздела, размер которого вы изменили. Для уменьшения, вы должны выполнить эти шаги в обратном порядке:
growfs -s
. Убедитесь, что вы выбрали размер меньше, чем размер вашей новой целевой файловой системы, т.е. если вы хотите уменьшить размер раздела со 100 ГБ до 70 ГБ, измените размер ФС до 60-65 ГБ на этом шаге. Превышение размера означает больше пространства для разгона, но обычно также означает больше перемещений и, следовательно, больше времени ожидания. growfs
. Если опустить параметр размера, то будет использоваться весь раздел. Отсутствие прокси-сервера USB-устройства (usbip по состоянию на февраль 2016 г. не выглядит очень портативным), другим способом является установка avrdude
на система, подключенная к Arduino (ДИСТАНЦИОННАЯ). Если это возможно, то запущенная система Arduino IDE (КЛИЕНТ) может получить указание вызвать программу, которая подключается к avrdude
на УДАЛЕННОМ. Недостатки: требуется возиться с файлами конфигурации Arduino IDE, вероятно, хрупкие, потребуется дополнительная работа для поддержки таких вещей, как arduinoOTA
и так далее ...
CLIENT (Arduino IDE) -> ssh -> REMOTE (avrdude) -> usb -> arduino
Arduino IDE должна содержать programmers.txt Файлы конфигурации
и platform.txt
(находятся, например, в Arduino.app/Contents/Java/hardware/arduino/avr
в версии для Mac). Что нам нужно в этих файлах, так это новый программатор, который установит соединение с REMOTE и передаст данные для загрузки, а затем на REMOTE будет выдавать настоящую команду программиста avrdude
, используя данные, переданные из системы CLIENT. .
В Java / hardware / arduino / avr / programmers.txt
добавьте что-то вроде
avrrelay.name=AVR RELAY
avrrelay.protocol=stk500v2
avrrelay.program.tool=avrrelay
avrrelay.program.extra_params=
Более сложно, в Java / hardware / arduino / avr / platform.txt
дублирует все tools.avrdude.
, содержащие строки, и измените их так, чтобы вместо этого они назывались tools.avrrelay.
и, где необходимо, вместо этого вызовите avrrelay-client
(большая часть этих строк не обязательна, но, вероятно, легче их все подкорректировать, чем выяснить, какие из них необходимы):
tools.avrrelay.path={runtime.tools.avrdude.path}
tools.avrrelay.cmd.path={path}/bin/avrrelay-client
tools.avrrelay.config.path={path}/etc/avrdude.conf
... many more of these not shown, e.g. the verbose one ...
tools.avrrelay.upload.pattern="{cmd.path}" "{build.path}/{build.project_name}.hex"
tools.avrrelay.program.pattern="{cmd.path}" "{build.path}/{build.project_name}.hex"
Затем в Каталог Java / hardware / tools / avr / bin
(который должен быть идентичен параметру конфигурации runtime.tools.avrdude.path
) создать avrrelay-client
и сделать это исполняемый файл:
#!/bin/sh
# send the only argument (which should be the *.hex file) to avrrelay-remote
# this will need to use public key auth, or expect to automatically fill
# in any password promptes
ssh theremotehost avrrelay-remote < "$1"
В Arduino IDE есть параметр предпочтения для отображения подробного вывода во время загрузки,который покажет запущенную команду.
/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude \
-C/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf \
-v -patmega328p -cstk500v2 -Pusb \
-Uflash:w:/blablabla.../Blink.ino.hex:i
Эта команда может быть скопирована и адаптирована для кода на REMOTE, хотя avrdude (1)
указывает, что имя файла должно быть указано, поэтому скопированные данные необходимо будет поместить в файл tmp, и который поступил на avrdude
; это программа avrrelay-remote
, вызываемая КЛИЕНТОМ; он должен быть chmod + x
и вызываться по полному пути или находиться в SSH-доступном каталоге PATH
.
#!/bin/sh
FLASH=`mktemp /tmp/avrrelay.XXXXXXXXXX` || exit 1
# assume data passed via standard input
cat > "$FLASH"
# these flags will vary depending on programmer, etc
avrdude -C /path/to/avrdude.conf -v -patmega328p -cstk500v2 -Pusb \
"-Uflash:w:$FLASH:i"
Теоретически перезапустите Arduino IDE и попробуйте использовать новый программатор «AVR RELAY». Используйте свои безумные навыки отладки, чтобы выяснить, где он ломается, повторите.
Чтобы монитор последовательного порта работал удаленно, вероятным вариантом будет его пересылка через socat
:
Проще всего установить Arduino IDLE на удаленный компьютер, а затем использовать ssh для доступа к нему.
Чтобы иметь возможность отправлять графику по ssh, просто добавьте флаг -X в конец:
$ ssh username@ip-adress -X
Ответ thrig очень подробный, но общий. Я подумал, что было бы полезно также иметь ответ, который почти вырезается и вставляется. Следующее протестировано с Arduino IDE 1.8.12 в Windows 10 1903, но его легко адаптировать к более старым версиям Windows, если вы предоставите свои собственные scp и ssh.
Чтобы это работало, вам нужно настроить такие вещи, чтобы вы могли использовать ssh с локального на удаленного без запроса пароля или парольной фразы в командной строке.
Также предполагается, что вы успешно установили и настроили Arduino IDE с помощью avrdude в удаленной системе.
Во всем нижеследующем вам нужно изменить все, что отмечено***
Заключительный отказ от ответственности :Я не проверял, что происходит, если какой-либо из путей содержит пробелы. Кроме того, отсутствуют проверки, предотвращающие перезапись файлов и т.п.
В локальной системе вArduino -Installation -Dir\hardware\arduino\avr создайте или отредактируйте файл с именем
platform.local.txt и добавьте это как содержимое:
tools.remoteavrdude.path={runtime.tools.avrdude.path}
tools.remoteavrdude.cmd.path={path}\bin\avrrelay.bat
tools.remoteavrdude.remote.host=***user***@***host***
tools.remoteavrdude.remote.cmd.path=***how to invoke avrdude on the remote system. could be sudo avrdude***
tools.remoteavrdude.remote.config.path=***which config file on the remote system to use. could be /etc/avrdude.conf***
tools.remoteavrdude.remote.file.path=***to which filename the compiled code should be copied to on the remote system***
tools.remoteavrdude.upload.params.verbose=-v
tools.remoteavrdude.upload.params.quiet=-q -q
# tools.remoteavrdude.upload.verify is needed for backwards compatibility with IDE 1.6.8 or older, IDE 1.6.9 or newer overrides this value
tools.remoteavrdude.upload.verify=
tools.remoteavrdude.upload.params.noverify=-V
tools.remoteavrdude.upload.pattern="{cmd.path}" {remote.host} "{remote.cmd.path} -C{remote.config.path} {upload.verbose} {upload.verify} ***the board-specific options*** -Uflash:w:{remote.file.path}:i" {build.path}\{build.project_name}.hex {remote.file.path}
tools.remoteavrdude.program.params.verbose=-v
tools.remoteavrdude.program.params.quiet=-q -q
# tools.remoteavrdude.program.verify is needed for backwards compatibility with IDE 1.6.8 or older, IDE 1.6.9 or newer overrides this value
tools.remoteavrdude.program.verify=
tools.remoteavrdude.program.params.noverify=-V
tools.remoteavrdude.program.pattern="{cmd.path}" {remote.host} "{remote.cmd.path} -C{remote.config.path} {program.verbose} {program.verify} ***the board-specific options*** -Uflash:w:{remote.file.path}:i" {build.path}\{build.project_name}.hex {remote.file.path}
tools.remoteavrdude.erase.params.verbose=-v
tools.remoteavrdude.erase.params.quiet=-q -q
tools.remoteavrdude.erase.pattern="{cmd.path}" {remote.host} "{remote.cmd.path} -C{config.path} {erase.verbose} {program.extra_params} -e ***the board-specific options*** -Ulock:w:{bootloader.unlock_bits}:m -Uefuse:w:{bootloader.extended_fuses}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m"
tools.remoteavrdude.bootloader.params.verbose=-v
tools.remoteavrdude.bootloader.params.quiet=-q -q
tools.remoteavrdude.bootloader.pattern="{cmd.path}" {remote.host} "{remote.cmd.path} -C{config.path} {bootloader.verbose} ***the board-specific options*** {program.extra_params} -Uflash:w:{remote.file.path}:i -Ulock:w:{bootloader.lock_bits}:m {runtime.platform.path}\bootloaders\{bootloader.file} {remote.file.path}
Дляспециальных опций платыпроверьте platform.txt в удаленной системе. Обычно что-то вроде -p{build.mcu} -c{upload.protocol} -D
для загрузки и -p{build.mcu} -c{protocol} {program.extra_params}
еще
Также в этом каталоге отредактируйте
Programmers.txt и добавьте следующее содержимое:
remoteavrdude.name=remote avrdude
remoteavrdude.protocol=***what your board needs***
remoteavrdude.program.tool=remoteavrdude
***any other options for your board and programmer, check programmers.txt on the remote system***
Затем вArduino -Installation -Dir\hardware\tools\avr\bin создайте файл с именем
avrrelay.bat и добавьте это как содержимое:
IF "%~3" == "" GOTO execute
C:\Windows\Sysnative\OpenSSH\scp.exe "%3" %1:%4
:execute
C:\Windows\Sysnative\OpenSSH\ssh.exe %1 %2
Если вы используете какой-то другой scp/ssh, измените пути выше.