User-Mode Linux(UML)折腾笔记
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | 拉取内核代码: git clone --depth 1 git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git 编译内核: make defconfig ARCH=um make menuconfig ARCH=um make ARCH=um 下载 rootfs: https://uk.images.linuxcontainers.org/images/alpine/ Alpine 镜像体积小巧,容易使用。 官方 rootfs 默认不带 OpenRC,所以从这里下载。 制作启动镜像: dd if=/dev/zero of=rootfs.img bs=1M count=128 mkfs.ext4 rootfs.img mkdir rootfs sudo mount -o loop rootfs.img rootfs sudo tar xvf rootfs.tar.xz -C rootfs sudo chroot rootfs /bin/sh passwd # 设置 root 密码 vi /etc/network/interfaces # 文件内容见下方 echo 'nameserver 223.5.5.5' > /etc/resolv.conf exit /etc/network/interfaces auto eth0 iface eth0 inet static address 10.0.0.2 netmask 255.255.255.0 gateway 10.0.0.1 取消挂载镜像: sudo umount rootfs rmdir rootfs 初始化宿主机网络: ip tuntap add tap0 mode tap group users chown root:users /dev/net/tun ip addr add 10.0.0.1/24 dev tap0 ip link set tap0 up echo 1 > /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp 把自己加入到 users 用户组(使用 root 则无视): usermod -a -G users <username> 启动(默认只读): ./linux ubd0=rootfs.img mem=128M eth0=tuntap,tap0,,10.0.0.1 不需要 root 权限。 安全停止: uml 内部执行 halt。 以读写方式启动: ./linux rw ubd0=rootfs.img mem=128M eth0=tuntap,tap0,,10.0.0.1 直接修改 rootfs.img。 以 COW(copy-on-write,写时复制)方式启动: ./linux rw ubd0=data.cow,rootfs.img mem=128M eth0=tuntap,tap0,,10.0.0.1 不会修改 rootfs.img,新数据写入到 data.cow 文件中。 如果某些镜像启动后不提示登录,而是显示 /dev/pts/x: screen /dev/pts/x Ctrl+A+D 可从 screen 脱离。 |

近期评论