StonyGround

The heart is a bloom , shoots up through the stony ground.

0%

微信数据分析

文件目录

系统文件

微信用户数据存储目录名是data/data/com.tencent.mm/MicroMsg/md5(mm+uin)/

  • avatar用户头像
  • image2图片资源

外部文件

外部目录名/sdcard/Android/data/com.tencent.mm/MicroMsg/(32位md5值),注意:此处md5值不是mm+uin,加密方法未知

  • attachment下载过的文件
  • video发送的视频文件
  • voice2语音消息

数据库破解

  • 微信用户数据存储目录名是data/data/com.tencent.mm/md5(mm+uin)/

  • 其中聊天信息在EnMicroMsg.db文件中,密钥为md5(IMEI+uin).sub(0,7)

  • IMEI获取方式

    1
    2
    3
    4
    5
    fun getIMEI(): String {
    val tm: TelephonyManager =
    BaseApp.context.getSystemService(Service.TELEPHONY_SERVICE) as TelephonyManager
    return tm.imei
    }
  • uin在shared_prefs/system_conf_prefs.xml文件中

表分析

  • chatroom表是微信群表。其中memeberList是所有的群员,以逗号隔开的。

  • message表:

    • type为3是图片,为49是文件,1是个人聊天的文字内容(含表情),10000是群里的系统提示消息,43是视频格式文件类型,34是发送语音。
    • isSend:0为不是我主动发送的,1为我主动发送过去的。
    • talker:如果属于群组消息都会带有@chatroom结尾,如果是个人就是个人的id了
    • msgSvrId不为空的说明是服务器同步过的,
    • imgPath如果不为空且是id的形式,则对应于voiceinfo表或者videoinfo2表,区别在于看type是语音类型还是视频类型的。
    • (如果是语音的话imgPath值的MD5取第1到2位+”/“+md5取第3到4位+”/“+msg_imgPath的值+”.amr”,例如”6c/5b/msg_040949010820c1aa467cc0d105.amr”)
    • (如果是视频文件的话,直接在video)
  • rcontact表:

    • username就是微信的id,gh开头的是公众号或者小程序吧,wxid开头的就是用户,以@chatrom结尾就是群组了。
      alias就是我们通常说的微信号了。
    • type:33代表系统的应该是微信的功能的(漂流瓶、附近的人、腾讯新闻、摇一摇、朋友圈、群发助手等),0为小程序的,3或者其他例如1、4、513、515、38771等应该都为和用户类似的估计和功能节点(部署)有关。
  • ContactLabel表:是标签表

  • AppMessage表估计是一些公众号等消息信息摘要

  • ImgInfo2表对应的是聊天的图片信息表,至于ImgInfo表示干嘛的?这里就不清楚了。

  • thumbImgPath字段对应的值例如THUMBNAIL_DIRPATH://th_742c574a7bb8d85ef39e2608ab10dd50,会取th_后面的前四位,作为文件目录。例如/74/42/742c574a7bb8d85ef39e2608ab10dd50,这里需要取字段的大中小图了。字段midImgPath估计就是了

  • appattach表发送文件,然后点击下载文件后的关联表。可以获取文件的路径,根据mediaSvrId(应该是很长很长以@cdn开头的)获取查询。如果clientAppDataId有值的话说明是自己发送的(并且是时间戳和mediaSvrid一样的),否则是下载的。

其他参考

破解:https://bbs.pediy.com/thread-250714.htm

数据库表:https://blog.csdn.net/qq_21687123/article/details/104229675

Android代码解析数据库:https://blog.csdn.net/loocanp/article/details/103475998


        

关于魔数

魔数(Magic Number)又称魔法值,是指在代码中出现但没有解释的数字常量或字符串,。如果在某个程序中你使用了魔数,那么在几个月或几年后你将很可能不知道它的含义是什么。

关于Java语言的魔数cafe babe,Java之父James Gosling在博客里是这样写的:

We used to go to lunch at a place called St Michael’s Alley. According to local legend, in the deep dark past, the Grateful Dead used to perform there before they made it big. It was a pretty funky place that was definitely a Grateful Dead Kinda Place. When Jerry died, they even put up a little Buddhist-esque shrine. When we used to go there, we referred to the place as Cafe Dead.

我们过去经常去一个叫St Michael’s Alley的地方吃饭(硅谷附近的一个餐馆),根据这里的传闻,在黑暗的过去(应该指的是那个疯狂的年代),Grateful Dead在成名之前曾在这里演出。这绝对是一个时髦到让人”感恩至死”的地方。在Jerry(主唱Jerome John Garcia)死后,他们甚至放置了一个小型的佛教祭坛。我们以前去那里的时候,会把这个地方称为Cafe Dead(大概是调侃祭坛)。

Somewhere along the line it was noticed that this was a HEX number. I was re-vamping some file format code and needed a couple of magic numbers: one for the persistent object file, and one for classes. I used CAFEDEAD for the object file format, and in grepping for 4 character hex words that fit after “CAFE” (it seemed to be a good theme) I hit on BABE and decided to use it. At that time, it didn’t seem terribly important or destined to go anywhere but the trash-can of history. So CAFEBABE became the class file format, and CAFEDEAD was the persistent object format. But the persistent object facility went away, and along with it went the use of CAFEDEAD - it was eventually replaced by RMI.

忽然我注意到这正式一串十六进制数字(16进制中,11-16分别是A-F,CAFE DEAD这几个字母分别符合)。我当时正在重新修改一些文件格式代码,需要几个魔数:一个用于持久对象文件,一个用于类。我决定用CAFEDEAD作为对象文件格式,并且再找4个字母拼接在CAFE后面,作为类文件的魔数。在那个时候,除了历史的垃圾桶外,这两个魔数似乎并不重要或注定要被遗忘。所以CAFEBABE成为了类文件的魔数,CAFEDEAD则是持久化对象的魔数。但是后来持久对象工具消失了,随之而来的就是, CAFEDEAD 最终被 RMI 取代。(难怪没有听说过)

原文链接:http://radio-weblogs.com/0100490/2003/01/28.html

关于St Michael’s Alley餐馆和Grateful Dead

在记载Palo Alto历史的网站上找到了,确有此事:

In 1960, 18-year-old Jerry Garcia arrived in Palo Alto.

… …

At the time, the daytime center of literary and intellectual activity for Palo Alto youth was actually in Menlo Park at Kepler’s Books on El Camino.

… …

At night, the action tended to shift over to St. Michael’s Alley, a funky Palo Alto coffee shop at 436 University which had launched Joan Baez a couple years earlier.

大概就是,1960年,18岁的Jerry就来到了Palo Alto,然后经常参加一些知识分子嬉皮士)聚会,St. Michael’s Alley就是集会点之一,并且Joan Baez也是在这里出道的。

致橡树

我如果爱你——

绝不像攀援的凌霄花,

借你的高枝炫耀自己;

我如果爱你——

绝不学痴情的鸟儿,

为绿荫重复单调的歌曲;

也不止像泉源,

常年送来清凉的慰藉;

也不止像险峰,

增加你的高度,衬托你的威仪。

甚至日光。

甚至春雨。

不,这些都还不够!

我必须是你近旁的一株木棉,

作为树的形象和你站在一起。

根,紧握在地下,

叶,相触在云里。

每一阵风过,

我们都互相致意,

但没有人,

听懂我们的言语。

你有你的铜枝铁干,

像刀,像剑,

也像戟;

我有我红硕的花朵,

像沉重的叹息,

又像英勇的火炬。

我们分担寒潮、风雷、霹雳;

我们共享雾霭、流岚、虹霓。

仿佛永远分离,

却又终身相依。

这才是伟大的爱情,

坚贞就在这里:

爱——

不仅爱你伟岸的身躯,

也爱你坚持的位置,足下的土地。

赛博格宣言(A Cyborg Manifesto)

二十世纪晚期的科学、技术以及社会主义女性主义

集成电路时代的女性拥有一套共同语言是一个讽刺的梦想。

本章致力于建立一种忠于女性主义、社会主义和唯物主义的讽刺性政治神话(myth)。相较于虔敬的崇拜与认同,这个任务作为亵渎对以上这些思潮更为忠诚。似乎亵渎总是要求我们严肃地对待事物。在美国政治的世俗宗教的、福音派的传统中(包括社会主义女性主义政治),我找不到更好的立场了。亵渎保护我们不受这些传统中的道德主流影响,同时也坚持对社群的需求。亵渎并不是叛变。讽刺涉及那些不能通过融合成更大整体——即便是辩证的融合——而解决的矛盾,也涉及把不相容的事物结合在一起的张力,因为这些事物都是既必要又正确的。讽刺也涉及幽默和严肃游戏(play)。它是一种修辞策略和政治手段,一种我希望在社会主义女性主义中能得到更多尊敬的策略。在我的讽刺性信念,或者说我的亵渎中占据中心地位的,是赛博格(cyborg)[1]的形象。

[1]Cyborg一词,由“cybernetics”(控制论)及“organism”(有机体)拼凑而成,意为半机械生物。——译者注

赛博格是一种控制论的有机体,是机械与有机体的混合物。它既是社会现实的产物,也是虚构小说(fiction)的产物。社会现实是活生生的(lived)社会关系,是我们最重要的政治建构,是一种改变世界的虚构。国际妇女运动已经建构出“女性的经验”,同时也揭露或者发现了这个关键的集体对象。这一经验是最关键、最具有政治性的虚构兼事实。解放运动依赖于构建一种对压迫、因此也是对可能性的意识,或者想象式的理解。赛博格事关能改变二十世纪晚期所谓的女性经验的虚构和活生生的(lived)经验。这是一场殊死搏斗,不过科幻小说和社会现实之间的界线只是视幻觉罢了。

当代科幻小说里满是赛博格。这种既是动物也是机械的生物,遍布了这些自然与人工模糊不清的世界。现代医药中也满是赛博格,满是机械与生物体的结合物。人们认为所有赛博格都是被编码的设备,它们关系紧密,还拥有一种并非产生于性史中的力量。赛博格的“性”恢复了蕨类植物和无脊椎动物的一些有趣的无规则繁殖方式(replicative baroque)(多么精妙的预防异性恋主义的生物性机制啊!)[2]。赛博格的复制是同生物繁衍分离的。现代生产看起来像是赛博格殖民工程之梦,它使得泰勒制(Taylorism)[3]的梦魇相形见绌。而现代战争就是赛博格的狂欢,它是1984年美国一笔价值840亿美元的国防预算,编号C3I,即指令-控制-交流-智能(Command, Control, Communications and Intelligence)[4]。我要提出的论点是,赛博格是一种描绘(map)我们的社会现实与身体现实的虚构,同时也是一种想象资源,预示了成果颇丰的联系。对于赛博格政治这个非常开放的领域来说,米歇尔·福柯的生命政治[5]是一种乏力的预兆。

[2]蕨类植物通常依靠孢子进行繁殖,而某些无脊椎动物(例如水螅)可以依靠出芽进行繁殖,这两种生殖方式都与有性生殖不同。对于认定了有性生殖的思维范式而言,这的确是无规则(baroque)的。——译者注

[3]由美国人弗雷德里克·温思罗·泰勒(Frederick Winslow Taylor)提出的科学管理理论,借研究和重新设计工作流程来使生产效率最大化。——译者注

[4]C3I是美国军方提出的“命令和控制”(command and control或C2)军事组织模式的变型。——译者注

[5]由米歇尔·福柯在法兰西公学讲座系列(1975-76年的《必须保卫社会》、1978-79年的《生命政治的诞生》和1984年的《真理的勇气》)中提出的权力理论。福柯认为现代国家权力扩张到了被统治者的生物性和身体领域,国家通过出生率、死亡率、生育率等指标统治着被看作一个整体的人民。——译者注

身处二十世纪晚期——我们的时代,一个神话的时代,我们都是喀迈拉(chimeras)[6],都是被理论化了的、被制造(fabricate)出来的机器与有机物的混合体。简而言之,我们都是赛博格。赛博格就是我们的本体(ontology),它把我们的政治给予我们。赛博格的形象浓缩了想象和物质现实,而这两个相联结的中心构造了历史变迁的可能性。在“西方”的科学和政治传统中,这种有机体和机器的关系一直都是边境战争(border war)(这些传统是种族主义、男性统治的资本主义的传统,是进步的传统,是将自然资源作为文化生产的资源来侵占(appropriation)的传统,是通过思考他者而对自我进行再生产的传统)。这场边境战争的争夺焦点(the stakes)在于生产、再生产和想象之间的边界。本章的论点是,人们不但应乐见边界的混淆,而且有责任去构造模糊的边界。本章同样致力为社会主义女性主义文化和理论做出贡献。本章采取一种后现代、非自然主义的模式,并根植于想象一种无性别世界的乌托邦传统。这个无性别的世界或许既没有创始(genesis)[7],也没有终结。赛博格的化身(incarnation)在救世历史之外。它不需要等待口唇期的共生乌托邦(oral symbiotic utopia)或是后俄狄浦斯天启(post-oedipal apocalypse)[8]的降临。左埃·索福利斯未出版的研究雅克·拉康、梅拉妮·克莱因以及核文化(nuclear culture)的手稿《拉克莱茵》(Lacklein)中有言,在赛博格世界中,最恐怖、或许也是最有前景的怪物就化身于非俄狄浦斯式的、蕴含了另一种压抑的逻辑的叙述中;我们需要理解这类叙述才能存活。

[6]喀迈拉,古希腊神话中狮头、羊身、蛇尾的吐火怪物。——译者注

[7]大写形式的“Genesis”是《圣经·旧约》中《创世纪》篇名。这里采用小写形式。——译者注

[8]大写形式的“Apocalypse”是《圣经·新约》中《启示录》一章篇名。——译者注

赛博格是存在于后性别世界的生物。它与双性特征(bisexuality)、前俄狄浦斯时期的共生关系以及非异化的劳动都无关,也无关乎将部分的力量最终侵吞(appropriation)到一个更高的整体中的诱惑。在某种意义上说,赛博格并没有西方意义上的起源故事——一个“终极”的讽刺,因为“西方”愈演愈烈地主宰了抽象的个体化(abstract individuation),这最终断绝了对其他事物之依赖的终极自我、太空中的人;而赛博格也正是这一主宰的天启般可畏的终极目的(telos)。“西方”人本主义意义上的起源故事依赖于神话,关于原初统一(cosmos)、完满、极乐和恐惧的神话。这样的神话由带阳具的母亲(phallic mother)表征,而人类必须从她身上分离;也体现在个人发展的和历史的任务上,体现在那对由精神分析和马克思主义为我们强力铭刻的有力的孪生神话[9]上。希拉里·克莱因(1989)曾论述道,在劳动、个体化和性别形成的概念上,马克思主义和精神分析都依赖于原初统一的情节;在愈演愈烈地主宰女性/自然的戏剧中,差别和对差别的需求必定会从原初统一情节中产生出来。赛博格跳过了西方意义上的原初统一,跳过了与自然认同的步骤。这一非法的允诺或许会像星球大战那样颠覆自己的目的论[10]。

[9]似指伊甸园(原初统一)-失乐园(异化)-复乐园(本性复归)的观念公式。——译者注

[10]指“星球大战计划”,是美国在1980年代实行的一项冷战的军事战略。这一计划旨在建立太空反导弹系统来平衡苏联日益增长的核攻击力量,以保证美国战略核力量的生存能力和可靠的威胁能力。——译者注

赛博格坚定地忠实于不完满性(partiality)、反讽、亲密性和错乱。它是对立性的、乌托邦式的,而且完全没有纯洁可言。赛博格不再由公共和私人间的两极对立所塑造,它定义了一个技术城邦(polis),而这个城邦则部分奠基于家庭(oikos)中的社会关系革命。自然和文化被重构了,前者不再是供后者侵占或吸收的资源。那些用部分构成整体的关系,包括两极对立和等级制统治,在赛博格世界中都成了问题。不同于弗兰肯斯坦的怪物,赛博格并不期待它的父亲/创造者(father)通过重建乐园——即是说,通过制造一个异性伴侣,通过在已完工的整体、城市和和谐整体(cosmos)中达到其完满——来拯救它。赛博格并不梦想一个以有机家庭——没有俄狄浦斯计划[11]的有机家庭——为模型的社群。赛博格不会承认伊甸园的存在;它并不是由泥土造的,不能梦想回归尘土。[C1]或许正是因此,我才想看看赛博格能否颠覆在指认敌人(Enemy)[12]的狂暴冲动中回归放射性尘土的天启。赛博格并不虔敬,它们并不记得原初统一(cosmos)。它们警惕整体论,但却需要联结——它们似乎天生就对没有先锋党的统一战线政治有亲近感。当然,赛博格的最大问题是,它们是军国主义、父权制资本主义的非法后代,更不用说国家社会主义了。但是非法后代往往对它们的起源极其不忠,毕竟父亲/创造者对它们来说是无关紧要的。

[11]指俄狄浦斯情结中孩子反抗父亲、控制母亲、自己替代父亲地位的计划。——译者注

[12]大写形式Enemy或特指冷战另一方,即苏联。——译者注

[C1]“尘归尘,土归土”

我想指出三个重要边界的崩塌。正是因此,下文的政治-虚构(政治-科学)分析才成为可能。在二十世纪晚期美国的科技文化中,人与动物之间的边界已经被彻底破坏了。(人类——译者加)独特性最后的那些滩头堡——语言、工具使用、社会行为、心理活动——不是被污染就是被改造成了主题乐园,确实没什么能令人信服地把人与动物间的分隔确定下来。很多人都认为并没有必要继续维持这个区分;实际上,女性主义文化的很多分支确实都确认了把人类和其他生物联系起来的快感。动物权利运动并非不理智地否定人类的独特性,而是明智地承认被不足为信的断裂分割开的自然与文化之间的联系。过去两个世纪的生物学和演化论同时都将有机体生产为知识的对象,并且把人类和动物之间的界限减弱为一条淡淡的痕迹,而这刻痕在意识形态斗争以及生命科学和社会科学间的专业争议中又再次浮现了。在这个框架下,给现代基督教徒教授创世论(creationism)[13]应被当做虐童来加以反对。

[13]一种基督教信仰,认为世界万物是由上帝创造的,如同《圣经》描绘的那样。——译者注

在科学文化中,生物决定论的意识形态不过是论证人类动物性之意义的立场之一。对于政治激进分子来说,这其中还有相当的空间来质疑这些被破坏的边界的意义[1]。正是在跨越人和动物的界限之时,赛博格才会出现在神话中。赛博格决不标示人类与其他生物的分隔,而是既令人不安又令人欣喜地标示着两者的紧密结合(tight coupling)。兽性在这一轮婚姻交换中获得了新的位置。

[1]以下是左翼和/或女性主义激进科学运动和理论方面,以及生物/生物技术议题方面的一些有用参考:Bleier(1984,1986)、Fausto-Sterling(1985)、Gould(1981)、Harding(1986)、Hubbard等(1982)、Keller(1985)、Lewontin等(1984)、Radical Science杂志(1987年更名为Science as Culture;地址:26 Freegrove Road,London N7 9RQ)、Sciencefor the People(地址:897 Main St,Cambridge,MA 02139)

第二个开裂的是动物-人类(有机体)和机械之间的区分。人们总是疑心前控制论的机械中有幽灵出没,这种预感萦绕不散。有机体-机械的二元论塑造了唯物论和理念论之间的对话,它被辩证法的某种衍生物所定调,这个衍生物根据品味或被称为精神,或被称为历史。但是从根本上说,当时的机器无法自我驱动、自我设计,也不是自治的。它们只能嘲弄,而非实现人的理想。它们并不是人,不是自身的创造者,而只是那个男权主义生育之梦的讽刺画(caricature)。曾经只有偏执狂才不会这么想,但现在我们却不那么肯定了。二十世纪晚期的机器已经彻底模糊了自然与人工之间的区分,模糊了心灵与身体之间的区分,模糊了自我开发与外部设计以及其他许多曾适用于有机体和机械的区分。我们的机器生动得让人不安,我们自己死气沉沉得让人恐惧。

我们通过把机械和有机体重新构想为编码的文本,而参与到书写和阅读世界的游戏中。技术决定论只是这种重新构想所开启的一个意识形态空间而已[2]。后结构主义和后现代策略对一切事物的“文本化(textualization)” 已经遭到了马克思主义者和社会主义女性主义者的痛斥,因为它乌托邦式地忽略了任意解读的“游戏”的基础:活生生的统治关系[3]。后现代策略确实摧毁了大量有机整体(例如诗歌、原始文化和生物有机体),如我所述的赛博格神话。简而言之,对什么才算是自然的确信——它是洞见的源头,是对纯洁的允诺——或许已经被极大地削弱了。先验的阐释授权不复存在,随之而去的是奠定“西方”认识论基础的本体论。然而它的替代方案并非是犬儒主义或毫无信仰,因为这两者都是某种版本的抽离(abstract)的存在,就像对技术决定论的解释用“机器”摧毁了“人”或者用“文本”摧毁了“有意义的政治行动”。赛博格未来的身份是什么(who)?这是一个根本性的问题,问题的答案事关我们的生存。既然黑猩猩和人工制品都有各自的政治,为什么我们不能也有自己的政治?(de Waal,1982;Winner,1980)。

[2]要初步了解技术和政治的左翼和/或女性主义进路,可以参考:Athanasiou(1987)、Cohn(1987a,b)、Cowan(1983)、Edwards(1985)、Rothschild(1983)、Traweek(1988)、Weizenbaum(1976)、Winner(1977,1986)、Winograd和Flores(1986)、Young和Levidow(1981,1985)、Zimmerman(1983);杂志有Global Electronics Newsletter(地址:867 WestDana St,no.204,Mountain View,CA 94041)以及Processed World(地址:55 Sutter St,SanFrancisco,CA 94104)。

[3]弗雷德里克·詹明信(1984)对“后现代主义”政治和理论的观点全面又有争议性。他认为后现代主义并不是一个选项抑或众风格中的一种,而是要求对左翼政治进行内部革新的一种文化主导因素,而外界已经无法为批判距离——这个令人慰藉的虚构——赋予意义了。詹明信还阐明了我们为什么无法对后现代主义采取任何或正或反的道德说教立场。我本人的立场,是女性主义者(以及其他人)需要持续的文化革新、后现代主义批判和历史唯物主义,而只有赛博格才有机会满足这些需求。曾经的白人资本主义父权制的统治,现在在怀旧的目光下显得很清白,但它其实是把例如男女、黑白人种之间的异质性正常化了。“发达资本主义”和后现代主义释放了缺失规范的异质性,我们于是被扁平化,丧失了主体性,而主体性正是需要深度的,即使这深度是不友好的、能将我们淹没的深渊。是时候书写《门诊之死》了。曾经的门诊方法必须应用于身体和劳作,而我们现在有文本和表面。我们的统治不再依赖医疗化(medicalization)和正常化,而是依赖网络化、沟通方式再设计以及压力管理。正常化让位给了自动化,即彻底的冗余(utter redundancy)。福柯的《临床医学的诞生》(1963)、《性史》(1976)和《规训与惩罚》(1975)指出了一种正处与内爆时刻的权力形式。生命政治的话语让位于技术呓语(technobabble),即一种粘合名词(spliced substantive)的语言。没有任何名词在跨国公司手下还能保持完整,单从《科学》杂志的一期中就可以挑出如下跨国公司名字:Tech-Knowledge、Genentech、Allergen、Hybritech、Compupro、Genen-cor、Syntex、Allelix、Agrigenetics Corp.、Syntro、Codon、Repligen、MicroAngelo from Scion Corp.、Pencom Data、Inter Systems、Cyborg Corp.、Statcom Corp.、Intertec。如果我们被语言囚禁了,就得靠语言诗人——一种文化限制性内切酶(restriction enzyme)——来剪裁编码才能逃脱;赛博格的众声喧哗(heteroglossia)是激进文化政治的一种形式。赛博格诗学详见Perloff(1984)、Fraser(1984)。女性主义现代主义/后现代主义“赛博格”写作详见HOW(ever)杂志(地址:871 Corbett Ave,San Francisco,CA 94131)。

第三个区分是上一个的子集:对我们来说,在身体与非身体(physical and non-physical)之间划界是非常不精确的。关于量子理论的推论以及测不准原理的大众物理读物,是一种像禾林言情小说(Harlequin romances)[14]一般流行的科普读物,它们都标示着美国白人异性恋特质经历的深刻变化:它们的说法虽然错了,却抓住了正确的主题。现代机器本质上是微电子设备,它们无处不在而又不可见。现代机械是不虔敬的神中新贵,它嘲弄地模仿生父/创造者的普遍性和精神性。硅质芯片是可供书写的表面,上面的刻痕是分子尺度的,只有原子级别的杂音——核子乐谱的终极干涉(the ultimate interference for nuclear scores)——才能将其扰乱[15]。书写、权力和技术是西方的文明起源故事中的老搭档,但是微型化却改变了我们对机械[C2]的经验。微型化最终被证明是与权力相关的。微小与其说美,不如说是极度的危险,巡航导弹即是一例。对比一下二十世纪五十年代的电视机或七十年代的新闻摄像机,和目前出现在广告宣传中的电视腕带或者掌上摄像机。我们最好的机械都产自阳光带[16],它们轻巧、洁净,因为它们无非是信号、电磁波或光谱的一截。这些机械尤其便携而多变,这一点事关底特律和新加坡的人们体会到的巨大痛苦。人们不可能接近如此流动不居、既实在又模糊的状态。赛博格是以太,是精髓。

[14]禾林出版有限公司(Harlequin Enterprises Limited)出版的罗曼史爱情小说在全球出版量最大。——译者注

[15]本意是原子的不确定性会扰乱分子尺度上的书写痕迹。作者在这里用了相互照应的两个隐喻,一个是书写,另一个是乐章-噪音,其中“书写”和“乐章”譬喻分子尺度上的痕迹,而“原子噪音”譬喻扰乱分子尺度痕迹的原子不确定性。——译者注

[16]指横贯美国北纬36°以南地区的广袤带状区域,这片地区以冬季气候温和、阳光常年晴好以及经济增长迅速而闻名。——译者注

[C2]Mechanism的意义似为力学。

赛博格无所不在又隐而不见,而这正是这些太阳带出产的机器如此致命的原因。它们的政治存在就如同它们的物质形态一样不可见。它们涉及到意识,或者对意识的拟象[17]【4】。它们是乘着皮卡横跨欧洲的浮动能指,要阻塞它们,脱位而不自然的格林翰妇女像女巫一样用身体编成的织物[18]比更老式的男权主义政治的军事劳力更有效果,因为前者对赛博格的权力网络解读得十分透彻,而后者的天然选民则需要国防岗位。根本上“最硬”的科学[19]涉及的是边界最为混淆的领域,例如纯粹数字领域、纯粹精神、C3I、密码学,还有对强有力的秘密的守护(preservation of potentsecrets)。新机械多么地清洁而轻便。它们的工程师都是太阳的崇拜者,协调着与后工业社会的夜梦相联系的新科学革命。这些洁净的机械所引发的疾病“不过”就是免疫系统中抗原编码的微调,“不过”就是体验到了压力。强加给女性的对小事物的关注——从“东方”妇女纤巧的手指,到英国维多利亚时期小女孩对娃娃之家的旧式迷恋——在这个世界中获得了一个相当新的维度。或许会有一个赛博格爱丽丝[20]来解释这些新维度。讽刺的是,或许正是在亚洲生产芯片和在圣丽塔监狱里旋舞【5】的不自然的赛博格女性所建立的联合体,才会为有效的反抗策略提供指导。

【4】鲍德里亚(1983)。詹明信(1984:66)指出,柏拉图所定义的幻影(simulacrum)是没有原件的副本,即发达资本主义或者纯粹交换的世界。Discourse 9杂志发行过一份技术特刊(涉及控制论、生态学和后现代想象),详见Discourse9(春/夏 1987)。

【5】这是一种既有精神性又有政治性的实践,在1980年代早期把加利福尼亚阿拉美达监狱的守卫和被捕的反核示威者联结在了一起。

[17]出自让·鲍德里亚的《拟像和仿真》。——译者注

[18]指1981年英国格林翰皇家空军基地广场发生的一场反核武示威。值得注意的是,参与示威的全都是女性。她们手挽手组成了绵延数公里的人墙,包围了整个基地。她们后来被称作“格林翰女巫”。——译者注

[19]硬科学(hard science),指严谨、准确、量化及更有解释力的自然科学,与社会科学还有人文科学等软科学(soft science)相对。——译者注

[20]化用《爱丽丝梦游仙境》的主人公爱丽丝的名字。——译者注

因此,我的赛博格神话涉及被跨越的界限、强有力的融合以及危险的可能性。进步人士或许会把它们作为必要的政治工作的一部分来探索。我的前提之一是:大多数美国社会主义者和女性主义者都目睹了身与心、动物与机器、理念论和唯物论这些二元论在社会实践、象征表达以及与“高科技”和科学文化相关的人工事物中不断加深。从《单向度的人》(马尔库塞,1964)到《自然之死》(Merchant,1980),进步人士所发展的分析资源都坚持必要的技术统治,并且让我们回想起一个想象的有机体,以整合我们的抵抗行动。我的另一前提是:为了抵抗世界范围内变本加厉的统治,将人们联合起来的需求从未如此迫切。但是如果将视角稍稍偏移,我们或许能更好地在由技术协调的社会中争得意义以及其他形式的权力和愉悦。

从一个角度看,赛博格世界意味着一套控制格栅最终被强加在我们的星球之上,意味着以防卫名义发动的星球大战的天启所体现出的终极抽象,意味着在一场男权主义的战争狂欢中女性身体最终被侵占(Sofia,1984)。从另一个角度看,赛博格世界也意味着活生生的政治现实和身体现实。在这里,人们不会对同动物和机械有亲属关系而感到恐惧,不会对不完整的身份认同和矛盾立场的永久持续而感到恐惧。政治反抗要同时采取这两个视角,因为每一个视角都揭示了在另一个视角下无法想象的统治和可能性。单一视线比双重视线或者多头怪兽能造成糟糕得多的幻觉。赛博格联合体是骇人的,也是非法的。在我们目前的政治处境里,我们几乎无法期待比这更强大的神话来进行反抗和重新联合。我喜欢把利弗莫尔行动小组(the Livermore Action Group,LAG)看做一种赛博格社团,它旨在实际地改变那些极端体现了技术天启,并且猛烈喷吐出助力技术天启的工具的实验室,旨在建立一种真正能够争取女巫、工程师、长者、变态、基督教徒、母亲和列宁主义者足够长时间的联合,以迫使国家政权缴械的政治形式。“不可能的分裂”是我所在的小城里的亲和团体的名字。(亲和不是靠血缘关联,而是靠选择关联,靠化学核小组的吸引力和渴望关联。)【6】

【6】对此的民族志解读和政治评估,详见Epstein(1993)和Sturgeon(1986)。虽然并没有明显的讽刺,虽然采用了太空船地球/完整地球标识(“热爱你的母亲吧”的标语衬托着从太空拍摄的地球),1987年五月在内华达州的核武器试验场进行的“母亲和他者日”行动却考虑到了观看地球的不同视角之间的悲剧矛盾。抗议者们向西部肖松尼部落的官员申请居留在土地上的官方许可,而西部肖松尼部落的领土正是在1950年代核武器试验场开建的时候被美国政府入侵的。以越界罪名被捕的抗议者们争辩说,警察和试验场的人员没有从相关官员处得到授权,他们才是不法入侵者。女性行动中的一个亲和组织自称为“他者的替代者”(Surrogate Others)。这个组织联合着那些和核弹一样在这片土地上钻洞的生物,从搭建起来的大型非异性恋沙漠蠕虫身体中演绎了一场赛博格式的现身

批评

传统女性主义者批评《赛柏格宣言》是反女性主义的,因为它否定了女性经验的任何共通性。在《宣言》中,哈洛威写道:“身为‘女性’完全没有任何东西可以天生就把女人绑在一起。”

此文的出版史伴随着批评与争论:《社会主义评论》的东海岸部门认为这篇文章是”对技术的天真拥抱”,反对出版,而柏克莱部门最终坚持出版。归因于其主张批评性的论述,该文以“充满争议”和“病毒式”地传播多个学科和学术边界。

对哈洛威的批评也集中在她在写作中讨论的主题的可及性上,根据第三波女性主义者阅读,她的作品“假设一个熟悉北美文化的读者”,并断定“没有适当的文化资本的读者……很可能会发现它令人愤怒的晦涩和令人费解。”因此,哈洛威的象征主义是北美文化的代表,象征着“女性主义策略的非普世化愿景”,而“在网络女性主义中被当作女性本质的象征”。关于更广泛的可及性问题,身心障碍研究集中在哈洛威的论文,标志为缺乏“身心障碍者的批判性参与……身心障碍者的身体被简单地展示为范例……既不需要分析也不需要批判”── 一个美国西南大学的女性研究教授Alison Kafer在《女性主义者、酷儿、残障》(Feminist, Queer, Crip)中试图解决的鸿沟。茱蒂‧威吉曼还认为,哈洛威在《赛柏格宣言》中对技术的看法可能过于整体化,“赛柏格解决方案和女神解决方案”的二元论最终”讽刺了女性主义”,因为它使用了可能实际上是错误的二分法。

在《未尽的事业——从赛柏格到认知领域》(Unfinished Work-From Cyborg to Cognisphere)一书中,N. 凯瑟琳‧海尔斯质疑赛柏格作为分析单位的有效性。她说,由于科技和媒体的复杂情况,“赛柏格不再是个体的人─—或者说,个别的赛柏格——不再是合适的分析单位,纵使它曾是。”

赛博格这一概念仍然存在许多问题。与其他后现代主义概念和理论一样,赛博格强调的是“模糊”、“含混”和“不可指认”,因此很容易滑向不可知论。无论是理论探讨还是社会实践,只要提出某种主张,必当有所立足;消解一切之间的界限会使立论者立足不稳。桑德拉·哈丁(Sandra Harding)就曾发文指责哈拉维,认为她虽然讨论的是科学问题,但是丧失了科学的客观性。另有学者质疑,人类的贪欲与机器的威力造就了当今的核时代,当人和机器化为一体、赛博格的时代来临时,毁灭性的武器会增多还是减少?女性在其中能不能起到积极的作用?这些问题依然存疑。

澎湃评论节选

唐娜·哈拉维在英美女性主义理论研究者中,是一个独特的跨学科“异类”:她的动物学和哲学背景,使她打通了一条灵长类动物学研究-人类学-身份文化批评-政治的独特理论进路,而这条理论路线潜藏着的是对科学主义辩证性的批判、和对女性主义理论本体论的质疑:她似乎对科学主义既批判揭露其建构本质、却又对技术改造充满热情和希望;她强烈呼唤女性主义思潮和女性问题的解决,却又对当代的女性主义理论抱以釜底抽薪的颠覆态度。正如她所说,这一切都是“被绑在一起旋舞”的。

《灵长类视觉:现代科学世界中的性别、种族和自然》是她的成名之作。哈拉维还原灵长类动物学研究的学科发展史,一种“知识考古学”:通过动物学的观察实践方法对灵长类动物生活习性和社会构成的研究,实际上在哈拉维看来是一种男性观点科学体系建构的过程:在人类与灵长类动物的近亲和进化关系是公认的普遍“真理”,可作为研究前提的基础上,对灵长类动物的研究也就直接导向人类学的结论,灵长类动物内部的种族、性别和阶级状态,就被理所当然的在人类学范畴内被“合法化”。哈拉维甚至就此评论道:“灵长类学是女性主义理论的一种。”

哈拉维这一论断看似荒诞,其实却就在我们身边。比如网络女性情感咨询明星ayawawa的“女性”理论,就建构在她对各类猩猩生活习性的分类上,她也时刻借此标榜自己有关女性、婚姻和家庭的看法具有“充分的科学理论依据”。这一理论建构正是哈拉维所批判的一种科学主义的话语权力运作:即将自然界、动物界雌性地位较低的事实塑造为“自然而然的”科学真理和自然界运转规律,从而为在人类社会政治语境中压榨女性提供理论基础。

实际上,以波伏瓦《第二性》为代表的认为女性完全是被建构出来的、哈拉维坚信的“性别、种族或阶级意识是由父权制、殖民主义以及资本主义的充满矛盾的社会现实的可怕的历史经验强加于我们的结果”的观点,在当代早已受到广泛的修正和反拨:女性主义理论、尤其是文学艺术作品的女性视角几乎是完全不可能消除生理色彩的,甚至更进一步的观点认为,对女性独特生理状态的书写是女性主义建构的不可或缺的重要组成部分——类似严歌苓在《金陵十三钗》中以书娟的月经初潮为开场引出南京大屠杀这一时代背景的技巧,几乎已被认为是女性主义书写的经典例证。

罗伯特·罗德里格兹电影《恐怖星球》
哈拉维对女性主义理论发展方式的异议在于一种实际的社会问题关注视角:单纯地突出“差异”带来的只能是越发强力的对立和撕裂,而对男女性别生理差异的强调,同时也是在反面建构一种普遍的集体认知,制造某种“总体化”,取消女性内部的个体差异。从而湮灭个体的存在价值——如哈拉维所说,要是我们试图在制造一种适合所有女性的女性主义理论,那这和制造一种全人类都必须相信的帝国主义理论又有什么区别呢?

此时,哈拉维“以一种后现代主义的、非自然主义的方式、在想象一个无性别的世界——也许是一个没有遗传的世界,但也许也是一个没有终结的世界——的乌托邦传统中,促进社会主义女性主义的文化和理论”,她在《赛博格宣言》中毅然提出了这样的一个看起来非常“科幻”的问题:如果人机融合技术的发展可以抹平一切性别上的生理差异,那么性别问题还有必要存在吗?

她断言,“毕竟,性别不可能是普遍的身份。”也就是说,当鼓吹赛博格技术的理论家们热情、欣喜地看到人机融合为人类作为一个“集体”的存在所能带来的巨大变革和发展的同时,赛博格技术对于每一个“个体”的影响和变革同样重要。在赛博格技术高度发展的前提下,不仅是性别的生理差异可以被抹平,一切有关性的、有关生理性的、有关少数族裔群体的、种族的、甚至文化的差异都可以被技术浪潮所轰然推平——技术的担忧者往往忧愁于技术将我们同化为单向度,却遗忘了有时候差异对个体本身所带来的痛苦。技术可以不反对差异,技术完全可以只反对那些会引发痛苦和争议的差异,我们能够享受的“差异”,根本上理应是我们自己选择的。当赛博格理论进入的时候,不仅是女性主义,一切亟需斗争的群体都获得了全新的方向,因为传统意义上的逻辑二元论和认识论被根本上打破了:“赛博格颠覆了西方文化起源的中心神话……对女性主义赛博格来说,最为重要的菲勒斯—逻各斯中心主义的起源故事。”

赛博格女性主义也许现在看来还只是一种不曾实现的“科幻”,但它彻底地撕下了试图掩盖前现代传统与后现代主义被同一在某种群体内,如女性、如黑人族裔、如酷儿集体之中时,斗争过程中产生的不可调和的矛盾的那层温情脉脉的面纱——是否承认二元论和传统认识论,是否需要规范的统一言语建构,既有的“差异”究竟该被视作斗争的武器还是应该被超越的藩篱,女性主义理论需要一种范本吗?哈拉维的赛博格狂想,令所有弱势群体和少数族裔理论研究者们,都不得不回头重新反思自己的初衷。

在当代中国对女性主义的公共讨论中,技术时常以一种代表男性权力的“魔鬼”样貌出现,通讯信息技术的发展必然带来大规模的控制和监视:这几乎已经是从批判理论的学养中诞生的某种社会共识,在几十年来的“赛博朋克”文学中成为一种颠扑不破的世界观:技术被传统的、前现代的规范和意识形态,塑造成了需要被控制的魔鬼。

数周前,一名试图运用大数据搜索和人脸识别技术,分析色情网站上的女性面部“为男同胞提供福音”的程序员激发了大规模的女性愤怒——隐私权的被侵害、对女性强烈的物化意识都成为了批判的风暴中心;而几日后,一则由女性发布的,希望相关部门运用大数据曝光并公开男性犯罪分子记录的微博呼吁却也遭受到男性观点的反噬,“隐私权”这一被普遍认同的伦理此时成为性别对立双方共同的争辩武器,连同技术也成为一种被争夺的手段,其价值仅仅在于斗争中如何仅为其中一方服务:我们已经默许了技术的无所不能,也默许了我们的生活和未来将彻底为技术所改变。

而这样的状态,正是意大利理论家,德勒兹主义者罗西·布拉伊多蒂所提出的“后人类”的概念:无论是离不开智能手机,随时被各类设备所监视的当代人类,还是未来实现人机融合的赛博格人类,我们都已经不再是过去的人类形态,技术终将改变我们,而我们也必须思考如何作为一种全新的人类生活下去。也就是说,很多我们津津乐道的“伦理问题”是没有讨论价值的,这些讨论也许会延缓一些技术的革新和运用,但终究将无力改变我们作为人类主体的根本上的被改变。

“后人类”意味着高度的去人类中心化。一切从启蒙人文主义时代所建构而来的有关人类身体独一无二、人类精神无比高贵的论述都过时了,我们唯一珍贵的仅仅是我们的存在本身。也因此,将大脑意识上传至云端从而放弃肉体获取永生,成为了后人类意义下的一种赛博格形式。种种类似的狂想都指向一种对身体性的厌弃:如果之前的赛博格主义是运用技术来弥补身体性的不足从而以身体性的完美而达到纯粹的自由的话,“后人类”的赛博格甚至认为身体性正是束缚人类自由的一部分,我们完全能以数码形式存在:而如果身体性被彻底抛弃,是不是一切身份认知政治理论和少数族裔的理论斗争问题都会得到技术性的解决?从智能手机开始起步的“后人类”,其实更有可能是要取消一切身体差异而不是让身体变得完美无缺?诉诸云端的人类和机器的差别还会清晰吗?我们究竟会以一个什么样的形态迎接这必然到达的未来?

我们真的愿意接受这条道路,接受这一进步主义的黄金图式吗?归根结底,这种对于未来的愿景究竟是一种对人类的乐观,还是一种恐怖的科幻故事“缸中之脑”的再现呢?而其实,这一切都关乎于我们如何理解马克思的那句引发人类永恒为之而奋斗的箴言:“实现人类的全面发展”:我们究竟还需不需要以一种坚实的动机来鼓舞前进呢?还是当我们生存在这个世界上的时候,我们就已经不可避免地在向前行进了呢?

新世纪到来,我们从此对玄之又玄的20世纪下半叶的文学转向理论失去信心,我们试图重新用理性的、看似正常的、客观的东西来重建信仰,我们试图相信某些概念是人类永恒不变的价值。可现在的我们解决问题了吗?我们是不是会觉得问题最终没有办法解决呢?我们是不是都只是在斗兽竞技场上被无形的力量划分了阵营的角斗士,借助网络空间进行不流血的斗争与厮杀?

事实是,公共空间上的性别讨论随着每一次女性受害犯罪事件而变得更加撕裂。面对女性受害的悲惨状态,女性观点逐渐走向斗争性和不妥协——仅仅针对犯罪本子本人和法律应对措施的讨论已经不能满足女性的讨论诉求,性别对立、对男性的无差别谴责和恐惧成为观点上的某种主流。面对这种观点的反驳是苍白的,因为女性一方彻底的斗争姿态和情感真实性,使得所谓的“客观”“理性”的讨论,更类似纸上谈兵、麻木不仁的空谈。

同时,这种斗争性的直接矛头、或者被普遍认为的直接对象,大多也指向单身青年男性群体。因此面对如此直接的斗争性,男性观点使用一种“另开战场”式的对恐惧情绪的贩卖,完成了对“女权”的强烈污名化:当女性观点将所有男性都纳入到斗争对象的时候,即意味着“理性”可能的彻底退出和性别讨论的终结(在男性观点话语中,“理性”某种意义上也具备性别独占的优势)。于是在各自之间的话语无法沟通的情况下,撕裂、战争和抱团取暖的舆论带来双重的“污名化”——网络赛博空间带来的是无差别的发声渠道,同时也带来的是难以跨越的、群体性的透明信息茧房,以及对斗争的彻底浪漫化想象:网络和技术给予了女性问题(或者说很多其他问题)极大的讨论空间,也同时暗中为空间划定了界限。

那么神话故事的开端是:就在我们逐渐意识到信息自由并不能带来沟通交流的自由,身怀各种利益牵制的我们,其实是在运用信息建造更高的信息壁垒、同时加强沟通成本的同时,5G时代又在技术突破的大环境下悄然来临。实际上,不仅是普通人,哪怕是通信科研从业者也很难预计技术在未来是如何使用的,一如当初只以为加载图片会更加迅速的4G带来了铺天盖地的网络直播和交互时代那样,我们对未来5G时代可能带来的生活变革也一无所知:这种透明的信息茧房是会被塑造得更加难以逾越,还是有可能在信息的洪流中轰然崩溃?

我们人类仅仅能够满足于作为技术的裹挟对象吗?我们自己能不能向新的存在形式发展,从而主导和控制技术呢?实际上,当我们意识到技术改变了我们的生活的时候,技术似乎也真的成为我们改变理论困境和社会困境的一种可能性——马克思当初预言的“物质条件高度丰富的时代”,也许是在指一种技术解决物质条件的“后人类”未来。我们因为技术的广泛运用而越发撕裂,根本也许是我们还没有去主动改造自我?赛博格主义是否带来了一种创造新世界的进步神话?

神话的开端,选择已经给出;神灵在哑口无言,人类在诚惶诚恐。

关于This Mortal Coil乐队名字的由来,出自《哈姆雷特》中著名的演讲”To be, or not to be, that is the question”,原句为When we have shuffled off this mortal coil

Mortal coil是17世紀的古英文,Coil在當時的意思是”困難、混亂。Mortal就是俗世的意思,兩者相加就是代表世間瑣碎的紛爭。

To be, or not to be, that is the question:

Whether ‘tis nobler in the mind to suffer

The slings and arrows of outrageous fortune,

Or to take arms against a sea of troubles

And by opposing end them. To die—to sleep,

No more; and by a sleep to say we end

The heart-ache and the thousand natural shocks

That flesh is heir to: ‘tis a consummation

Devoutly to be wish’d. To die, to sleep;

To sleep, perchance to dream—ay, there’s the rub:

For in that sleep of death what dreams may come,

When we have shuffled off this mortal coil,

Must give us pause—there’s the respect

That makes calamity of so long life.

For who would bear the whips and scorns of time,

Th’oppressor’s wrong, the proud man’s contumely,

The pangs of dispriz’d love, the law’s delay,

The insolence of office, and the spurns

That patient merit of th’unworthy takes,

When he himself might his quietus make

With a bare bodkin? Who would fardels bear,

To grunt and sweat under a weary life,

But that the dread of something after death,

The undiscovere’d country, from whose bourn

No traveller returns, puzzles the will,

And makes us rather bear those ills we have

Than fly to others that we know not of?

Thus conscience doth make cowards of us all,

And thus the native hue of resolution

Is sicklied o’er with the pale cast of thought,

And enterprises of great pith and moment

With this regard their currents turn awry

And lose the name of action.

生存还是毁灭,这是一个值得考虑的问题; 默然忍受命运的暴虐的毒箭,或是挺身反抗人世的无涯的苦难,通过斗争把它们扫清,这两种行为,哪一种更高贵?死了;睡着了;什么都完了;要是在这一种睡眠之中,我们心头的创痛,以及其他无数血肉之躯所不能避免的打击,都可以从此消失,那正是我们求之不得的结局。死了;睡着了;睡着了也许还会做梦;嗯,阻碍就在这儿:因为当我们摆脱了这一具朽腐的皮囊以后,在那死的睡眠里,究竟将要做些什么梦,那不能不使我们踌躇顾虑。人们甘心久困于患难之中,也就是为了这个缘故;谁愿意忍受人世的鞭挞和讥嘲、压迫者的凌辱、傲慢者的冷眼、被轻蔑的爱情的惨痛、法律的迁延、官吏的横暴和费尽辛勤所换来的小人的鄙视,要是他只要用一柄小小的刀子,就可以清算他自己的一生?谁愿意负着这样的重担,在烦劳的生命的压迫下呻吟流汗,倘不是因为害怕不可知的死后,害怕那从来不曾有一个旅人回来过的神秘之国,是它迷惑了我们的意志,使我们宁愿忍受目前的折磨,不敢向我们所不知道的痛苦飞去?这样,重重的顾虑使我们全变成了懦夫,决心的赤热的光彩,被审慎的思维盖上了一层灰色,伟大的事业在这一种考虑之下,也会逆流而退,失去了行动的意义。且慢!美丽的奥菲利娅!——女神,在你的祈祷之中,不要忘记替我忏悔我的罪孽。

20220524204226

caller(Caller-Saved)调用者保存寄存器

zero恒等于0

ra保存函数的返回地址

sp栈指针,它指向内存中栈顶地址

fp栈帧指针,表示当前栈帧的起始位置,是一个被调用者保存寄存器。

当前执行函数的栈帧的两个边界分别由栈指针 (Stack Pointer)寄存器和栈帧指针(frame pointer)寄存器来限定。

WSL2编译aosp并刷入Pixel

搭建构建环境

https://source.android.google.cn/setup/build/initializing?hl=zh-cn

本人Ubuntu版本是22.02

1
2
#Ubuntu 18.04,其他版本请自行查看官方文档
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

设置WSL内存和swap

https://docs.microsoft.com/zh-cn/windows/wsl/wsl-config

打开开始菜单,输入%UserProfile%,新建.wslconfig,写入以下配置:

1
2
3
4
5
6
7
8
9
10
[wsl2]

# wsl默认为windows内存的50%,尽量设置大一点
memory=12GB

# 处理器数量,也是越多越好
processors=6

# swap大小,32有点多了,实际用不上,但也不影响什么,编译完可以再改回来
swap=32GB

然后wsl关闭,重启。

wsl2挂载USB

既然是wsl编译的,刷机的时候自然需要adbfastboot命令,但是wsl默认是没有连接USB的,需要手动安装usbipd-win
具体可翻阅Microsoft官方文档

注意事项(重要)

  • 微软并没有把wsl推送到最新版本,因此如果自己的Linux内核在5.10.60.1以下,务必手动升级内核,传送门。直接下载安装即可,记得先关闭wsl
  • 如果是Ubuntu 20.04以上,apt可能找不到linux-tools-5.4.0-77-generic,请参照官方解决办法

    其他可能需要的配置

    设置文件夹区分大小写

    如果你是在/mnt/*/下进行编译的,可能需要把文件夹改为大小写敏感,具体可见官方文档

    转移wsl默认位置

    wsl默认是在C盘创建一个vhxd虚拟硬盘,所以如果C盘空间不多,可以转移到其他盘,原文链接
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # 查看安装的虚拟机
    wsl -l -v

    # 关闭所有正在运行的虚拟机
    wsl --shutdown

    # 对需要迁移的分发或虚拟机导出
    # 虚拟机名称:wsl -l -v可以查看名字,我的是Ubuntu-20.04
    # 文件导出路径:我导出在D盘(D:\wsl-Ubuntu-20.04.tar)
    wsl --export 虚拟机名称 文件导出路径

    # 卸载虚拟机(删除C盘的虚拟机数据)
    wsl --unregister 虚拟机名称

    # 导入新的虚拟机
    # 目标路径:新的虚拟机文件路径(理解为软件的安装路径就对了,我安装在D:\wsl\Ubuntu2004)
    # 虚拟机文件路径:第3步导出的文件(D:\wsl-Ubuntu-20.04.tar)
    # --version 2:指定使用WSL2,如果填1就是指定使用WSL
    wsl --import 虚拟机名称 目标路径 虚拟机文件路径 --version 2

查找手机对应的aosp分支

源代码标记和 build

Build ID:要在下面查找驱动时用到

标记:是源代码的分支

支持设备:要注意该分支是否支持自己的手机

本人Pixel,所以对应的标记是android-10.0.0_r17,即pixel支持的最后一个版本

安装repo

1
2
sudo apt-get update
sudo apt-get install repo

下载aosp

方法1:下载主工程压缩包

下载aosp压缩包 https://source.android.com/setup/build/downloading

解压后执行

1
2
3
4
5
6
7
8
9
10
repo sync

#查看当前所有分支
cd .repo/manifests
git branch -a

#切换自己想要编译的分支
repo init -b android-10.0.0_r17 //步骤一中的标记
repo sync //可省略
repo start aosp_userdebug_10 --all //创建自己的分支

方法2:直接同步指定分支(中科大源)

参考AOSP(Android) 镜像使用帮助 - LUG @ USTC

可以直接拉取特定的版本:

1
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-10.0.0_r17

下载驱动

1、根据自己手机型号找到对应代号

https://developers.google.com/android/drivers

本人使用的是pixel一代,代号为sailfish,根据步骤一中的build找到对应驱动,如本人的是QP1A.191005.007.A3

2、解压运行sh文件,生成驱动目录vendor,将整个verdor目录拷贝至aosp根目录

编译aosp

1
2
3
source build/envsetup.sh
lunch aosp_sailfish-userdebug //这里选userdebug版本,拥有root权限,不知道可以只运行 lunch 然后选择
make -j8

刷入镜像

切换到目录 /aosp/out/target/product/自己手机的代号

运行

1
2
# 对应上面的版本
lunch aosp_sailfish-userdebug
1
2
3
4
5
6
7
8
#进入bootloader模式
adb reboot bootloader

#自动刷入 -w双清
fastboot flashall -w

#重启手机
fastboot reboot

flashall方式若无效,可用以下命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#双清
fastboot erase cache
fastboot erase userdata

#刷入boot
fastboot flash boot_a boot.img
fastboot flash boot_b boot.img

#刷入system.img
fastboot flash system system.img
fastboot flash system_b system_other.img

#刷入驱动
fastboot flash vendor vendor.img

#刷入其他模块(电信4G、GMS等),此步骤可省略
fastboot flash modem modem.img

Linker Scripts链接器脚本语法

最近在学习自制操作系统,遇到了链接脚本(Linker Scripts),之前没有接触过,在此记下笔记以及遇到的场景。

LMA与VMA

LMA英文原版解释:load memory address:the address at which the section will be loaded。

什么是load memory address,内存装载地址呢?此处,单单从名字上,我们就可以看出几层意思:

load,装载。为什么要装载呢?因为,如果想要使你的程序(即经历过,由你的源码,通过编译器的编译,链接器的链接,形成的那个可执行文件),能在内存里面运行,那么肯定涉及到这一点。就是,有人,把你的这个程序从此处常见的存储器硬盘里面,搬到内存里面去了,然后才有可能运行。而这里的装载,就是对应这个意思。就是把程序,从硬盘里面,装载load,到内存里面去了。对应的,放在内存哪里去了呢?就是LMA,load memory address,就是把你的程序中的对应的内容,详细点说就是,把其中的.text代码段,.data数据段等内容,搬到,也就是copy拷贝到,内存的LMA地址处了。。。

memory内存

上面已经解释过了,这里再多说几句。

程序运行的本质,就是CPU读取到指令,然后执行,这里就涉及到,如果想要你的程序运行,首先,你应该把对应的指令放在合适的地方,CPU才能读到,才能执行。

此处合适的地方,有人想到,直接放到硬盘这里,CPU过来读取,然后执行不就可以了吗,还不用这么麻烦地将(指令)代码搬来搬去的,多省事。但是实际上,系统就是这么笨地搬来搬去的,原因在于,从硬盘上直接读取指令,速度比直接从内存,一般pc上各种类型的ram,比如DDR,此处统称为memory/内存,要慢很多倍,所以,系统才会不嫌弃麻烦,把代码拷贝到内存里面去,然后从内存里面读取指令,然后执行,这样效率高很多。

所以,此处简单说就是,为了总体效率,对于普通系统,比如PC,程序的执行都是在memory,内存里面执行的。因此,一句话总结就是:代码被装载到内存的某个地方,那个地方的地址就叫做LMA。

VMA英文原版解释:virtual memory address:the address the section will have when output file is run。

那啥是虚拟内存地址呢?简单说就是,你程序运行时候所对应的地址。

此处所谓的虚拟,一般来说,指的是启用了mmu之后,才有了虚拟地址和实地址。此处,我们可以简单地理解为,就是内存的实际地址。程序运行前,要把程序的内容,拷贝到对应的内存地址出,才能运行的。

因此,一句话总结就是:代码要运行的时候,此时对应的地址,就是VMA。

大多数情况下,LMA和VMA是一样的。也就是被加载到内存的什么地方,也就在什么地方运行。

如果是嵌入式系统,也就是相对的“少数情况”,LMA和VMA不一样。而其中最常见的一种情况就是,程序被放到ROM中,比如设置为只读的Nor Flash中,也就是LMA的地址是Nor Flash的地址,比如随便举例为0x10000000,而程序要运行的时候的地址是内存地址,比如0x30000000,也就是VMA是0x30000000,这时候就要我们自己保证,在程序运行之前,把自己的程序,从LMA= 0x10000000拷贝到VMA=0x30000000处,然后程序才可以正常运行。

有人会问,反正对于ROM来说,CPU也是可以直接从ROM里面读取代码,然后运行的。为何还要前面提到的,弄个LMA和VMA不同,搬来搬去的呢?因为ROM,顾名思义,是只读的,只能读取,不能写入的。

而程序中的代码段,由于只是被读取,不涉及到修改写入,是没有问题的。但是对于数据段和bss段来说,里面的所有的程序的变量,多数都是在运行的时候,不仅要读取,而且要被修改成新的值,然后写入新的值的,所以还是放到ROM里面,就没法修改写入了。而且,另一个原因是,CPU从ROM,比如常见的Nor Flash中读取代码的速度,要远远小于从RAM,比如常见的SDRAM,中读取的速度,所以,才会牵扯到将代码烧写到ROM里面,然后代码的最开始,将此部分程序reload,重载。也就是从此处的ROM的地址,即LMA,重新拷贝到SDRAM中去,也就是VMA的地方,然后从那里运行。

后记

关于LMA和VMA:

linker,链接器的作用:

将LMA写到(可执行的)二进制文件里面去。

解析符号。即,把不同的符号,根据符号表中的信息,转换成对应的地址。此处只涉及VMA,即程序运行时候的地址。

loader,装载器的作用:

从二进制文件中读出对应的段的信息,比如text,data,bss等段的信息,将内容拷贝到对应的LMA的地址处。此谓,装载(对应内容)到装载地址(LMA)。

如果发现VMA != LMA,即程序运行时候的地址,和刚刚把程序内容拷贝到的地址LMA,两者不一样,那么就要把对应的内容,此处主要是data,数据段的内容,从刚装载到的位置,LMA处,拷贝到VMA处,这样程序运行的时候,找到对应的VMA处的变量,才能找到对应的值,程序才能正常运行。

vant pull refresh组件刷新触发范围

问题:pull refresh包裹list,如果list无数据,下拉可触控范围只是header高

官网文档给出的建议是:

事实上并不管用!!!

正确的解决方案

  • pull refresh按上述设置min-height: 100vh
  • list也要设置
    1
    2
    3
    .list{
    height:100%; min-height: 100vh;
    }
    完美解决无数据时的高度问题。

下载

由于某种神秘力量,国内无法直接访问mediawiki以及其资源,可下载到本地后,再上传压缩包至自己的服务器

环境配置

HTTPS

https可以用免费的certbot,https://certbot.eff.org/

PHP

本人用的是centos8,默认的yum安装的php是7.2,不符合mediawiki官网文档的要求,”MediaWiki与PHP7.3.0-7.3.18和7.4.0-7.4.2不兼容”,详见https://www.mediawiki.org/wiki/Manual:Installation_guide/zh 因此需要用dnf安装最新的php。