我正在寻找一个可以在 FAT16/32/NTFS 分区(最好是在外部 USB 驱动器上)上运行(未压缩)的 Linux 发行版。我遇到过 Slax 和 Porteus 以及其他一些软件,但它们都使用模块化系统来包含其系统文件。如果这样的发行版不存在,我如何修改Linux发行版以在这样的分区上工作?安全性、权限和速度等因素在这里并不重要。
这样做的原因是我正在研究 xorg 和 Linux 桌面的内部结构实际上是如何工作的,下载文件并查看文档并没有给我我想要的东西。我使用 QEMU 作为一种能够启动 USB 驱动器并同时查看文件系统的方法。
答案1
单个块设备无法同时由 2 个或更多系统安装、读取或写入,因此使用 USB 驱动器作为共享存储不适合您的用途。您可能想要设置一个基于 NFS 的无盘系统,该系统允许在多个主机之间基于每个文件共享文件系统。
这是使用完整(但有点旧)Debian 桌面的预构建映像的迷你指南在这个网站上。我假设在 Debian 主机上工作,但我相信您可以轻松地将其适应其他发行版。
debian_wheezy_amd64_desktop.qcow2
从上面的站点下载 QCOW2 图像。要提取图像,您需要qemu-nbd
( apt-get install qemu-img
):
# modprobe nbd
# qemu-nbd -c /dev/nbd0 /path/to/debian_wheezy_amd64_desktop.qcow2
# mount /dev/nbd0p1 /mnt -o ro
# mkdir -p /srv/nfsroot/wheezy
# rsync -avP /mnt/ /srv/nfsroot/wheezy/
# umount /mnt
# qemu-nbd -d /dev/nbd0
您需要/etc
为无盘系统修复一些文件。首先,注释掉以UUID=
in开头的行/srv/nfsroot/wheezy/etc/fstab
,这些行引用硬盘分区:
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
#UUID=613f176b-eca4-47e6-93a6-32653ca1982e / ext4 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
#UUID=24674a13-481b-4ff8-913f-9099661397bd none swap sw 0 0
其次,添加以下内容/srv/nfsroot/wheezy/etc/network/interfaces
以使 NetworkManager 远离eth0
:
auto eth0
iface eth0 inet dhcp
在您的主机上设置 NFS 服务器:
# apt-get install nfs-kernel-server
# vi /etc/exports
# exportfs -ra
将以下行放入/etc/exports
:
/srv/nfsroot/wheezy *(rw,sync,no_subtree_check,no_root_squash,insecure)
现在使用内核和 initrd 映像以及 nfsroot 命令行启动 QEMU:
# qemu-system-x86_64 -enable-kvm -m 512 -kernel /srv/nfsroot/wheezy/boot/vmlinuz-3.2.0-4-amd64 -initrd /srv/nfsroot/wheezy/boot/initrd.img-3.2.0-4-amd64 -append "root=/dev/nfs nfsroot=192.168.1.2:/srv/nfsroot/wheezy ip=dhcp rw"
您需要在 中指定主机的 IPv4 地址nfsroot=
。通过内置 NAT 从 QEMU 的内部网络访问它。
/srv/nfsroot/wheezy
现在,您在 QEMU 窗口中看到了 GUI 登录屏幕,同时您可以查看/修改系统的任何文件。默认系统设置(例如用户/密码)描述于自述文件.txt。