Самое простое решение (, если жесткий диск меньше, чем SDD, а SDD можно подключить к компьютеру ), заключается в:
Скопируйте с помощью dd весь жесткий диск на SDD:
dd if=/dev/HDD of=/dev/SDD bs=4k
Конечно, HDD и SDD должны быть заменены правильными именами для целых дисков, например /dev/sda
или /dev/sdd
(, а не разделов/dev/sda1
).
Замените HDD на SDD в компьютере.
Единственная проблема заключается в том, что UUID обоих аппаратных средств будут одинаковыми и могут помешать вам подключить разделы жесткого диска в качестве дополнительного диска. Это можно будет исправить позже, если потребуется.
При запуске оболочки с использованием опции -c
для запуска сценария в строке -первый аргумент будет помещен в$0
:
$ sh -c 'printf "0: %s\n" "$0"; printf "Other: %s\n" "$@"' hello there how are you
0: hello
Other: there
Other: how
Other: are
Other: you
В bash
присвоение BASH_ARGV0
изменяет текущее значение оболочки $0
:
$ printf '%s\n' "$0"
/usr/local/bin/bash
$ BASH_ARGV0="hello"
$ printf '%s\n' "$0"
hello
(но это не меняет имя процесса в моей системе)
Используя set
, вы измените другие аргументы:
$ printf '%s\n' "$@"
$ set -- A B C
$ printf '%s\n' "$@"
A
B
C
Символической ссылки может быть достаточно для большинства систем:
~$ cat test.c
#include <stdio.h>
int main(int ac, char **av)
{
printf("%s\n", av[0]);
}
~$ cc -o test test.c
~$./test
./test
~$ ln -s test coincoin
~$./coincoin
./coincoin
Это механизм, используемыйbusybox
(широко используемый во встраиваемых системах )для реализации нескольких утилит (ping, route и т.д... )с использованием только одного двоичного файла.
[пока не настоящий ответ]
При использовании с исполняемым скриптом, который она -взломала, ни
execl("/path/to/script", "new_av0", (void*)0)
в C, ни
exec -a new_av0 /path/to/script
в оболочках, поддерживающих exec -a
, сможет установить $0
илиsys.argv[0]
(или любой другой синтаксис языка, используемый для ссылки на нулевой аргумент )в этом скрипте.
При выполнении интерпретатора скрипта -bang, ядро безвозвратно отбрасывает исходный нулевой аргумент, вставляя на его место имя интерпретатора, любой необязательный аргумент строки -bang и путь к сценарий.
Любое решение обязательно будет сложным, ограниченным или зависящим от языка/системы.
Например, сценарий оболочки можно обмануть с помощью:
sh -c '. /path/to/script' new_av0
Но очевидно, что это не повлияет на командную строку в том виде, в каком она появляется в выводе ps
, /proc/<pid>/cmdline
, /proc/<pid>/comm
и т. д.