我正在编写一个自动设置测试环境虚拟机的脚本。这个脚本应该自动为我格式化一个 dmcrypt+LUKS 分区,使用特定的密码。因为这是一个本地测试环境,所以我不关心密码的安全性,我只希望整个 VM 设置过程是自动化的和非交互式的。
如何以非交互方式向“dmcrypt luksFormat”提供密码?我想使用密码,而不是密钥,因为在生产中我们也为 LUKS 使用密码。
我正在编写一个自动设置测试环境虚拟机的脚本。这个脚本应该自动为我格式化一个 dmcrypt+LUKS 分区,使用特定的密码。因为这是一个本地测试环境,所以我不关心密码的安全性,我只希望整个 VM 设置过程是自动化的和非交互式的。
如何以非交互方式向“dmcrypt luksFormat”提供密码?我想使用密码,而不是密钥,因为在生产中我们也为 LUKS 使用密码。
我正在运行 Ubuntu 12.04 LTS。昨天我在我的邮箱里发现一条消息说我的服务器被关闭了。我继续重新启动系统,但几分钟后它没有出现,而且我没有硬件 KVM 系统来查看内核向终端打印的内容。所以我将系统重新启动到 Linux 救援映像,我发现软件 RAID 1 阵列不同步。救援系统也开始重建RAID阵列。
到目前为止,没有证据表明任何磁盘存在硬件错误。到目前为止,SMART 状态看起来不错。
我从未收到 mdadm 的电子邮件通知,即使在 /etc/mdadm/mdadm.conf 中打开了电子邮件通知。
该服务器还配置为将所有系统日志消息转发到日志主机,因此我检查了我的日志主机。相关部分是:
5 月 20 日 15:38:40 内核:[ 1.869825] md0:检测到容量从 0 变为 536858624 5 月 20 日 15:38:40 内核:[ 1.870687] md0:未知分区表 5 月 20 日 15:38:40 内核:[ 1.877412] md: bind 5 月 20 日 15:38:40 内核:[ 1.878337] md/raid1:md1: 不干净——开始后台重建 5 月 20 日 15:38:40 内核:[ 1.878376] md/raid1:md1:2 个镜像中有 2 个处于活动状态 5 月 20 日 15:38:40 内核:[ 1.878418] md1:检测到从 0 到 3000052808704 的容量变化 5 月 20 日 15:38:40 内核:[ 1.878575] md:RAID 阵列 md1 的重新同步 [剪] 5 月 20 日 15:52:33 内核:内核日志记录 (proc) 已停止。 5 月 20 日 15:52:33 rsyslogd:[origin software="rsyslogd" swVersion="5.8.6" x-pid="845" x-info="http://www.rsyslog.com"] 退出信号 15 .
如您所见,系统(正常系统,而非救援系统)已经在系统启动期间检测到 RAID 阵列出现问题。然后,不久之后,某些东西(不是我)停止了系统。
所以我的问题是:
我的问题不是关于正确的备份实践。我已经知道 RAID 不是备份等。我的问题只是关于通知和诊断。
我想在第二个硬盘上安装操作系统(Ubuntu 12.04),但我无法访问 BIOS,所以我必须在第一个硬盘上安装 Grub。如何在第一个硬盘上安装 Grub,并让 Grub 从第二个硬盘引导操作系统?
到目前为止,这是我尝试过的。我在第二个硬盘上安装了 Ubuntu,它有一个 /boot 分区和一个根分区。它没有启动,因为引导加载程序在第二个硬盘上,但系统坚持从第一个硬盘启动。
然后我从救援系统启动,chroot 到我的第二个硬盘的根分区,将第二个硬盘的引导分区挂载到 /boot,然后运行grub-install /dev/sda
. grub-install
拒绝运行,因为它在第一个硬盘上找不到任何分区(它没有)。所以我在第一个硬盘上创建了一个引导分区,并将第二个硬盘的引导分区的内容复制到那里。这次grub-install
成功了。系统启动。但是即使系统从第一个硬盘的启动分区启动,一旦启动它就会挂载第二个硬盘的启动分区。这对内核升级不利,所以我编辑了 /etc/fstab,将 /boot 的设备更改为 /dev/sda,运行update-grab && grub-install /dev/sda
并重新启动。这次它似乎也起作用了,只是 grub 的超时消失了。由于这是我倾向于远程访问的服务器,grub 不会自动启动是有问题的。grub.cfg 包含超时选项,但超时实际上不起作用,让我认为我可能没有正确安装 grub。
smartctl 工具允许启动长时间的自检 ( smartctl -t long /dev/sda
)。但是badblocks
,我也可以在驱动器上运行。两者有什么关系?如果 badblocks 检测到坏块,驱动器是否会自动更新其 SMART 值(例如通过更新其重定位扇区计数)?badblocks 可以替换smartctl -t long
,反之亦然吗?
我有一个邮件服务器“example.com”,它将收件人为“[email protected]”的所有电子邮件转发到“[email protected]”。我的邮件服务器运行 Postfix,它使用 virtual_alias_maps 机制来执行转发。我还为“example.com”安装了 SPF 记录:
v=spf1 a include:aspmx.googlemail.com ~all
问题是,每当有人将邮件发送到“[email protected]”时,Gmail 都会根据 example.com 的 IP 地址验证 example.com SPF 记录!我认为它应该根据原始发件人的 IP 地址进行验证。
例如,我在我的笔记本电脑上使用家庭 Internet 连接。我按如下方式连接到 example.com 的邮件服务器:
$ telnet example.com 25
20 example.com ESMTP Postfix (Debian/GNU)
HELO my-laptop.local
250 example.com
MAIL FROM:<[email protected]>
250 2.1.0 Ok
RCPT TO:<[email protected]>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From: [email protected]
To: [email protected]
Subject: test
test
.
250 2.0.0 Ok: queued as CE5F42200F9
现在,当我在 Gmail 中打开该邮件并查看其来源时,我看到以下标题:
Delivered-To: [email protected]
Received: by 10.231.219.195 with SMTP id hv3csp61494ibb;
Sat, 14 Jul 2012 02:15:58 -0700 (PDT)
Received: by 10.229.135.5 with SMTP id l5mr2360326qct.5.1342257358291;
Sat, 14 Jul 2012 02:15:58 -0700 (PDT)
Return-Path: <[email protected]>
Received: from example.com [EXAMPLE.COM's IP ADDRESS HERE]
by mx.google.com with ESMTP id u9si4262071qcv.89.2012.07.14.02.15.58;
Sat, 14 Jul 2012 02:15:58 -0700 (PDT)
Received-SPF: neutral (google.com: [EXAMPLE.COM's IP ADDRESS HERE] is neither permitted nor denied by domain of [email protected]) client-ip=[EXAMPLE.COM's IP ADDRESS HERE];
Authentication-Results: mx.google.com; spf=neutral (google.com: [EXAMPLE.COM's IP ADDRESS HERE] is neither permitted nor denied by domain of [email protected]) [email protected]
Date: Sat, 14 Jul 2012 02:15:58 -0700 (PDT)
Message-Id: <[email protected]>
Received: from my-laptop.local ([LAPTOP's IP ADDRESS HERE])
by example.com (Postfix) with SMTP id CE5F42200F9
for <[email protected]>; Sat, 14 Jul 2012 09:15:44 +0000 (UTC)
From: [email protected]
To: [email protected]
Subject: test
正如您在 Received-SPF 和 Authentication-Results 中看到的那样,SPF 记录正在根据 [EXAMPLE.COM 的 IP 地址] 而不是 [LAPTOP 的 IP 地址] 进行验证。
为什么会发生这种情况,我该如何解决这个问题?
我有一个 64 位 RHEL 5.3 服务器。如果我将其编译为 32 位,则有一个服务器软件的内存效率更高。有没有办法告诉 GCC 以 32 位为目标?
我只希望一个特定的软件是 32 位的,其他一切都应该保持 64 位。
该软件未打包在 yum 存储库中,因此我不能只执行“yum install 32-bit-version”。
我编写了一个用户界面为荷兰语的 Web 应用程序。我使用系统的日期和时间例程来格式化应用程序中的日期字符串。但是,系统格式的日期字符串是英文的,但我希望它们是荷兰语,所以我需要设置系统的语言环境。我如何在 Debian 上做到这一点?我尝试设置LC_ALL=nl_NL
,但似乎没有任何效果:
$ date
Sat Aug 15 14:31:31 UTC 2009
$ LC_ALL=nl_NL date
Sat Aug 15 14:31:36 UTC 2009
我记得在我的 Ubuntu 桌面系统上设置 LC_ALL 可以正常工作。我是否需要安装额外的软件包才能完成这项工作,还是我做错了?