![什么是类似于 Amazon Linux 的好发行版](https://linux22.com/image/53674/%E4%BB%80%E4%B9%88%E6%98%AF%E7%B1%BB%E4%BC%BC%E4%BA%8E%20Amazon%20Linux%20%E7%9A%84%E5%A5%BD%E5%8F%91%E8%A1%8C%E7%89%88%20.png)
我正在 EC2 上的生产环境中运行“Amazon Linux”操作系统/发行版,但我想使用 VirtualBox VM 进行一些本地开发/测试。哪个发行版最适合使用,最像 Amazon Linux。我最感兴趣的是确保我拥有相同的软件包。
我最熟悉基于 yum/rpm 的发行版,所以这就是我想停留的地方,但如果有另一个发行版与 apt 具有更好的包相似性,我想我可以做到这一点。
我需要运行的软件包的简要列表是 mysql5.5、apache2.2、php5.3 和 tomcat7。
答案1
这个问题肯定会被关闭,因为它太广泛了。但是,我想分享一些有用的信息,这些信息可能对将来的参考有用。您可以使用亚马逊 AMI 镜像您最初在virtualbox
.
脚步
注意:您必须使用 root 权限来完成所有这些操作。
制作新的原始驱动器文件
这一场大约有 10 场演出:
dd if=/dev/zero of=newimage.raw bs=1M count=10240
对其进行分区
首先,将其添加到环回设备:
losetup -fv newimage.raw
Loop device is /dev/loop0
接下来,对其进行分区(这将为整个磁盘创建一个分区)。确保它是可启动的。否则默认值就很好。
cfdisk /dev/loop0
注意:您需要实际选择“写入”并按 Enter 键才能使其正常工作,否则您将在没有实际分区的情况下退出,我每次都会这样做。
创建文件系统
您不能使用 mkfs,因为它会破坏环回设备上文件系统大小的自动确定功能。相反,查找分区的开始、结束、块数、柱面数和块大小:
fdisk -l -u /dev/loop0
Disk /dev/loop0: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/loop0p1 * 63 20964824 10482381 83 Linux
计算分区的开头 x 块大小。在这种情况下(实际上在大多数情况下),它是 512 * 63(扇区大小 * 起始扇区):32256。通过指定偏移量为此分区设置新的环回设备:
losetup -fv -o 32256 newimage.raw
Loop device is /dev/loop1
您现在将创建一个文件系统,具有一定的块大小(可能是 4096,这是标准的,也是我使用的)和您计算的块数:((结束 - 开始)* 单位)/块大小,或(在我们的例子中,为 (20964824 - 63) * 512) / 4096。
要在新分区上创建文件系统:
mkfs.ext3 -b 4096 /dev/loop1 2620595
复制并准备新的文件系统
首先,将 .raw 图像也设置为环回设备:
losetup -fv genprog-raw-image.raw
Loop device is /dev/loop2
安装它:
mkdir /mnt/tmp_1
mount -t ext3 /dev/loop2 /mnt/tmp_1
对新图像执行相同操作:
mkdir -p /mnt/loop/1
mount -t ext3 /dev/loop1 /mnt/loop/1
cp -a /mnt/tmp_1/* /mnt/loop/1/
我从网站上获取的说明表明您需要复制启动模块以获取 initrd 和内核信息,但出于某种原因,我认为我不必这样做。
添加引导加载程序之前的各种修改
编辑 menu.lst 并确保 root= 设置为 /dev/sda1:(root= 子字符串的位置相当随机)
vi /mnt/loop/1/boot/grub/menu.lst
出于相同目的编辑 fstab(将 /dev/xfvg 替换为 /dev/sda1):
vi /mnt/loop1/etc/fstab
亚马逊设置了一个随机的根密码,这是行不通的。反而:
chroot /mnt/loop/1
mv /etc/rc.local /etc/rc.local-old
passwd root
exit
在新驱动器上设置 Grub
卸载并删除带有分区的环回设备(带有偏移量的分区),这样 Grub 就可以正常工作:
umount /mnt/loop/1
losetup -d /mnt/loop1
请返回上面的 fdisk 信息 (> fdisk -l -u /dev/loop0) 并获取柱面数、磁头数和扇区/磁道数。然后做:
grub --device-map=/dev/null
您将进入交互式 Grub 界面。
grub> device (hd0) newimage.raw
grub> geometry (hd0) 1305 255 63
grub> root (hd0,0)
grub> setup (hd0)
You'll get a lot of output, then:
Done.
grub> quit
卸载已安装的驱动器并删除所有环回设备。注意: umount 卸载。为什么没有 n 超出了我的范围。另外,losetup -a 列出所有活动的环回设备。
losetup -d /dev/loop0
losetup -d /dev/loop1
losetup -d /dev/loop2
让 VirtualBox 发挥出色
它仍然是 .raw,是吗?转变:
VBoxManage Convertdd newimage.raw newimage.vdi
(我认为 Convertfromraw 也可以工作,b/c Convertdd 是为了向后兼容。)
使用 newimage.vdi 制作新的 VirtualBox 机器。执行默认操作,但打开设置,选择系统 -> 处理器并设置启用 PAE/NX 旁边的复选框。
编辑 /etc/ssh/sshd_config 并将“PasswordAuthentication”或其他内容从 no 更改为 yes。
关闭虚拟机。返回命令行,启用 sshing:
VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22"
这会将对主机端口 2222 的请求转发到来宾计算机的端口 22(默认情况下进行 ssh 侦听)。要通过 ssh 登录,请执行以下操作:
ssh -p 2222 root@localhost
完毕!
参考
http://church.cs.virginia.edu/genprog/index.php/Converting_an_EC2_AMI_to_a_VirtualBox_.vdi https://superuser.com/questions/504135/where-can-i-find-amazon-linux-ami-image-for-virtualbox http://linux.blogs.com.np/2010/04/05/how-to-move-a-virtual-machine-from-ec2-to-virtualbox-or-kvm/