PAT_1027: Colors in Mars

People in Mars represent the colors in their computers in a similar way as the Earth people. That is, a color is represented by a 6-digit number, where the first 2 digits are for Red, the middle 2 digits for Green, and the last 2 digits for Blue. The only difference is that they use radix 13 (0-9 and A-C) instead of 16. Now given a color in three decimal numbers (each between 0 and 168), you are supposed to output their Mars RGB values.

Input

Each input file contains one test case which occupies a line containing the three decimal color values.

Output

For each test case you should output the Mars RGB value in the following format: first output "#", then followed by a 6-digit number where all the English characters must be upper-cased. If a single color is only 1-digit long, you must print a "0" to the left.

Sample Input
15 43 71
Sample Output
#123456
备注:简单题。注意0的情况。
#include<stdio.h>

void TransformAndPrint(int n)
{
	if(n==0)
	{
		printf("00");
		return;
	}
	int s[2];
	int i=1;
	while(n>0)
	{
		s[i--]=n%13;
		n=n/13;
	}
	if(i==0)
		s[i]=0;
	for(i=0;i<2;i++)
	{
		if(s[i]>=0 && s[i]<=9)
			printf("%d",s[i]);
		else
			printf("%c",s[i]-10+'A');
	}
}

int main()
{
	int a,b,c;
	scanf("%d %d %d",&a,&b,&c);

	printf("#");
	TransformAndPrint(a);
	TransformAndPrint(b);
	TransformAndPrint(c);

	return 0;
}


Aug 8 18:52:11 node01 kubelet: I0808 18:52:11.457529 3083 operation_generator.go:831] UnmountVolume.TearDown succeeded for volume "kubernetes.io/csi/bmlstorage^bml-all-bml-pv" (OuterVolumeSpecName: "bml-storage") pod "ddb8b72a-0217-4e1c-ac4d-e31748233f6a" (UID: "ddb8b72a-0217-4e1c-ac4d-e31748233f6a"). InnerVolumeSpecName "bml-all-default-pv". PluginName "kubernetes.io/csi", VolumeGidValue "" Aug 8 18:58:06 node01 journal: Runtime journal is using 8.0M (max allowed 4.0G, trying to leave 4.0G free of 377.2G available → current limit 4.0G). Aug 8 18:58:06 node01 kernel: Linux version 4.17.11-1.el7.elrepo.x86_64 (mockbuild@Build64R7) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)) #1 SMP Sat Jul 28 09:33:09 EDT 2018 Aug 8 18:58:06 node01 kernel: Command line: BOOT_IMAGE=/vmlinuz-4.17.11-1.el7.elrepo.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rhgb quiet LANG=zh_CN.UTF-8 Aug 8 18:58:06 node01 kernel: x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers' Aug 8 18:58:06 node01 kernel: x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers' Aug 8 18:58:06 node01 kernel: x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers' Aug 8 18:58:06 node01 kernel: x86/fpu: Supporting XSAVE feature 0x008: 'MPX bounds registers' Aug 8 18:58:06 node01 kernel: x86/fpu: Supporting XSAVE feature 0x010: 'MPX CSR' Aug 8 18:58:06 node01 kernel: x86/fpu: Supporting XSAVE feature 0x020: 'AVX-512 opmask' Aug 8 18:58:06 node01 kernel: x86/fpu: Supporting XSAVE feature 0x040: 'AVX-512 Hi256' Aug 8 18:58:06 node01 kernel: x86/fpu: Supporting XSAVE feature 0x080: 'AVX-512 ZMM_Hi256' Aug 8 18:58:06 node01 kernel: x86/fpu: Supporting XSAVE feature 0x200: 'Protection Keys User registers' Aug 8 18:58:06 node01 kernel: x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256 Aug 8 18:58:06 node01 kernel: x86/fpu: xstate_offset[3]: 832, xstate_sizes[3]: 64 Aug 8 18:58:06 node01 kernel: x86/fpu: xstate_offset[4]: 896, xstate_sizes[4]: 64 Aug 8 18:58:06 node01 kernel: x86/fpu: xstate_offset[5]: 960, xstate_sizes[5]: 64 Aug 8 18:58:06 node01 kernel: x86/fpu: xstate_offset[6]: 1024, xstate_sizes[6]: 512 Aug 8 18:58:06 node01 kernel: x86/fpu: xstate_offset[7]: 1536, xstate_sizes[7]: 1024 Aug 8 18:58:06 node01 kernel: x86/fpu: xstate_offset[9]: 2560, xstate_sizes[9]: 8 Aug 8 18:58:06 node01 kernel: x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using 'compacted' format. Aug 8 18:58:06 node01 kernel: e820: BIOS-provided physical RAM map: Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000003dfff] usable Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x000000000003e000-0x000000000003efff] reserved Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x000000000003f000-0x000000000009ffff] usable Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x00000000000a0000-0x00000000000fffff] reserved Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x0000000000100000-0x00000000652acfff] usable Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x00000000652ad000-0x00000000673acfff] reserved Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x00000000673ad000-0x0000000067cfefff] ACPI data Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x0000000067cff000-0x00000000681ebfff] ACPI NVS Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x00000000681ec000-0x000000006a9fefff] reserved Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x000000006a9ff000-0x000000006f7fffff] usable Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x000000006f800000-0x000000008fffffff] reserved Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x00000000fd000000-0x00000000fe7fffff] reserved Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x00000000fed20000-0x00000000fed44fff] reserved Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved Aug 8 18:58:06 node01 kernel: BIOS-e820: [mem 0x0000000100000000-0x000000c03fffffff] usable Aug 8 18:58:06 node01 kernel: NX (Execute Disable) protection: active Aug 8 18:58:06 node01 kernel: extended physical RAM map: Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000000000000-0x000000000003dfff] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000000003e000-0x000000000003efff] reserved Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000000003f000-0x000000000009ffff] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000000a0000-0x00000000000fffff] reserved Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000000100000-0x00000000593ca017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000593ca018-0x0000000059444857] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000059444858-0x0000000059445017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000059445018-0x00000000594bf857] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000594bf858-0x00000000594c0017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000594c0018-0x00000000594f9a57] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000594f9a58-0x00000000594fa017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000594fa018-0x0000000059533a57] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000059533a58-0x00000000597b9017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000597b9018-0x00000000597f2a57] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000597f2a58-0x00000000597f3017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000597f3018-0x000000005982ca57] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000005982ca58-0x000000005982d017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000005982d018-0x000000005985fc57] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000005985fc58-0x0000000059860017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000059860018-0x0000000059892c57] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000059892c58-0x0000000059a4d017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000059a4d018-0x0000000059a7fc57] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000059a7fc58-0x000000005bce3017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000005bce3018-0x000000005bcfa057] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000005bcfa058-0x000000005bcfb017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000005bcfb018-0x000000005bd2dc57] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000005bd2dc58-0x000000005bdb5017] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000005bdb5018-0x000000005bdbd057] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000005bdbd058-0x00000000652acfff] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000652ad000-0x00000000673acfff] reserved Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000673ad000-0x0000000067cfefff] ACPI data Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000067cff000-0x00000000681ebfff] ACPI NVS Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000681ec000-0x000000006a9fefff] reserved Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000006a9ff000-0x000000006f7fffff] usable Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x000000006f800000-0x000000008fffffff] reserved Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000fd000000-0x00000000fe7fffff] reserved Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000fed20000-0x00000000fed44fff] reserved Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x00000000ff000000-0x00000000ffffffff] reserved Aug 8 18:58:06 node01 kernel: reserve setup_data: [mem 0x0000000100000000-0x000000c03fffffff] usable Aug 8 18:58:06 node01 kernel: efi: EFI v2.80 by American Megatrends Aug 8 18:58:06 node01 kernel: efi: ACPI=0x67e22000 ACPI 2.0=0x67e22014 SMBIOS=0x6a448000 SMBIOS 3.0=0x6a447000 MEMATTR=0x5b62d018 ESRT=0x5f670e98 Aug 8 18:58:06 node01 kernel: SMBIOS 3.3.0 present. Aug 8 18:58:06 node01 kernel: DMI: New H3C Technologies Co., Ltd. H3C UniServer R6900 G5/RS65M2C11SA, BIOS 5.71 01/11/2024 Aug 8 18:58:06 node01 kernel: e820: last_pfn = 0xc040000 max_arch_pfn = 0x400000000 Aug 8 18:58:06 node01 kernel: x86/PAT: Configuration [0-7]: WB WC UC- UC WB WP UC- WT Aug 8 18:58:06 node01 kernel: total RAM covered: 785392M Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 64K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 128K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 256K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 512K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 1M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 2M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 4M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 8M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 16M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 64K #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 128K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 256K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 512K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 1M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 2M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 4M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 8M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 16M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 128K #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 256K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 512K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 1M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 2M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 4M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 8M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 16M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 256K #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 512K #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 1M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 2M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 4M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 8M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 16M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 512K #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 1M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 2M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 4M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 8M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 16M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 1M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 2M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 4M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 8M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 16M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 2M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 4M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 8M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 16M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 4M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 8M #011chunk_size: 8M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 8M #011chunk_size: 16M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 8M #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 8M #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 8M #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 8M #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 8M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 8M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 8M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 16M #011chunk_size: 16M #011num_reg: 10 #011lose cover RAM: 737G Aug 8 18:58:06 node01 kernel: gran_size: 16M #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 16M #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 16M #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 16M #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 16M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 16M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 16M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1G Aug 8 18:58:06 node01 kernel: gran_size: 32M #011chunk_size: 32M #011num_reg: 10 #011lose cover RAM: 721936M Aug 8 18:58:06 node01 kernel: gran_size: 32M #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 1040M Aug 8 18:58:06 node01 kernel: gran_size: 32M #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1040M Aug 8 18:58:06 node01 kernel: gran_size: 32M #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1040M Aug 8 18:58:06 node01 kernel: gran_size: 32M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1040M Aug 8 18:58:06 node01 kernel: gran_size: 32M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1040M Aug 8 18:58:06 node01 kernel: gran_size: 32M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1040M Aug 8 18:58:06 node01 kernel: gran_size: 64M #011chunk_size: 64M #011num_reg: 10 #011lose cover RAM: 656432M Aug 8 18:58:06 node01 kernel: gran_size: 64M #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 1072M Aug 8 18:58:06 node01 kernel: gran_size: 64M #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1072M Aug 8 18:58:06 node01 kernel: gran_size: 64M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1072M Aug 8 18:58:06 node01 kernel: gran_size: 64M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1072M Aug 8 18:58:06 node01 kernel: gran_size: 64M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1072M Aug 8 18:58:06 node01 kernel: gran_size: 128M #011chunk_size: 128M #011num_reg: 10 #011lose cover RAM: 525424M Aug 8 18:58:06 node01 kernel: gran_size: 128M #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 1136M Aug 8 18:58:06 node01 kernel: gran_size: 128M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1136M Aug 8 18:58:06 node01 kernel: gran_size: 128M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1136M Aug 8 18:58:06 node01 kernel: gran_size: 128M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1136M Aug 8 18:58:06 node01 kernel: gran_size: 256M #011chunk_size: 256M #011num_reg: 10 #011lose cover RAM: 263408M Aug 8 18:58:06 node01 kernel: gran_size: 256M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1264M Aug 8 18:58:06 node01 kernel: gran_size: 256M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1264M Aug 8 18:58:06 node01 kernel: gran_size: 256M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1264M Aug 8 18:58:06 node01 kernel: gran_size: 512M #011chunk_size: 512M #011num_reg: 10 #011lose cover RAM: 1520M Aug 8 18:58:06 node01 kernel: gran_size: 512M #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1520M Aug 8 18:58:06 node01 kernel: gran_size: 512M #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: 1520M Aug 8 18:58:06 node01 kernel: gran_size: 1G #011chunk_size: 1G #011num_reg: 10 #011lose cover RAM: 1008M Aug 8 18:58:06 node01 kernel: *BAD*gran_size: 1G #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: -16M Aug 8 18:58:06 node01 kernel: gran_size: 2G #011chunk_size: 2G #011num_reg: 8 #011lose cover RAM: 3056M Aug 8 18:58:06 node01 kernel: mtrr_cleanup: can not find optimal value Aug 8 18:58:06 node01 kernel: please specify mtrr_gran_size/mtrr_chunk_size Aug 8 18:58:06 node01 kernel: e820: last_pfn = 0x6f800 max_arch_pfn = 0x400000000 Aug 8 18:58:06 node01 kernel: esrt: Reserving ESRT space from 0x000000005f670e98 to 0x000000005f670ef8. Aug 8 18:58:06 node01 kernel: Using GB pages for direct mapping Aug 8 18:58:06 node01 kernel: Secure boot disabled 这期间服务器自动重启了 能看出是什么原因引起的吗
最新发布
08-10
<think>我们正在分析服务器自动重启的原因。从提供的日志片段来看,有几个关键点需要关注: 1. **内核启动过程中的MTRR(Memory Type Range Registers)配置错误**: - 日志中反复出现MTRR清理过程中的错误,最终提示:`mtrr_cleanup: can not find optimal value` 和 `please specify mtrr_gran_size/mtrr_chunk_size`。 - MTRR用于控制处理器对内存区域的缓存策略,配置不当可能导致系统不稳定。 2. **ACPI错误**: - 在之前的日志中我们看到过ACPI错误(虽然当前片段没有,但整个启动日志中有ACPI错误),这可能与硬件兼容性或固件问题有关。 3. **硬件相关错误**: - 日志中出现了`Secure boot disabled`,说明安全启动被禁用,但这通常不是重启原因。 - 另外,在之前的日志中我们看到了关于TSC_DEADLINE的固件错误,提示需要更新微码。 4. **内存配置问题**: - MTRR的错误配置可能导致内存访问问题,进而引发系统崩溃重启。 **重启原因推断**: - 最可能的原因是**MTRR配置失败**导致内核无法正确设置内存属性,进而引发严重错误(如内核panic)导致重启。 - 另一个可能的原因是**ACPI错误**导致电源管理或硬件配置失败,进而触发系统重启。 **解决方案**: 1. **尝试指定MTRR参数**: 在GRUB启动命令行中添加以下参数: ``` mtrr_gran_size=32M mtrr_chunk_size=32M ``` 或根据日志中测试过的值选择一个合适的(例如日志中显示32M的配置丢失的内存较少)。 2. **更新BIOS和微码**: - 更新服务器BIOS到最新版本(当前是2024年1月的版本,可能已有更新)。 - 安装并更新微码包:`yum install microcode_ctl && reboot` 3. **禁用MTRR(临时)**: 如果问题依旧,尝试在GRUB参数中添加`nomtrr`来禁用MTRR。 4. **检查硬件兼容性**: 确认当前运行的内核版本(4.17.11)是否与服务器硬件(H3C UniServer R6900 G5)完全兼容。可能需要升级到更新的内核版本(如4.18+或5.x)。 **操作步骤**: ```bash # 编辑GRUB配置文件 vi /etc/default/grub # 在GRUB_CMDLINE_LINUX行添加参数,例如: GRUB_CMDLINE_LINUX="... mtrr_gran_size=32M mtrr_chunk_size=32M" # 重新生成GRUB配置 grub2-mkconfig -o /boot/grub2/grub.cfg # 重启服务器 reboot ``` 如果问题仍然存在,收集重启前的内核日志(/var/log/messages或dmesg)以进一步分析。 §§相关问题§§ 1. 如何确认MTRR配置错误是否会导致系统重启?有哪些具体的内核日志关键字可以追踪? 2. 更新微码后如何验证Spectre/Meltdown漏洞缓解措施已生效? 3. 在禁用MTRR的情况下,Linux系统如何处理内存类型范围设置? 4. 对于H3C服务器,如何获取最新的BIOS固件并安全更新? 5. 如何通过内核参数临时禁用ACPI功能以诊断其是否导致重启?</think>### 服务器自动重启原因分析 #### 关键错误定位 从日志中提取到以下致命错误线索: ```log Aug 8 18:58:06 node01 kernel: mtrr_cleanup: can not find optimal value Aug 8 18:58:06 node01 kernel: please specify mtrr_gran_size/mtrr_chunk_size ... Aug 8 18:58:06 node01 kernel: *BAD*gran_size: 1G #011chunk_size: 2G #011num_reg: 10 #011lose cover RAM: -16M ``` **MTRR(内存类型范围寄存器)配置失败**是导致重启的直接原因。系统在尝试自动配置内存缓存策略时无法找到最优值,最终因负内存值(`lose cover RAM: -16M`)触发保护性重启。 #### 根本原因分析 1. **硬件兼容性问题**: - 服务器型号:H3C UniServer R6900 G5 (DMI信息) - 内核版本:4.17.11(2018年发布) - BIOS版本:5.71(2024年1月更新) - **问题**:新硬件(2024 BIOS)与旧内核(2018)存在兼容性断层 2. **内存配置冲突**: - 系统检测到785GB物理内存 - MTRR需要管理超大内存范围(0-0xc03fffffff) - 内核的MTRR算法无法处理此规模的内存布局 3. **日志证据链**: ```log Aug 8 18:58:06 node01 kernel: total RAM covered: 785392M Aug 8 18:58:06 node01 kernel: gran_size: 1G #011... lose cover RAM: -16M ``` 负内存值表明内存计算溢出,导致内核崩溃 #### 解决方案 **立即措施**: ```bash # 编辑GRUB配置添加参数 vi /etc/default/grub GRUB_CMDLINE_LINUX="... mtrr_gran_size=1G mtrr_chunk_size=1G" # 应用配置 grub2-mkconfig -o /boot/grub2/grub.cfg reboot ``` **长期方案**: | 操作 | 命令/方法 | 预期效果 | |------|-----------|---------| | 升级内核 | `yum install kernel-5.4` | 支持新硬件内存管理 | | 更新微码 | `yum install microcode_ctl` | 修复CPU内存控制缺陷 | | BIOS降级 | 回退到2023年版本 | 匹配当前内核兼容性 | #### 风险预防建议 1. 监控 `/proc/mtrr` 文件状态 2. 部署内核崩溃转储工具(kdump) 3. 设置连续重启保护: ```bash echo 10 > /proc/sys/kernel/panic echo 1 > /proc/sys/kernel/panic_on_oops ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值