喜欢计算机,喜欢编程,很大程度上,是喜欢其中充斥着的满满的确定性和及时的反馈。
我觉得,喜欢计算机,喜欢编程,这和很多人喜欢玩游戏,成为网瘾少年的过程,很是相似。
每一次点击鼠标,每一下敲击键盘,每一行代码书写,都可以迅速让我得到反馈;
就好像,游戏里每一秒金币跳动,每一格经验加成,每一次技能释放,伴随着血量和魔法值的上下变化,以及人物等级的不断提升一样,都是那么的充满确定性和及时的反馈感,让人喜欢,让人上瘾。
这台计算机,计算机里的英雄联盟,以及被我书写在其中的代码,所有全部的一切,都充斥着满满的确定性和及时的反馈,让人为之着迷。
我太了解我这台经过岁月洗礼的电脑了,也太了解运行在这上面的英雄联盟了,也正因如此,我才这么喜欢。
我清楚的知道,每击杀一名近战小兵,会掉落21枚金币;每击杀一名远程小兵,会有14枚金币到账;我能从一个肥硕的炮车兵身上赚取到45枚亮闪闪的金币。
而一把暴风大剑需要1300枚金币
瞧,一切都是这么的明了
此外,我还能清楚的知道,我这台电脑的详细配置和性能,以及我每一行代码的意义和运行结果。
我清楚的看得到进度条和鲁大师的跑分,我知道花了多少钱就会有多少帧数的游戏体验;我也知道一把三相之力可以提供5%的移动速度加成。
我清楚的知道队友都是青铜白银,同样的我也是。
所以我不会用职业选手的能力去要求队友,不会去喷他们的暗夜猎手玩的不如UZI;就好像我知道我那超频到冒烟的1660ti照样干不过3080一样;我那段没加分号的代码就是跑不起来,就是会报错。
我不会去告诉队友,打不到职业选手的水平就别来玩游戏了,跑去练啊,我知道这不可能。就好像我不会怪罪我的编译器无法帮忙修正bug,因为我知道,它无能为力;就好像我不会去指责1660,你这个渣渣,就不能再随便超个百八十赫兹吗?电压就加成这样就满意了吗?烟还是不够浓。
我知道的,杀了它也不管用,一开始就知道。
我知道每一份付出虽不至于物超所值,但起码是等价交换,3600就是能秒9400f、代码出bug就是你写的有问题、当adc领先一把无尽的时候伤害就是高,所有这些都不会给你一丝一毫战胜前者的希望,一切都是这么的充满确定性。
这就是我的计算机设备、我的代码、和我的游戏所带给我的:无与伦比的精准、及时的反馈、满满的确定性
很多时候你从现实中得不到,从人际交往中也得不到。
最可怕的是,你以为你能得到,或者已经得到了,不断为之追寻和苦恼着,从失望到绝望
最后发现是一场空
还不如享受每隔几秒一次的反馈,每台设备所散发的温暖,以及每行代码沉默的注视。
一想到这些,难道你不会开始喜欢计算机,喜欢编程吗?
Creating the World
确定性。
对于明白人而言,计算机的行为其实是确定的,有因便有果。你种了什么种子,你就能得到什么果。即便你犯了错,你也能想办法找出来你到底犯了什么错。
整个过程可重复,可以反复试验,可以无限逼近正确的做法。——这一行里,即便是最难调的bug,也是有因才有果的。
这世上大概在没有任何一件其他都人或者事儿,有这么易得而廉价的确定性了。
谁会不喜欢呢?
其实就是觉得电脑比老婆听话。电脑出了问题,找到问题的根源就可以解决问题。电脑一般也比老婆可以预料。
俺手贱升级了 FEDORA 包括核心之后,原来好端端的 VMware Workstation 16 LINUX 启动不了。重新默认安装以后也启动不了。最终还是找到了一个解决办法。
#CPATH=/usr/src/kernels/$(uname -r)/include/linux vmware-modconfig --console --install-all
[wenxue@dad5600 ~]$ chmod +x VMware-Workstation-Full-16.2.3-19376536.x86_64.bundle [wenxue@dad5600 ~]$ sudo ./VMware-Workstation-Full-16.2.3-19376536.x86_64.bundle Extracting VMware Installer...done. Installing VMware Workstation 16.2.3 Configuring... [######################################################################] 100% Installation was successful.
那就是在默认安装以后,手工加入VM WORKSTATION 的 KO 编译需要用到的环境变量 CPATH 的值。
自行定义目前所用的LINUX 核心源码的路径:
CPATH=/usr/src/kernels/5.16.14-200.fc35.x86_64/include/linux
或用 EXPORT
export CPATH=/usr/src/kernels/5.16.14-200.fc35.x86_64/include/linux 或者 export CPATH=/usr/src/kernels/$(uname -r)/include/linux 或者 export CPATH=/usr/src/kernels/`uname -r`/include/linux vmware-modconfig --console --install-all
# cd /usr/src/ debug/ kernels/ vboxhost-6.1.32/ [root@dad5600 src]# find . -name stdarg.h -type f ./kernels/5.16.14-200.fc35.x86_64/include/linux/stdarg.h [root@dad5600 src]# CPATH=/usr/src/kernels/5.16.14-200.fc35.x86_64/include/linux vmware-modconfig --console --install-all [AppLoader] GLib does not have GSettings support. Stopping vmware (via systemctl): [ OK ] make: Entering directory '/tmp/modconfig-plg7sL/vmmon-only' Using kernel build system. /usr/bin/make -C /lib/modules/5.16.14-200.fc35.x86_64/build/include/.. M=$PWD SRCROOT=$PWD/. MODULEBUILDDIR= modules make[1]: Entering directory '/usr/src/kernels/5.16.14-200.fc35.x86_64' CC [M] /tmp/modconfig-plg7sL/vmmon-only/linux/driver.o CC [M] /tmp/modconfig-plg7sL/vmmon-only/linux/driverLog.o CC [M] /tmp/modconfig-plg7sL/vmmon-only/linux/hostif.o CC [M] /tmp/modconfig-plg7sL/vmmon-only/common/apic.o CC [M] /tmp/modconfig-plg7sL/vmmon-only/common/comport.o CC [M] /tmp/modconfig-plg7sL/vmmon-only/common/cpuid.o CC [M] /tmp/modconfig-plg7sL/vmmon-only/common/crosspage.o CC [M] /tmp/modconfig-plg7sL/vmmon-only/common/memtrack.o CC [M] /tmp/modconfig-plg7sL/vmmon-only/common/moduleloop.o CC [M] /tmp/modconfig-plg7sL/vmmon-only/common/phystrack.o CC [M] /tmp/modconfig-plg7sL/vmmon-only/common/sharedAreaVmmon.o CC [M] /tmp/modconfig-plg7sL/vmmon-only/common/statVarsVmmon.o CC [M] /tmp/modconfig-plg7sL/vmmon-only/common/task.o /tmp/modconfig-plg7sL/vmmon-only/common/phystrack.o: warning: objtool: PhysTrack_Free() falls through to next function PhysTrack_Add() /tmp/modconfig-plg7sL/vmmon-only/common/phystrack.o: warning: objtool: PhysTrack_Add() falls through to next function PhysTrack_Remove() /tmp/modconfig-plg7sL/vmmon-only/common/phystrack.o: warning: objtool: PhysTrack_Remove() falls through to next function PhysTrack_Test() CC [M] /tmp/modconfig-plg7sL/vmmon-only/common/vmx86.o CC [M] /tmp/modconfig-plg7sL/vmmon-only/bootstrap/bootstrap.o CC [M] /tmp/modconfig-plg7sL/vmmon-only/bootstrap/monLoader.o CC [M] /tmp/modconfig-plg7sL/vmmon-only/bootstrap/monLoaderVmmon.o CC [M] /tmp/modconfig-plg7sL/vmmon-only/bootstrap/vmmblob.o /tmp/modconfig-plg7sL/vmmon-only/common/task.o: warning: objtool: .text: unexpected end of section LD [M] /tmp/modconfig-plg7sL/vmmon-only/vmmon.o MODPOST /tmp/modconfig-plg7sL/vmmon-only/Module.symvers CC [M] /tmp/modconfig-plg7sL/vmmon-only/vmmon.mod.o LD [M] /tmp/modconfig-plg7sL/vmmon-only/vmmon.ko BTF [M] /tmp/modconfig-plg7sL/vmmon-only/vmmon.ko Skipping BTF generation for /tmp/modconfig-plg7sL/vmmon-only/vmmon.ko due to unavailability of vmlinux make[1]: Leaving directory '/usr/src/kernels/5.16.14-200.fc35.x86_64' /usr/bin/make -C $PWD SRCROOT=$PWD/. MODULEBUILDDIR= postbuild make[1]: Entering directory '/tmp/modconfig-plg7sL/vmmon-only' make[1]: 'postbuild' is up to date. make[1]: Leaving directory '/tmp/modconfig-plg7sL/vmmon-only' cp -f vmmon.ko ./../vmmon.o make: Leaving directory '/tmp/modconfig-plg7sL/vmmon-only' make: Entering directory '/tmp/modconfig-plg7sL/vmnet-only' Using kernel build system. /usr/bin/make -C /lib/modules/5.16.14-200.fc35.x86_64/build/include/.. M=$PWD SRCROOT=$PWD/. MODULEBUILDDIR= modules make[1]: Entering directory '/usr/src/kernels/5.16.14-200.fc35.x86_64' CC [M] /tmp/modconfig-plg7sL/vmnet-only/driver.o CC [M] /tmp/modconfig-plg7sL/vmnet-only/hub.o CC [M] /tmp/modconfig-plg7sL/vmnet-only/userif.o CC [M] /tmp/modconfig-plg7sL/vmnet-only/netif.o CC [M] /tmp/modconfig-plg7sL/vmnet-only/bridge.o CC [M] /tmp/modconfig-plg7sL/vmnet-only/procfs.o CC [M] /tmp/modconfig-plg7sL/vmnet-only/smac_compat.o CC [M] /tmp/modconfig-plg7sL/vmnet-only/smac.o CC [M] /tmp/modconfig-plg7sL/vmnet-only/vnetEvent.o CC [M] /tmp/modconfig-plg7sL/vmnet-only/vnetUserListener.o /tmp/modconfig-plg7sL/vmnet-only/hub.c:237:24: warning: argument 1 of type ‘uint8[]’ {aka ‘unsigned char[]’} with mismatched bound [-Warray-parameter=] 237 | VNetHub_AllocPvn(uint8 id[]) // IN: the PVN ID to alloc on | ~~~~~~^~~~ In file included from /tmp/modconfig-plg7sL/vmnet-only/hub.c:43: /tmp/modconfig-plg7sL/vmnet-only/vnetInt.h:173:34: note: previously declared as ‘uint8[20]’ {aka ‘unsigned char[20]’} 173 | VNetJack *VNetHub_AllocPvn(uint8 id[VNET_PVN_ID_LEN]); | ~~~~~~^~~~~~~~~~~~~~~~~~~ /tmp/modconfig-plg7sL/vmnet-only/hub.c:261:20: warning: argument 3 of type ‘uint8[]’ {aka ‘unsigned char[]’} with mismatched bound [-Warray-parameter=] 261 | uint8 id[]) // IN: PVN ID to use (NULL if allocPvn == FALSE) | ~~~~~~^~~~ /tmp/modconfig-plg7sL/vmnet-only/hub.c:68:37: note: previously declared as ‘uint8[20]’ {aka ‘unsigned char[20]’} 68 | uint8 id[VNET_PVN_ID_LEN]); | ~~~~~~^~~~~~~~~~~~~~~~~~~ /tmp/modconfig-plg7sL/vmnet-only/driver.c: In function ‘VNetFileOpUnlockedIoctl’: /tmp/modconfig-plg7sL/vmnet-only/driver.c:966:7: warning: this statement may fall through [-Wimplicit-fallthrough=] 966 | { | ^ /tmp/modconfig-plg7sL/vmnet-only/driver.c:976:4: note: here 976 | case SIOCGETAPIVERSION: | ^~~~ LD [M] /tmp/modconfig-plg7sL/vmnet-only/vmnet.o MODPOST /tmp/modconfig-plg7sL/vmnet-only/Module.symvers CC [M] /tmp/modconfig-plg7sL/vmnet-only/vmnet.mod.o LD [M] /tmp/modconfig-plg7sL/vmnet-only/vmnet.ko BTF [M] /tmp/modconfig-plg7sL/vmnet-only/vmnet.ko Skipping BTF generation for /tmp/modconfig-plg7sL/vmnet-only/vmnet.ko due to unavailability of vmlinux make[1]: Leaving directory '/usr/src/kernels/5.16.14-200.fc35.x86_64' /usr/bin/make -C $PWD SRCROOT=$PWD/. MODULEBUILDDIR= postbuild make[1]: Entering directory '/tmp/modconfig-plg7sL/vmnet-only' make[1]: 'postbuild' is up to date. make[1]: Leaving directory '/tmp/modconfig-plg7sL/vmnet-only' cp -f vmnet.ko ./../vmnet.o make: Leaving directory '/tmp/modconfig-plg7sL/vmnet-only'
如果 KO 要签名的话, 别忘记自行签名。证书可用自己的私房证书, 注意这个证书要事先用 mokutil 导入自己的电脑主板。
举例 (包括签名的脚本内容)
[root@dad5600 signed-modules]# ls MOKDADvb.der MOKDADvb.priv MOKdadVM.der MOKdadVM.priv sign-virtual-box sign-vmware-vmm [root@dad5600 signed-modules]# cat ./sign-vmware-vmm #!/bin/bash for modfile in $(dirname $(modinfo -n vmmon))/*.ko; do echo "Signing $modfile" /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 /root/signed-modules/MOKDADvb.priv /root/signed-modules/MOKDADvb.der "$modfile" done [root@dad5600 signed-modules]# cat ./sign-virtual-box #!/bin/bash for modfile in $(dirname $(modinfo -n vboxdrv))/*.ko; do echo "Signing $modfile" /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 /root/signed-modules/MOKDADvb.priv /root/signed-modules/MOKDADvb.der "$modfile" done [root@dad5600 signed-modules]#
ref
https://forums.fedoraforum.org/showthread.php?228560-vmlinux-file How To Install KVM on Fedora 35/34/33/32/31 https://computingforgeeks.com/how-to-install-kvm-on-fedora/
..
C 分配内存碰到 Segmentation fault, 按照套路就可以弄好。
老婆迷上小鲜肉, 你是一点办法都没有。
直接写信给国务院互联网➕,集团党委不作为,速度特别快。
直接写信给国务院互联网➕,集团党委不作为,速度特别快。
直接写信给国务院互联网➕,集团党委不作为,速度特别快。