页次: 1
arch+gnome+zsh
每天开机都要
sudo pacman -Syu
后来实在不想用wine的qq了,索性装一个vbox,镜像呢用的wiki里说的IE11 for win7
每次开机除了更新之外,又多了
depmod -a
modprobe vboxdrv vboxnetadp vboxnetflt vboxpci
VirtualBox
懒人本性上来了。。我想可以写一个简单的shell:
#!/bin/bash
pacman -Syu
depmod -a
modprobe vboxdrv vboxnetadp vboxnetflt vboxpci
VirtualBox
然后执行,结果是:
$ sudo ./vbox.sh
[sudo] archie 的密码:
:: 正在同步软件包数据库...
core 已经是最新版本
extra 已经是最新版本
community 已经是最新版本
archlinuxcn 已经是最新版本
:: 正在进行全面系统更新...
今日无事可做
Qt WARNING: QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
No protocol specified
Qt FATAL: QXcbConnection: Could not connect to display :0
./vbox.sh: 行 5: 5369 已放弃 (核心已转储)VirtualBox
虽然说,
为了让系统启动时自动载入vboxdrv驱动和vboxnetadp、vboxnetflt、vboxpci这三个模块,建立/etc/modules-load.d/virtualbox.conf文件,在其中添加vboxdrv、vboxnetadp、vboxnetflt和vboxpci这三行文本。
# echo -e “vboxdrv\nvboxnetadp\nvboxnetflt\nvboxpci" > /etc/modules-load.d/virtualbox.conf
但是还是想一懒到底。。直接一行命令搞定。所以想问问有人知道怎么解决么?谷歌上没找到什么信息,在贴吧里看到有个人说kde下要kdesu来打开gui程序。。gnome下不是gksu么,但是
在命令行里并没有gksu这个命令
最近编辑记录 EDC404 (2017-09-28 16:04:35)
长路漫漫
离线
不要用 root 跑 VirtualBox。sudo 会重置一部分环境信息的。
离线
不要用 root 跑 VirtualBox。sudo 会重置一部分环境信息的。
对噢。。那么,sudo执行
depmod -a
modprobe vboxdrv vboxnetadp vboxnetflt vboxpci
再单独执行VBOX可以么?这样不会改变环境信息吧?
仙子仙子,出于求知的目的,如果想要在shell里执行VBOX该怎么做?
最近编辑记录 EDC404 (2017-09-28 10:19:13)
长路漫漫
离线
嗯。
什么叫「在shell里执行VBOX」?用 VBoxManage 管理虚拟机么?
离线
嗯。
什么叫「在shell里执行VBOX」?用 VBoxManage 管理虚拟机么?
就是,在加载模块后,在命令行输入
VirtualBox
可以打开VirtualBox 图形界面。想在shell里达到同样的目的,但是会出错:
shell如下:
#!/bin/bash
pacman -Syu
depmod -a
modprobe vboxdrv vboxnetadp vboxnetflt vboxpci
VirtualBox
完了在命令行里
sudo ./vbox.sh
执行它提示:
Qt WARNING: QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
No protocol specified
Qt FATAL: QXcbConnection: Could not connect to display :0
./vbox.sh: 行 5: 5369 已放弃 (核心已转储)VirtualBox
最近编辑记录 EDC404 (2017-09-28 11:09:51)
长路漫漫
离线
对啊,因为你用了 sudo。shell 就是命令行,命令行就是 shell 啊,一个交互式一个不交互而已。
你这里报错是因为 X 服务器的权限问题。root 没权限连接到你的 X 服务器,因为授权信息在你家里( ~/.Xauthority)。XDG_RUNTIME_DIR 那个环境变量 sudo 没为你保留所以它找不到,问题不太大。
所以不要用 sudo / root 就好了。我一般把需要 root 权限的东西和不需要的分开放,这样就不会麻烦了。以及,你手动处理 vbox 的模块,不如用 vboxreload 命令。你这样子模块不会更新的。
离线
对啊,因为你用了 sudo。shell 就是命令行,命令行就是 shell 啊,一个交互式一个不交互而已。
你这里报错是因为 X 服务器的权限问题。root 没权限连接到你的 X 服务器,因为授权信息在你家里( ~/.Xauthority)。XDG_RUNTIME_DIR 那个环境变量 sudo 没为你保留所以它找不到,问题不太大。
所以不要用 sudo / root 就好了。我一般把需要 root 权限的东西和不需要的分开放,这样就不会麻烦了。以及,你手动处理 vbox 的模块,不如用 vboxreload 命令。你这样子模块不会更新的。
我我我我慢慢消化一下仙子的话
谢谢仙子指点!
长路漫漫
离线
小小的总结一下并提出一些疑问吧,肯定有写的和理解不对的地方,如果有人有耐心看完,请指正或者继续发出疑问,感激不尽:
1.sudo指令,在刚接触linux的时候(也就是1个月前)是理解成可以用root管理员这个身份去执行指令的,但后来发现不是所有的指令用sudo都可以去执行的(举不出例子,如果可以烦请指出,如果这里说错了也烦请指出),因为刚接触,我敲了很多不知道含义的命令,印象比较模糊。印象中有的是需要用su命令切换成root管理员才能执行的(暂时举不出例子,如果可以烦请指出,亦或者我记错了)。普通用户的sudo和root管理员的区别我个人理解是:sudo能执行的指令和不能执行的指令在某一个地方配置(不知道在哪),执行指令时的环境变量也可以配置(同样不知道在哪),但凡sudo能执行的,本质上是将一个进程(也就是这个指令)用root的权限执行。
2.仙子说:“不要用 root 跑 VirtualBox。sudo 会重置一部分环境信息的。”,意思是,不要用
sudo VirtualBox
这样的指令,也不要去做类似的比如1L中用sudo去执行那个shell脚本的事儿。但是你可以用sudo去加载模块:
sudo depmod -a
sudo modprobe vboxdrv vboxnetadp vboxnetflt vboxpci
仙子还说这样子加载模块不如用vboxreload命令,wiki中说:“如果在virtualbox内核模块运行时你更新了模块,你需要手动重新加载这些模块以使用新版本。为了这么做,请在 root 权限下运行 vboxreload”。我的理解是,当你加载了这些模块后启动了virtualbox,在这个时候如果更新了模块(不知道怎么去更新模块,如果知道请告知),比如运行virtualbox时使用到了vboxnetadp这个模块,然后它更新了,新版本是vboxnetadp_new,但是此时还是会用旧的那个vboxnetadp。如果你想此时用到新的vboxnetadp,你要sudo vboxreload vboxnetadp。否则,下次运行virtualbox时还是会用旧的vboxnetadp,即仍然使用sudo modprobe vboxnetadp的话还是会用旧的模块。
3.关于为什么不能在普通用户的shell脚本里执行VirtualBox的理解和疑问:我的用户名叫archive,就拿这个举例子吧。在archive下运行zsh、bash随便什么终端,就是一个命令行窗口,就是一个shell。在这个shell中用sudo权限运行一个shell脚本,相当于用root管理员的身份重新开了一个shell窗口出来,然后执行这个脚本里的每一条命令。仙子说:“你这里报错是因为 X 服务器的权限问题。root 没权限连接到你的 X 服务器,因为授权信息在你家里( ~/.Xauthority)”。x服务器我想指的是x window,也就是我现在正在用的这个gnome。这里我没理解,root管理员不是权限最大的那个人么,按道理不是为所欲为么?他为什么不能连接?因为授权信息不在~/.Xauthority里?我理解中Xauthority这个文件是用来验证想启动x window(在这里也就是gnome)的某些事务的(具体什么事务不知道,有知道的请指教),我试着用su命令切换到了root管理员,找到了位于/root下的这个文件,发现里面空空如也。查看这个文件的权限,发现只有root能对其读写,其他人什么都做不了,即:
-rw------- 1 root root 0 9月 21 08:45 .Xauthority
所以不明白为什么root没权限连接到x window里。
另外,我还做了这个“危险”的尝试,我用su命令切换到root管理员后,执行并产生如下:
➜ archie whoami
root
➜ archie vboxreload vboxdrv vboxnetadp vboxnetflt vboxpci
Unloading modules: vboxnetadp vboxnetflt vboxpci vboxdrv
Loading modules: vboxnetadp vboxnetflt vboxpci vboxdrv
➜ archie VirtualBox
Qt WARNING: QStandardPaths: wrong ownership on runtime directory /run/user/1000, 1000 instead of 0
No protocol specified
Qt FATAL: QXcbConnection: Could not connect to display :0
[1] 13341 abort (core dumped) VirtualBox
➜ archie
字面意思是root管理员执行不了VirtualBox?不解。
长路漫漫
离线
sudo 和 su 差不太多。
vboxreload 不需要参数。
root 当然能为所欲为。但是程序默认读取的是 $HOME/.Xauthority,读不到对的数据,X 服务器就不让它连。
你可以用 xauth 或 xhost 管理 X 的授权。
离线
sudo 和 su 差不太多。
vboxreload 不需要参数。
root 当然能为所欲为。但是程序默认读取的是 $HOME/.Xauthority,读不到对的数据,X 服务器就不让它连。
你可以用 xauth 或 xhost 管理 X 的授权。
好的,万分感谢依云!剩下的不解和疑惑我再慢慢找资料学习理解
谢谢仙子~kira!
长路漫漫
离线
vbox安装后下次重启那些模块就自动加载了吧 不用modprobe
平均每天至少一次pacman -Syu补充信仰
离线
是的,后来发现不需要了
vbox安装后下次重启那些模块就自动加载了吧 不用modprobe
长路漫漫
离线
是的,后来发现不需要了
levin 说:vbox安装后下次重启那些模块就自动加载了吧 不用modprobe
没看懂,为什么要在shell里面运行?菜单里面不可以运行吗? 如果有常用的vbox,还可以直接添加桌面快捷方式,直接点击就开了。
离线
就是想做一个小的试验,想在shell里,然后发现不行。不是为了正常使用,哈哈
EDC404 说:是的,后来发现不需要了
levin 说:vbox安装后下次重启那些模块就自动加载了吧 不用modprobe
没看懂,为什么要在shell里面运行?菜单里面不可以运行吗? 如果有常用的vbox,还可以直接添加桌面快捷方式,直接点击就开了。
长路漫漫
离线
页次: 1