问题描述
构建锆石后,我得到
lz@vm:~/fuchsia/out/default/kernel_arm64$ ls -la
total 73892
drwx------ 4 lz lz 4096 jul 26 02:36 .
drwxrwxr-x 36 lz lz 20480 jul 26 02:39 ..
drwx------ 4 lz lz 4096 jul 26 01:23 gen
-rwxrwxr-x 1 lz lz 3044192 jul 26 02:36 image
-rw-rw-r-- 1 lz lz 0 jul 26 02:36 image.build-id.stamp
-rw-rw-r-- 1 lz lz 3442 jul 26 02:36 image.map
-rwxrwxr-x 1 lz lz 2178064 jul 26 02:36 kernel.zbi
drwx------ 8 lz lz 4096 jul 26 02:32 obj
-rw-rw-r-- 1 lz lz 40021 jul 26 01:23 toolchain.ninja
-rwxrwxr-x 3 lz lz 66370040 jul 26 02:36 zircon.elf
-rw-rw-r-- 1 lz lz 16 jul 26 02:36 zircon.elf.build-id.stamp
-rw-rw-r-- 2 lz lz 36414 jul 26 01:03 zircon.elf-gdb.py
-rw-rw-r-- 1 lz lz 3944049 jul 26 02:36 zircon.elf.map
如您所见,它创建了一个 .elf zircon 内核(image
也是一个 .elf 但我不知道与 zircon.elf 有什么区别)。
我在 COFF format 中看到过 ARM 内核,但在 ELF 中没有。为什么Fuchsia的内核Zircon会产生elf文件?
解决方法
构建系统将内核镜像编译为ELF格式以进行调试和反汇编(该格式包含调试符号)。从那里,图像内容被剥离、扁平化并压缩为最终的 h = "
case sample group outcome control
1 1 1 1 1 1
2 1 2 1 1 1
3 1 1 2 1 1
4 1 2 2 1 1
5 1 1 1 2 1
6 1 2 1 2 1
7 1 1 2 2 1
8 1 2 2 2 1
9 2 1 1 1 1
10 2 1 2 1 1
11 2 1 1 2 1
12 2 1 2 2 1
13 3 1 1 1 1
14 3 2 1 1 1
15 3 1 1 2 1
16 3 2 1 2 1
17 4 1 1 1 1
18 4 2 1 1 1
19 4 1 2 1 1
20 4 2 2 1 1
21 5 1 1 1 1
22 5 1 2 1 1
23 6 1 1 1 1
24 6 1 2 1 1
25 7 1 1 1 1
26 7 2 1 1 1
27 8 1 1 1 1
28 9 1 1 1 1
29 9 2 1 1 1
30 9 1 2 1 1
31 9 2 2 1 1
32 9 1 1 2 1
33 9 2 1 2 1
34 9 1 2 2 1
35 9 2 2 2 1
36 9 1 1 1 2
37 9 2 1 1 2
38 9 1 2 1 2
39 9 2 2 1 2
40 9 1 1 2 2
41 9 2 1 2 2
42 9 1 2 2 2
43 9 2 2 2 2
44 10 1 1 1 1
45 10 1 2 1 1
46 10 1 1 2 1
47 10 1 2 2 1
48 10 1 1 1 2
49 10 1 2 1 2
50 10 1 1 2 2
51 10 1 2 2 2
52 11 1 1 1 1
53 11 2 1 1 1
54 11 1 1 2 1
55 11 2 1 2 1
56 11 1 1 1 2
57 11 2 1 1 2
58 11 1 1 2 2
59 11 2 1 2 2
60 12 1 1 1 1
61 12 2 1 1 1
62 12 1 2 1 1
63 12 2 2 1 1
64 12 1 1 1 2
65 12 2 1 1 2
66 12 1 2 1 2
67 12 2 2 1 2
68 13 1 1 1 1
69 13 1 2 1 1
70 13 1 1 1 2
71 13 1 2 1 2
72 14 1 1 1 1
73 14 1 2 1 1
74 14 1 1 1 2
75 14 1 2 1 2
76 15 1 1 1 1
77 15 2 1 1 1
78 15 1 1 1 2
79 15 2 1 1 2
80 16 1 1 1 1
81 16 1 1 1 2"
h = read.table(text=h,h=T)
foo2 <- function(dat,study_col,group_col,outcome_col) {
dat %>%
dplyr::select({{study_col}},{{group_col}},{{outcome_col}}) %>%
dplyr::group_by({{study_col}}) %>%
dplyr::mutate(grp = stringr::str_c(n_distinct({{group_col}}) == 1,n_distinct({{outcome_col}}) == 1 )) %>%
dplyr::ungroup(.) %>%
dplyr::group_split(grp,.keep = FALSE) }
图像。
Zircon 引导映像 (ZBI) 是用于 Zircon 内核的专用格式。您可能会发现 Fuchsia.dev 上的以下页面很有帮助,其中涉及 ZBI 格式:Zircon kernel to userspace bootstrapping。