![Linux 为外部(嵌入式)系统创建具有不存在所有者/组的文件系统](https://linux22.com/image/729038/Linux%20%E4%B8%BA%E5%A4%96%E9%83%A8%EF%BC%88%E5%B5%8C%E5%85%A5%E5%BC%8F%EF%BC%89%E7%B3%BB%E7%BB%9F%E5%88%9B%E5%BB%BA%E5%85%B7%E6%9C%89%E4%B8%8D%E5%AD%98%E5%9C%A8%E6%89%80%E6%9C%89%E8%80%85%2F%E7%BB%84%E7%9A%84%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F.png)
我想在本地Linux上为外部Linux系统创建文件系统映像。
首先,国外的系统可能和我的本地PC Linux主机不一样,CPU架构可能不同,比如ARM,MIPS,而且目前不支持virtualbox
仿真。
其次,外部系统可能有与我的本地主机不同的用户,并且可能具有相同的用户 ID,但名称可能不同,或者可能用户 ID 仅存在于外部系统中,而不存在于本地主机中。
组 ID 也类似。
正常的文件系统创建过程,包括创建一个空的文件系统映像、挂载它、将文件复制到其中,然后将其卸载。
问题是,由于用户 ID 在我的本地主机中不存在,我如何在复制文件阶段在我的本地文件系统中创建它?
我们知道,如果我们tar
在外部系统中打开某个文件夹,然后在本地主机上解压,可以得到一些不存在用户/组的文件。这证明了不存在用户/组的文件可以存在于 Linux 系统中。
答案1
文件系统中存储了 UID 和 GID。也可以chown UID:GID
使用chown user:group
来为不存在的本地用户/组设置文件权限。因此创建文件应该很容易。
更好的方法是在本地系统上创建具有与两个系统匹配的特定 UID/GID 的用户/组。useradd & groupadd
支持这一点。