在学习ROS分布式通信(赵虚左)时,需要使用到两个ubuntu虚拟机。使用VirtualBox直接复制一个虚拟机就不用再去配置ros了。但是主机名什么的都是一样的,尝试了一下发现两个虚拟机用ros连接不上。因此尝试了下修改ubuntu用户名、用户组、目录、主机名,发现可以连接上。
以下是我参考和尝试了几篇博客的方法后的一个流程,以供自己以后使用。当然,如果可以帮助到大家就更好了。如果步骤有错误,也希望大家指正(楼主也才刚接触linux,对linux了解还不深,只能对着各种博客照猫画虎地敲命令行)。
创建新用户(在复制的虚拟机中)
sudo adduser temp
授予新用户root权限
sudo adduser temp sudo
这个temp是一个临时用户,后面会删掉的,可以随便取名字
修改用户名和目录
-
重启,登录temp用户
-
进入root用户
命令行中输入: su root
-
修改用户名:
chfn -f 新名字 原名字 # 修改用户名
-
修改登录名:
usermod -l 新名字 -d /home/新名字 -m 原名字
-
如果提示有进程在使用这个目录,找到进程,kill即可
显示:user 原名字 is currently used by process 进程号。 直接根据进程号输入: kill -9 进程号 这里需要说明一下,现在的方法创建了一个新用户temp。我有看到不需要创建新用户的方法,但是需要各种修改配置文件,感觉比较复杂。也有一些不需要修改配置文件直接敲命令行的。但是敲到这一步的时候,把一些进程kill掉就会导致虚拟机注销、重启(我在使用virtualBox有发生这个问题,其它虚拟机软件不知道会不会)。导致重启后又需要重新把这些进程kill掉。一直不停重复。因此可能是把和虚拟机界面相关的进程给kill了。所以需要创建一个新用户temp(感觉上就是虚拟机要运行就必须有个用户是开机的,在修改用户名的时候可能就相当于这个用户关机了。所以就用一个临时的用户来保持虚拟机是运行的,而被修改名字的用户是保持关机的)。
-
修改用户组:
groupmod -n 新名字 原名字
-
重启,登录新用户(不要选temp,而是主机名是新名字的主机)
修改主机名
-
修改hostname
sudo gedit /etc/hostname
修改内容为新主机名
-
修改hosts文件
sudo gedit /etc/hosts
将127.0.1.1 old_name 修改为127.0.1.1 new_name
-
重启,登录新用户(不要选temp,而是主机名是新名字的主机)
删除temp用户
-
sudo deluser temp
-
sudo rm -rf /home/temp
完事~~~
参考博客: