我尝试运行此命令在我的 OVH VPS 上安装 Windows,但出现无法写入“-”(管道损坏)的情况;
root@rescue-pro:~# sudo -i wget -O- 'http://mirror.joodle.nl/Windows_Server2012R2.gz' | gunzip | dd of=/dev/sda
sudo: unable to resolve host rescue-pro
--2016-03-21 17:12:02-- http://mirror.joodle.nl/Windows_Server2012R2.gz
Resolving mirror.joodle.nl (mirror.joodle.nl)... 37.187.16.147
Connecting to mirror.joodle.nl (mirror.joodle.nl)|37.187.16.147|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4988552803 (4.6G) [application/x-gzip]
Saving to: `STDOUT'
0% [ ] 0 --.-K/s dd: writing to `/dev/sda': No space left on device
20481+0 records in
20480+0 records out
10485760 bytes (10 MB) copied, 0.276175 s, 38.0 MB/s
0% [ ] 1,517,197 7.80M/s in 0.2s
Cannot write to `-' (Broken pipe).
答案1
wget
返回有关将输出发送到 STDOUT 的错误。请尝试curl
以下方法wget
:
# curl 'http://mirror.joodle.nl/Windows_Server2012R2.gz' | gunzip | dd of=/dev/sda bs=1M
curl
通常写入 STDOUT。
答案2
wget 抱怨管道输出损坏。错误源于管道:| gunzip | dd of=/dev/sda
这可能是 gunzip 错误,也可能是 dd 错误。在您的示例中,sudo 命令应用于 wget,而不是应用于以下管道。因此,dd 应该无法将输出写入 /dev/sda,并出现错误退出。在这种情况下,到 wget 的输出管道因 dd 退出而停止,并且 wget 会抱怨。
我相信你的命令行应该是:
wget -O- 'http://mirror.joodle.nl/Windows_Server2012R2.gz' \
| gunzip | sudo -i dd of=/dev/sda