小编Los*_* Al的帖子

如何完全自动化无人值守的虚拟安装?

首先我要说的是我想做的事情。我想以无人值守的方式完全自动化使用virt-install. 我知道有些人使用 GUI 工具来执行此操作,或者他们编辑预先存在的图像的 XML 描述,但我想从头开始。

我用谷歌搜索了一下,很难找到这样做的例子。我发现这是virt-install要使用的命令,并且它可以与附加的 TTY 控制台交互使用(您在安装过程中手动回答配置问题)。对于完全自动化的解决方案,您可以指定一个kickstart文件(通常是preseed.cfg)来提供您通常手动输入的问题的答案。kickstart 文件还可以指定要安装的附加软件、磁盘和网络配置等)。

我认为我已经完成了大部分工作,只是安装在安装开始后不久就挂起了。我认为这与是否需要(或不需要)将控制台连接到安装有关。这是virt-install我正在使用的命令:

virt-install --connect qemu:///system \
  --name vm --ram 128 \
  --disk path=./vm.qcow2,size=8,format=qcow2 \
  --location 'http://archive.ubuntu.com/ubuntu/dists/trusty/main/installer-amd64/' \
  --network user,model=virtio \
  --initrd-inject preseed.cfg \
  --extra-args="console=tty0 console=ttyS0,115200"
Run Code Online (Sandbox Code Playgroud)

这是这个preseed.cfg文件(我从网上和 Ubuntu 文档中的许多示例中抄袭的):

### Localization
# Locale sets language and country.
d-i debian-installer/locale string en_US
# Keyboard selection.
d-i keyboard-configuration/layoutcode string us
d-i keyboard-configuration/modelcode string pc105
d-i keyboard-configuration/variantcode string

### Network configuration …
Run Code Online (Sandbox Code Playgroud)

virtualization kvm qemu

8
推荐指数
1
解决办法
8616
查看次数

Erlang的open_port调用链接到生成的进程吗?

我有一些C代码,我正在使用Erlang的端口功能作为外部进程执行.我希望启动C代码的进程通过open_port检测C代码是否崩溃.文档对我来说并不完全清楚,但据我了解,在Erlang进程和外部代码之间建立了双向链接.如果一个人死亡,另一个人会收到通知.

以下是"Erlang互操作性教程指南"(http://www.erlang.org/doc/tutorial/c_port.html)中代码的略微修改版本:

init(ExtPrg) ->
    register(cport, self()),
    process_flag(trap_exit, true),
    Port = open_port({spawn, ExtPrg}, [{packet, 2}]),
    PInfo = erlang:port_info(Port),
    io:format("Port: ~p   PInfo: ~p~n", [Port, PInfo]),
    RVal = link(Port),
    io:format("link?  ~p~n", [RVal]),
    loop(Port).

loop(Port) ->
    receive
        {call, Caller, Msg} ->
            Port ! {self(), {command, encode(Msg)}},
            receive
                {Port, {data, Data}} -> 
                    Caller ! {cport, decode(Data)}
            end,
            loop(Port);
        stop ->
            Port ! {self(), close},
            receive
                {Port, closed} -> 
                    exit(normal)
            end;
        {'EXIT', Port, Reason} -> 
            exit(port_terminated)
    end.
Run Code Online (Sandbox Code Playgroud)

init呼叫正确执行的C代码,并且你可以看到套trap_exit,但是 …

erlang

4
推荐指数
1
解决办法
1843
查看次数

标签 统计

erlang ×1

kvm ×1

qemu ×1

virtualization ×1