Git Product home page Git Product logo

grub2-filemanager's Introduction

THIS PROJECT IS NO LONGER BEING MAINTAINED


项目主页 (简体中文)

Grub2 File Manager

Crowdin

Content

Preview

preview.png

Support types of files

Type i386-pc i386-efi x86_64-efi
imgWinPE ISO ✔️ ✔️ ✔️
imgLinux ISO ✔️ ✔️ ✔️
imgAndroid ISO ✔️ ✔️ ✔️
imgBSD ISO ✔️
imgIMG (Disk Image) ✔️ ✔️ ✔️
imgVHD ✔️ ✔️ ✔️
imgWinPE WIM ✔️ ✔️ ✔️
imgNT5 WinPE ✔️
imgLinux/Multiboot Kernel ✔️ ✔️ ✔️
imgEFI Application ✔️ ✔️

Download

https://github.com/a1ive/grub2-filemanager/releases

Build

git clone https://github.com/a1ive/grub2-filemanager.git
cd grub2-filemanager
./update_grub2.sh
./build.sh

Boot

i386-pc

DO NOT boot grubfm.iso with memdisk!

GRUB4DOS

map --mem /grubfm.iso (0xff)
map --hook
chainloader (0xff)

GRUB 2

linux /loadfm  
initrd /grubfm.iso  

x86_64-efi

GRUB 2

chainloader /grubfmx64.efi

rEFInd

loader /grubfmx64.efi

Systemd-boot

efi /grubfmx64.efi

Source code

GRUB2: https://github.com/a1ive/grub

USB Installers

Related projects

grub2-filemanager's People

Contributors

a1ive avatar bitraid avatar dialmak avatar matthaiks avatar niemtin007 avatar noxplayer2021 avatar olegwebmaster avatar questyoucraft avatar zwj4031 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

grub2-filemanager's Issues

.cfg file for Windows+XML gives 'error: device not found' message

I want to install Windows 10 + XML file using a .cfg file.

This .cfg works and does install correctly, however, I get a 'error: device not found' message from win.sh.

Can the message be avoided?

# Only show menu if 64-bit CPU
if [ "$CPU" == "64" ] ; then
menuentry "Install Windows 10 1909 x64 Eng" --class=nt6 {
set "XML=(${grubfm_device})/_ISO/WINDOWS/WIN10/Windows 10 Pro (no prompt to repair).xml"
set "ISO=(${grubfm_device})/_ISO/WINDOWS/WIN10/Windows10_1909_x64_English_MS.iso"
echo aa
ls (memdisk)
set pager=1
read
source (memdisk)/boot/grub/rules/iso/win.sh
echo source done
read
echo Loading ${ISO}
loopback loop "${ISO}" 
echo Using ${XML}
sleep 1
echo cc
read
win_isoboot "(loop)/sources/boot.wim" "${XML}"
}
else
# return back to 'open' menu
grubfm_open "${grubfm_file}"
fi

menuentry "Back" {
grubfm_open "${grubfm_file}"
}

image

how to decompress and compress install.gz right way?

Hello a1ive,

Thank you for your hard work to bring many awesome features to the grub2-filemanager. I have learned a lot from you.

I want to change some code from start.bat in the install.gz but I don't know how to decompress and compress it again in the right way to work well in your tool. So, can you give me a guide about this one?

Thanks.

找不到启动资源的奇怪问题

公司给配了一台 戴尔 Latitude 7300笔记本电脑。
经过一番折腾,终于安装上了linux并成功通过efi启动进入 grub-fm。
奇怪的地方来了:电脑中包含有 ntfs分区和ext分区。
无论external_menu.cfg放在什么文件系统的分区,grub-fm都能找到,但是对应的启动资源却找不到,总是停留在 looking for /iso/****.iso 处,然后失败。

引导Android x86镜像包

可否能在Android x86运行起来后,把该安装的应用软件以及一些配置文件都安装好,然后把这个系统打包成ISO镜像,类似Windows ghost镜像。然后通过grub引导这个ISO呢?请问这个问题有办法解决吗?

Contents of build.bat

Hi master,
Is the following part of the build.bat file constantly updated? According to him, my program automatically Grub2 File Manager files and Grub files by downloading the process will do. Can you give me some information on this? Thank you.

:build
echo i386-efi
md build\boot\grub\i386-efi
set /p optional= < arch\ia32\optional.lst
:CPMODEFI32
for /f "tokens=1,*" %%a in ("%optional%") do (
	copy grub\i386-efi\%%a.mod build\boot\grub\i386-efi\
	set optional=%%b
	goto CPMODEFI32
)
copy arch\ia32\*.efi build\boot\grub
copy arch\ia32\*.gz build\boot\grub
cd build
%~dp0\bin\find.exe ./boot | %~dp0\bin\cpio.exe -o -H newc > ./memdisk.cpio
cd ..
rd /s /q build\boot\grub\i386-efi
del build\boot\grub\*.efi
del build\boot\grub\*.gz
set /p modules= < arch\ia32\builtin.lst
grub\grub-mkimage.exe -m build\memdisk.cpio -d grub\i386-efi -p (memdisk)/boot/grub -c arch\ia32\config.cfg -o grubfmia32.efi -O i386-efi %modules%

echo x86_64-efi
md build\boot\grub\x86_64-efi
set /p optional= < arch\x64\optional.lst
:CPMODEFI64
for /f "tokens=1,*" %%a in ("%optional%") do (
	copy grub\x86_64-efi\%%a.mod build\boot\grub\x86_64-efi\
	set optional=%%b
	goto CPMODEFI64
)
copy arch\x64\*.efi build\boot\grub
copy arch\x64\*.gz build\boot\grub
cd build
%~dp0\bin\find.exe ./boot | %~dp0\bin\cpio.exe -o -H newc > ./memdisk.cpio
cd ..
rd /s /q build\boot\grub\x86_64-efi
del build\boot\grub\*.efi
del build\boot\grub\*.gz
set /p modules= < arch\x64\builtin.lst
grub\grub-mkimage.exe -m build\memdisk.cpio -d grub\x86_64-efi -p (memdisk)/boot/grub -c arch\x64\config.cfg -o grubfmx64.efi -O x86_64-efi %modules%
del build\memdisk.cpio

echo i386-pc
set /p builtin= < arch\legacy\builtin.lst
md build\boot\grub\i386-pc
set /p modlist= < arch\legacy\insmod.lst
set /p optional= < arch\legacy\optional.lst
set modlist=%modlist% %optional%
:CPMOD
for /f "tokens=1,*" %%a in ("%modlist%") do (
	copy grub\i386-pc\%%a.mod build\boot\grub\i386-pc\
	set modlist=%%b
	goto CPMOD
)
copy arch\legacy\insmod.lst build\boot\grub\
copy arch\legacy\grub.exe build\boot\grub\
copy arch\legacy\duet64.iso build\boot\grub\
copy arch\legacy\memdisk build\boot\grub\
copy arch\legacy\ipxe.lkrn build\boot\grub\
cd build
%~dp0\bin\find.exe ./boot | %~dp0\bin\cpio.exe -o -H newc | %~dp0\bin\gzip.exe -9 > ./fm.loop
cd ..
rd /s /q build\boot
grub\grub-mkimage.exe -d grub\i386-pc -m arch\legacy\null.cpio -p (fm)/boot/grub -c arch\legacy\config.cfg -o build\core.img -O i386-pc %builtin%
copy /B grub\i386-pc\cdboot.img + build\core.img build\fmldr
del /q build\core.img
copy arch\legacy\MAP build\
if exist arch\legacy\ntboot\NTBOOT.MOD\NTBOOT.NT6 (
	goto NTBOOT
	)
if exist arch\legacy\ntboot\NTBOOT.MOD\NTBOOT.PE1 (
	goto NTBOOT
	)
goto NONTBOOT
:NTBOOT 
xcopy /I /E arch\legacy\ntboot build\
:NONTBOOT
if exist arch\legacy\wimboot (
	copy arch\legacy\wimboot build\
	)
if exist arch\legacy\vbootldr (
	copy arch\legacy\vbootldr build\
	)
if exist arch\legacy\install.gz (
	copy arch\legacy\install.gz build\
	)
bin\mkisofs.exe -R -hide-joliet boot.catalog -b fmldr -no-emul-boot -allow-lowercase -boot-load-size 4 -boot-info-table -o grubfm.iso build
rd /s /q build

Can't boot into Kali Linux live mode (UEFI, Loopback)

I've got this error message when booting into Kali Linux live mode:

[3.273402] [drm:intel_cpu_fifo_underrun_irq_handler [i915]] ERROR CPU pipe A FIFO underrun
[3273569] [drm:intel_set_pch_fifo_underrun_reporting [i915]] ERROR uncleared pch fifo underrun on pch transcoder A
3273660 ] (drm:cpt_irq_hand ler 191511 ERROR PCH transcoder A FIFO underrun

BusyBox u1.30.1 (Debian 1:1.30.1-4) built-in shell (ash)
Enter 'help' for a list of built-in commands

(initramfs)

Do you have any suggestions?

去掉编码转换命令,增加个清屏命令

``@echo off
if exist build (
rd /s /q build
)
md build

echo common files
cd /d %~dp0
xcopy /s /e /y /i boot build\boot
cls
echo Language / 语言 / 語言 && echo 1. Simplified Chinese / 简体中文 && echo 2. Traditional Chinese / 正體中文
echo 3. English (United States)
echo Please make a choice:
set /p id=
if "%id%" == "1" goto cn
if "%id%" == "2" goto tw
if "%id%" == "3" goto en
:cn
echo zh_CN
bin\msgfmt.exe grub\locale\zh_CN.po -o build\boot\grub\locale\zh_CN.mo
bin\msgfmt.exe lang\zh_CN\fm.po -o build\boot\grub\locale\fm\zh_CN.mo
copy lang\zh_CN\lang.sh build\boot\grub
goto build
:tw
echo zh_TW
bin\msgfmt.exe grub\locale\zh_TW.po -o build\boot\grub\locale\zh_TW.mo
bin\msgfmt.exe lang\zh_TW\fm.po -o build\boot\grub\locale\fm\zh_TW.mo
copy lang\zh_TW\lang.sh build\boot\grub
goto build
:en
echo en_US
goto build

:build
echo efi common files
cd build
%~dp0\bin\find.exe ./boot | %~dp0\bin\cpio.exe -o -H newc > ./memdisk.cpio
cd ..
set /p modules= < efi\builtin.lst

echo i386-efi
bin\grub-mkimage.exe -m build\memdisk.cpio -d grub\i386-efi -p (memdisk)/boot/grub -c efi\config.cfg -o grubfmia32.efi -O i386-efi %modules%

echo x86_64-efi
bin\grub-mkimage.exe -m build\memdisk.cpio -d grub\x86_64-efi -p (memdisk)/boot/grub -c efi\config.cfg -o grubfmx64.efi -O x86_64-efi %modules%
del build\memdisk.cpio

echo i386-pc
set /p builtin= < legacy\builtin.lst
md build\boot\grub\i386-pc
set /p modlist= < legacy\insmod.lst
:CPMOD
for /f "tokens=1,*" %%a in ("%modlist%") do (
copy grub\i386-pc%%a.mod build\boot\grub\i386-pc
set modlist=%%b
goto CPMOD
)
copy legacy\insmod.lst build\boot\grub
copy legacy\grub.exe build\boot\grub
copy legacy\memdisk build\boot\grub
copy legacy\ipxe.lkrn build\boot\grub
cd build
%~dp0\bin\find.exe ./boot | %~dp0\bin\cpio.exe -o -H newc | %~dp0\bin\gzip.exe -9 > ./fm.loop
cd ..
rd /s /q build\boot
bin\grub-mkimage.exe -d grub\i386-pc -p (memdisk)/boot/grub -c legacy\config.cfg -o build\core.img -O i386-pc %builtin%
copy /B grub\i386-pc\cdboot.img + build\core.img build\fmldr
del /q build\core.img
copy legacy\MAP build
if exist legacy\ntboot\NTBOOT.MOD\NTBOOT.NT6 (
goto NTBOOT
)
if exist legacy\ntboot\NTBOOT.MOD\NTBOOT.PE1 (
goto NTBOOT
)
goto NONTBOOT
:NTBOOT
xcopy /I /E legacy\ntboot build
echo WARNING: Non-GPL module^(s^) enabled!
:NONTBOOT
if exist legacy\wimboot (
copy legacy\wimboot build
)
bin\mkisofs.exe -R -hide-joliet boot.catalog -b fmldr -no-emul-boot -allow-lowercase -boot-load-size 4 -boot-info-table -o grubfm.iso build
rd /s /q build

厉害!支持大神!

刚刚无意中发现您的这个作品,睡前测试了一下,太出乎意外的强大了!
虽然图片部分不能打开,部分显示变形,但是,几乎兼容所有流行ISO,彻底摆脱每次还要编写grub.cfg的繁琐步骤,太厉害了!
顶一下!

有关自定义启动菜单

您好,使用您的作品后,就放弃使用 grub2 及 grub4dos 等相关产品了,一般都准备好wim或iso就可以进入我想要的系统,但是目前遇到了一项问题:
我在使用Slax系统时,希望系统尽可能在硬盘上使用系统还能保持数据持久化的特性(系统本来的特性)。Slax本身支持安装在硬盘上,但安装脚本会检测硬盘中的Windows为避免损坏Windows而放弃继续执行。我当然也不想删除Windows,查到Slax本身也支持硬盘启动,只要设置好参数即可。突然想到,几年前用grub2-filemanager似乎是能够支持自定义菜单的,当时好像是需要自己打包grub-fm.ios。
我查到文档中并无相关说明,想请问,有否内置的自定义菜单文件的方式可以实现自定义,而无需自己打包iso的。如果有,如何设置。

Enhancement: Boot Win ISOs with XML file

Windows 7 ISOs typically contain all Editions of Windows but you can only install one Edition - e.g. a Win7 Pro ISO contains all editions but if you boot it normally, it will only install Pro.
Win 8.1 ISOs always prompt the user to enter a Product Key - annoyingly this cannot be skipped by the user. The use must enter a 5x5 Product Key (even if just an install-only key).
Win10 allows you to skip entering a Product Key so no problem (but user may wish to specify an XML file).

All these issues could be avoided by allowing the user to select an XML file which contains a product key and then you can run Setup by pointing to the unattend XML file.

Could the script be modified to search for .xml files which are in the same folder as the ISO? If no .xml file exists then just run immediately. If one or more .xml files exist, ask user does he want to use an XML file and then allow user to pick one of them or not use any XML file.

How to non-secure UEFI boot?

I copied the x64 files to \EFI\BOOT folder but when I UEFI64 boot under VirtualBox, I get a black screen with 'Not a Secure Boot Platform 14' text in white.

Set a file as the default selection plus timeout

A user from reboot.pro has asked if it is possible to select one of the files (or a folder) as the 'default' one and also a timeout value.

http://reboot.pro/topic/22232-a1ives-grub2-and-file-manager-has-great-uefi-support/page-3#entry213906

i.e.

  1. Boot to agFM
  2. Read a default file which has file or folder + timeout value
    (maybe indicates default at top of screen?)
  3. After timeout it selects the file\folder in grubfm else stays at first partition list screen

Use an Fx key to set the default file\folder + timeout value. ??

I am not sure if this really fits in with the idea of a File Manager but it might be useful. Do you think this is a suitable enhancement?

How to add user-defined rules and types?

I would like to add my own rules and types files (e.g. for example to add .imgPTN and .imgPTN23 as a file types).
I know I can add them in to the sources before compiling, but this is very time consuming to compile - copy - test, and then repeat many times.
It would be easier if there was a user \grubfm-user\rules and \grubfm-user\types folder which would also be searched and used. The folders could be added by the user to the FAT32 source partition if required. Is this possible please?

Default is changed when using a config file

When using menu entries on startup, if default is set to 3 (agFM), then when agFM is launched, the default file entry is set to 3 instead of 0.

How to fix ?

image

\boot\grub\config

# user menu
grubfm_set --boot 1;
grubfm_set --hide 1;
if [ -f (${user})/boot/grubfm/startup_menu.txt ] ; then configfile (${user})/boot/grubfm/startup_menu.txt ; fi

\boot\grub\startup_menu.txt

set timeout=2;
set default=3;

(3 menu entries here)

menuentry "a1ive grub2 File Manager" {
export default=0
  grubfm
}

to_g4d_path does not allow for spaces

to_g4d_path converts the device from hd0,msdos1 to hd0,0 but it does not convert spaces in the path

PC i386 booting to "Ubuntu 64.iso" and choosing Easy2Boot fails unless space is removed.

e2b.sh

In grub4dos, spaces are escaped with a \, e.g.

Ubuntu\ 64.iso

Linux ISO type detection not working?

This may be something I have done, but agFM no longer seems to detect the type of ISO and change the icon, etc,
loop_detect.sh for example does not seem to run?
I have removed \boot\grubfm\config from my USB drive but it still does not detect the ISO type - e.g. manjaro, Ubuntu, etc.
Can you tell me something I can do to check/fix it?

Query: Possible to make a file run immediately using a user extension

If I make a .cfg file, the user has to select the .cfg file and then select 'grub2 menu' in order to run it.

I can add a user-defined .cfg type and rule (or make up a new extension), but how can I get the agFM to immediately run that file without a second menu having to be selected by the user?

i.e. I don't want this second menu...

image

Request: Add ability to add own menus

Not sure if this is already a feature - if so how to do it?

For instance, if a file with a special extension is found (e.g. .grub2) then assume it contains grub2 code for a menuentry and add the menu entry into the open menu using source command

In the environment, we have:
$root $path $file $file_type $grub_platform $grub_cpu

but $file_name (name of file with no extension) and $file_path (path of file with no device) and file_ext (extension of file) are missing. Could you add these as variables? This will allow the user to use these variable in their own menuentry menus.

e.g. mylinux.grub2

menuentry "$file_name" --class android {
set isofile=$path/$file_name.$file_ext
loopback loop $file
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject
initrd (loop)/casper/initrd.lz
}

We could also use if tests for i386 or uefi and add menus for persistence by using partnew commands with an ext partition image. What do you think?

Also how can the user add a menu entry to return back to the previous menu (open menu)?

如何UEFI模式启动NT6+ WinPE WIM。

一直使用您的作品作为U盘底层驱动,需要的时候进入电脑磁盘中的不同ISO以开展娱乐或工作。一般都是Linux。
偶然在您的产品网页上,发现了即使UEFI也是可以启动WinPE的。需要 NT6 + WIM 的形式。
我找了很多ISO的PE从中提取WIM(提取后自己随机命名的),在呈现菜单中都只能看到文本查看的选项,没有启动选项。我不清楚是会检查WIM内部以是否支持启动,还是根据文件名称来判断是否支持启动。特此请教。
如果方便的话,您能够贴出一个您测试通过的可以经过UEFI的方式正常启动的WinPE包。感谢!

再次感谢您做出了这么优秀,能大量节省使用者时间和精力的作品!

Compile errors - is this normal?

steve@steve-VirtualBox ~/grub2-filemanager $ sudo ./build.sh
checking for gettext ... ok
checking for mkisofs ... ok
checking for grub ... ok
common files
Language / 语言 / 語言

  1. Simplified Chinese / 简体中文
  2. Traditional Chinese / 正體中文
  3. English (United States)
  4. Turkish
  5. German
  6. Vietnamese
  7. Russian
  8. Hebrew
    Please make a choice: 3
    en_US
    x86_64-efi
    copying ahci.mod
    cp: cannot stat ‘grub/x86_64-efi/ahci.mod’: No such file or directory
    copying ata.mod
    cp: cannot stat ‘grub/x86_64-efi/ata.mod’: No such file or directory
    copying crypto.mod
    cp: cannot stat ‘grub/x86_64-efi/crypto.mod’: No such file or directory
    copying cryptodisk.mod
    cp: cannot stat ‘grub/x86_64-efi/cryptodisk.mod’: No such file or directory
    copying gcry_sha256.mod
    cp: cannot stat ‘grub/x86_64-efi/gcry_sha256.mod’: No such file or directory
    copying gcry_sha512.mod
    cp: cannot stat ‘grub/x86_64-efi/gcry_sha512.mod’: No such file or directory
    copying geli.mod
    cp: cannot stat ‘grub/x86_64-efi/geli.mod’: No such file or directory
    copying luks.mod
    cp: cannot stat ‘grub/x86_64-efi/luks.mod’: No such file or directory
    copying pbkdf2.mod
    cp: cannot stat ‘grub/x86_64-efi/pbkdf2.mod’: No such file or directory
    copying scsi.mod
    cp: cannot stat ‘grub/x86_64-efi/scsi.mod’: No such file or directory
    5847 blocks
    grub-mkimage: error: cannot open ./grub/x86_64-efi/moddep.lst': No such file or directory. i386-efi copying ahci.mod cp: cannot stat ‘grub/i386-efi/ahci.mod’: No such file or directory copying ata.mod cp: cannot stat ‘grub/i386-efi/ata.mod’: No such file or directory copying crypto.mod cp: cannot stat ‘grub/i386-efi/crypto.mod’: No such file or directory copying cryptodisk.mod cp: cannot stat ‘grub/i386-efi/cryptodisk.mod’: No such file or directory copying gcry_sha256.mod cp: cannot stat ‘grub/i386-efi/gcry_sha256.mod’: No such file or directory copying gcry_sha512.mod cp: cannot stat ‘grub/i386-efi/gcry_sha512.mod’: No such file or directory copying geli.mod cp: cannot stat ‘grub/i386-efi/geli.mod’: No such file or directory copying luks.mod cp: cannot stat ‘grub/i386-efi/luks.mod’: No such file or directory copying pbkdf2.mod cp: cannot stat ‘grub/i386-efi/pbkdf2.mod’: No such file or directory copying scsi.mod cp: cannot stat ‘grub/i386-efi/scsi.mod’: No such file or directory 5587 blocks grub-mkimage: error: cannot open ./grub/i386-efi/moddep.lst': No such file or directory.
    i386-pc
    copying acpi.mod
    cp: cannot stat ‘grub/i386-pc/acpi.mod’: No such file or directory
    copying affs.mod
    cp: cannot stat ‘grub/i386-pc/affs.mod’: No such file or directory
    copying afs.mod
    cp: cannot stat ‘grub/i386-pc/afs.mod’: No such file or directory
    copying all_video.mod
    cp: cannot stat ‘grub/i386-pc/all_video.mod’: No such file or directory
    copying aout.mod
    cp: cannot stat ‘grub/i386-pc/aout.mod’: No such file or directory
    copying bfs.mod
    cp: cannot stat ‘grub/i386-pc/bfs.mod’: No such file or directory
    copying bitmap.mod
    cp: cannot stat ‘grub/i386-pc/bitmap.mod’: No such file or directory
    copying bitmap_scale.mod
    cp: cannot stat ‘grub/i386-pc/bitmap_scale.mod’: No such file or directory
    copying blocklist.mod
    cp: cannot stat ‘grub/i386-pc/blocklist.mod’: No such file or directory
    copying bsd.mod
    cp: cannot stat ‘grub/i386-pc/bsd.mod’: No such file or directory
    copying btrfs.mod
    cp: cannot stat ‘grub/i386-pc/btrfs.mod’: No such file or directory
    copying cat.mod
    cp: cannot stat ‘grub/i386-pc/cat.mod’: No such file or directory
    copying cmp.mod
    cp: cannot stat ‘grub/i386-pc/cmp.mod’: No such file or directory
    copying commandline.mod
    cp: cannot stat ‘grub/i386-pc/commandline.mod’: No such file or directory
    copying cpuid.mod
    cp: cannot stat ‘grub/i386-pc/cpuid.mod’: No such file or directory
    copying crc.mod
    cp: cannot stat ‘grub/i386-pc/crc.mod’: No such file or directory
    copying date.mod
    cp: cannot stat ‘grub/i386-pc/date.mod’: No such file or directory
    copying datehook.mod
    cp: cannot stat ‘grub/i386-pc/datehook.mod’: No such file or directory
    copying datetime.mod
    cp: cannot stat ‘grub/i386-pc/datetime.mod’: No such file or directory
    copying dd.mod
    cp: cannot stat ‘grub/i386-pc/dd.mod’: No such file or directory
    copying disk.mod
    cp: cannot stat ‘grub/i386-pc/disk.mod’: No such file or directory
    copying diskfilter.mod
    cp: cannot stat ‘grub/i386-pc/diskfilter.mod’: No such file or directory
    copying dm_nv.mod
    cp: cannot stat ‘grub/i386-pc/dm_nv.mod’: No such file or directory
    copying drivemap.mod
    cp: cannot stat ‘grub/i386-pc/drivemap.mod’: No such file or directory
    copying elf.mod
    cp: cannot stat ‘grub/i386-pc/elf.mod’: No such file or directory
    copying eval.mod
    cp: cannot stat ‘grub/i386-pc/eval.mod’: No such file or directory
    copying expr.mod
    cp: cannot stat ‘grub/i386-pc/expr.mod’: No such file or directory
    copying f2fs.mod
    cp: cannot stat ‘grub/i386-pc/f2fs.mod’: No such file or directory
    copying fdlibm.mod
    cp: cannot stat ‘grub/i386-pc/fdlibm.mod’: No such file or directory
    copying file.mod
    cp: cannot stat ‘grub/i386-pc/file.mod’: No such file or directory
    copying freedos.mod
    cp: cannot stat ‘grub/i386-pc/freedos.mod’: No such file or directory
    copying functional_test.mod
    cp: cannot stat ‘grub/i386-pc/functional_test.mod’: No such file or directory
    copying gcry_md5.mod
    cp: cannot stat ‘grub/i386-pc/gcry_md5.mod’: No such file or directory
    copying getkey.mod
    cp: cannot stat ‘grub/i386-pc/getkey.mod’: No such file or directory
    copying gfxmenu.mod
    cp: cannot stat ‘grub/i386-pc/gfxmenu.mod’: No such file or directory
    copying gfxterm.mod
    cp: cannot stat ‘grub/i386-pc/gfxterm.mod’: No such file or directory
    copying gfxterm_background.mod
    cp: cannot stat ‘grub/i386-pc/gfxterm_background.mod’: No such file or directory
    copying gfxterm_menu.mod
    cp: cannot stat ‘grub/i386-pc/gfxterm_menu.mod’: No such file or directory
    copying gptsync.mod
    cp: cannot stat ‘grub/i386-pc/gptsync.mod’: No such file or directory
    copying hashsum.mod
    cp: cannot stat ‘grub/i386-pc/hashsum.mod’: No such file or directory
    copying hexdump.mod
    cp: cannot stat ‘grub/i386-pc/hexdump.mod’: No such file or directory
    copying hfs.mod
    cp: cannot stat ‘grub/i386-pc/hfs.mod’: No such file or directory
    copying hfsplus.mod
    cp: cannot stat ‘grub/i386-pc/hfsplus.mod’: No such file or directory
    copying jfs.mod
    cp: cannot stat ‘grub/i386-pc/jfs.mod’: No such file or directory
    copying jpeg.mod
    cp: cannot stat ‘grub/i386-pc/jpeg.mod’: No such file or directory
    copying keystatus.mod
    cp: cannot stat ‘grub/i386-pc/keystatus.mod’: No such file or directory
    copying legacycfg.mod
    cp: cannot stat ‘grub/i386-pc/legacycfg.mod’: No such file or directory
    copying loadenv.mod
    cp: cannot stat ‘grub/i386-pc/loadenv.mod’: No such file or directory
    copying lsacpi.mod
    cp: cannot stat ‘grub/i386-pc/lsacpi.mod’: No such file or directory
    copying lsapm.mod
    cp: cannot stat ‘grub/i386-pc/lsapm.mod’: No such file or directory
    copying lvm.mod
    cp: cannot stat ‘grub/i386-pc/lvm.mod’: No such file or directory
    copying macho.mod
    cp: cannot stat ‘grub/i386-pc/macho.mod’: No such file or directory
    copying mmap.mod
    cp: cannot stat ‘grub/i386-pc/mmap.mod’: No such file or directory
    copying mdraid09.mod
    cp: cannot stat ‘grub/i386-pc/mdraid09.mod’: No such file or directory
    copying mdraid09_be.mod
    cp: cannot stat ‘grub/i386-pc/mdraid09_be.mod’: No such file or directory
    copying multiboot.mod
    cp: cannot stat ‘grub/i386-pc/multiboot.mod’: No such file or directory
    copying multiboot2.mod
    cp: cannot stat ‘grub/i386-pc/multiboot2.mod’: No such file or directory
    copying net.mod
    cp: cannot stat ‘grub/i386-pc/net.mod’: No such file or directory
    copying offsetio.mod
    cp: cannot stat ‘grub/i386-pc/offsetio.mod’: No such file or directory
    copying part_apple.mod
    cp: cannot stat ‘grub/i386-pc/part_apple.mod’: No such file or directory
    copying part_bsd.mod
    cp: cannot stat ‘grub/i386-pc/part_bsd.mod’: No such file or directory
    copying partnew.mod
    cp: cannot stat ‘grub/i386-pc/partnew.mod’: No such file or directory
    copying parttool.mod
    cp: cannot stat ‘grub/i386-pc/parttool.mod’: No such file or directory
    copying password.mod
    cp: cannot stat ‘grub/i386-pc/password.mod’: No such file or directory
    copying png.mod
    cp: cannot stat ‘grub/i386-pc/png.mod’: No such file or directory
    copying priority_queue.mod
    cp: cannot stat ‘grub/i386-pc/priority_queue.mod’: No such file or directory
    copying probe.mod
    cp: cannot stat ‘grub/i386-pc/probe.mod’: No such file or directory
    copying procfs.mod
    cp: cannot stat ‘grub/i386-pc/procfs.mod’: No such file or directory
    copying progress.mod
    cp: cannot stat ‘grub/i386-pc/progress.mod’: No such file or directory
    copying raid5rec.mod
    cp: cannot stat ‘grub/i386-pc/raid5rec.mod’: No such file or directory
    copying raid6rec.mod
    cp: cannot stat ‘grub/i386-pc/raid6rec.mod’: No such file or directory
    copying random.mod
    cp: cannot stat ‘grub/i386-pc/random.mod’: No such file or directory
    copying read.mod
    cp: cannot stat ‘grub/i386-pc/read.mod’: No such file or directory
    copying reboot.mod
    cp: cannot stat ‘grub/i386-pc/reboot.mod’: No such file or directory
    copying regexp.mod
    cp: cannot stat ‘grub/i386-pc/regexp.mod’: No such file or directory
    copying reiserfs.mod
    cp: cannot stat ‘grub/i386-pc/reiserfs.mod’: No such file or directory
    copying search_fs_uuid.mod
    cp: cannot stat ‘grub/i386-pc/search_fs_uuid.mod’: No such file or directory
    copying search_label.mod
    cp: cannot stat ‘grub/i386-pc/search_label.mod’: No such file or directory
    copying sendkey.mod
    cp: cannot stat ‘grub/i386-pc/sendkey.mod’: No such file or directory
    copying serial.mod
    cp: cannot stat ‘grub/i386-pc/serial.mod’: No such file or directory
    copying squash4.mod
    cp: cannot stat ‘grub/i386-pc/squash4.mod’: No such file or directory
    copying syslinuxcfg.mod
    cp: cannot stat ‘grub/i386-pc/syslinuxcfg.mod’: No such file or directory
    copying terminfo.mod
    cp: cannot stat ‘grub/i386-pc/terminfo.mod’: No such file or directory
    copying tga.mod
    cp: cannot stat ‘grub/i386-pc/tga.mod’: No such file or directory
    copying time.mod
    cp: cannot stat ‘grub/i386-pc/time.mod’: No such file or directory
    copying trig.mod
    cp: cannot stat ‘grub/i386-pc/trig.mod’: No such file or directory
    copying true.mod
    cp: cannot stat ‘grub/i386-pc/true.mod’: No such file or directory
    copying vbe.mod
    cp: cannot stat ‘grub/i386-pc/vbe.mod’: No such file or directory
    copying vboot.mod
    cp: cannot stat ‘grub/i386-pc/vboot.mod’: No such file or directory
    copying version.mod
    cp: cannot stat ‘grub/i386-pc/version.mod’: No such file or directory
    copying vga.mod
    cp: cannot stat ‘grub/i386-pc/vga.mod’: No such file or directory
    copying vhd.mod
    cp: cannot stat ‘grub/i386-pc/vhd.mod’: No such file or directory
    copying video.mod
    cp: cannot stat ‘grub/i386-pc/video.mod’: No such file or directory
    copying video_bochs.mod
    cp: cannot stat ‘grub/i386-pc/video_bochs.mod’: No such file or directory
    copying video_cirrus.mod
    cp: cannot stat ‘grub/i386-pc/video_cirrus.mod’: No such file or directory
    copying video_colors.mod
    cp: cannot stat ‘grub/i386-pc/video_colors.mod’: No such file or directory
    copying video_fb.mod
    cp: cannot stat ‘grub/i386-pc/video_fb.mod’: No such file or directory
    copying videoinfo.mod
    cp: cannot stat ‘grub/i386-pc/videoinfo.mod’: No such file or directory
    copying xfs.mod
    cp: cannot stat ‘grub/i386-pc/xfs.mod’: No such file or directory
    copying xnu.mod
    cp: cannot stat ‘grub/i386-pc/xnu.mod’: No such file or directory
    copying zfs.mod
    cp: cannot stat ‘grub/i386-pc/zfs.mod’: No such file or directory
    copying zstd.mod
    cp: cannot stat ‘grub/i386-pc/zstd.mod’: No such file or directory
    copying ahci.mod
    cp: cannot stat ‘grub/i386-pc/ahci.mod’: No such file or directory
    copying ata.mod
    cp: cannot stat ‘grub/i386-pc/ata.mod’: No such file or directory
    copying crypto.mod
    cp: cannot stat ‘grub/i386-pc/crypto.mod’: No such file or directory
    copying cryptodisk.mod
    cp: cannot stat ‘grub/i386-pc/cryptodisk.mod’: No such file or directory
    copying gcry_sha256.mod
    cp: cannot stat ‘grub/i386-pc/gcry_sha256.mod’: No such file or directory
    copying gcry_sha512.mod
    cp: cannot stat ‘grub/i386-pc/gcry_sha512.mod’: No such file or directory
    copying geli.mod
    cp: cannot stat ‘grub/i386-pc/geli.mod’: No such file or directory
    copying luks.mod
    cp: cannot stat ‘grub/i386-pc/luks.mod’: No such file or directory
    copying pbkdf2.mod
    cp: cannot stat ‘grub/i386-pc/pbkdf2.mod’: No such file or directory
    copying pci.mod
    cp: cannot stat ‘grub/i386-pc/pci.mod’: No such file or directory
    copying scsi.mod
    cp: cannot stat ‘grub/i386-pc/scsi.mod’: No such file or directory
    5470 blocks
    grub-mkimage: error: cannot open `./grub/i386-pc/moddep.lst': No such file or directory.
    cat: grub/i386-pc/cdboot.img: No such file or directory
    Warning: creating filesystem that does not conform to ISO-9660.
    I: -input-charset not specified, using utf-8 (detected in locale settings)
    Size of boot image is 4 sectors -> No emulation
    Total translation table size: 2048
    Total rockridge attributes bytes: 1265
    Total directory bytes: 2048
    Path table size(bytes): 28
    Max brk space used 0
    2174 extents written (4 MB)
    steve@steve-VirtualBox ~/grub2-filemanager $ ls -l
    total 4792
    drwxr-xr-x 6 root root 4096 Jan 3 10:05 arch
    drwxr-xr-x 2 root root 4096 Jan 3 10:05 bin
    drwxr-xr-x 3 root root 4096 Jan 3 10:05 boot
    -rw-r--r-- 1 root root 5015 Jan 3 10:05 build.bat
    -rwxr-xr-x 1 root root 4984 Jan 3 10:05 build.sh
    -rw-r--r-- 1 root root 165 Jan 3 10:05 crowdin.yml
    -rwxr-xr-x 1 root root 310 Jan 3 10:05 gencrt.sh
    -rw-r--r-- 1 root root 0 Jan 3 10:09 grubfmia32.efi
    -rw-r--r-- 1 root root 4452352 Jan 3 10:09 grubfm.iso
    -rw-r--r-- 1 root root 0 Jan 3 10:09 grubfmx64.efi
    drwxr-xr-x 13 root root 4096 Jan 3 10:05 lang
    -rw-r--r-- 1 root root 35141 Jan 3 10:05 LICENSE
    -rw-r--r-- 1 root root 343492 Jan 3 10:05 loadfm
    -rwxr-xr-x 1 root root 1303 Jan 3 10:05 preloader.sh
    -rw-r--r-- 1 root root 3466 Jan 3 10:05 README.md
    -rwxr-xr-x 1 root root 642 Jan 3 10:05 release.sh
    drwxr-xr-x 3 root root 4096 Jan 3 10:05 samples
    drwxr-xr-x 2 root root 4096 Jan 3 10:05 secureboot
    -rwxr-xr-x 1 root root 221 Jan 3 10:05 sign.sh
    -rwxr-xr-x 1 root root 161 Jan 3 10:05 update_grub2.sh
    -rw-r--r-- 1 root root 510 Jan 3 10:05 update_grub4dos.bat

Ubuntu18.04 安装失败

如题,grub文件管理器可以引导Ubuntu18.04进入安装界面,但是安装过程中会卡在某一个环节,具体忘了

您好,太喜爱您的作品了,我发现可以更完善的几个地方如下……

1、默认给所有linux的ISO添加参数,比如选择中文语言编码,键盘等

linux (loop)/live/vmlinuz findiso=$1 noprompt quiet boot=live ro deepin-installer locales=zh_CN.UTF-8 keyboard-configuration/layoutcode=us keyboard-configuration/variantcode= --  rootflags=sync
initrd (loop)/live/initrd.lz

2、好像发现了一些隐藏的文件
[暂时没有截图,需要的话,稍后截图贴出],这些文件是PE,Win7,linux都没出现的
3、一直往下选的话,能否从最后一个文件选项循环到最上面一个文件选项?
4、不想每次一有问题就麻烦到您,想请问有没有办法自建第二启动菜单呢?
我自己找了一下,没有在x86_64-efi下发现有配置文件,config.cfg也不对,后来终于根据脚本内容发现了是
boot/grub/main.sh
但是不想破坏了您本身的文件内容。所以能否像PE那样可以寻找是否存在另一个用户自定义的启动配置文件,然后读取运行?
[暂时就这些,感谢您创作出这么优秀伟大的作品!]

Hebrew is not fully RTL

The options on the main screen should be aligned to the right, as you can see the F1/F2/etc. appear to the left while these should be on the right and the line is aligned to the left instead of the right.

Screen Shot 2019-12-23 at 14 48 16

Well the text appears correctly but the lines should be aligned from right to left meaning that the line should start with the icon to the right and then the text.

Screen Shot 2019-12-23 at 14 49 25

Furthermore the text is considered LTR (this is why the F1 is on the left), just to give a quick example with the translation of GRUB is wonderful in Hebrew:

Wrong:
GRUB זה נפלא!

Correct (Aligned to the right and the string beginning with GRUB):

GRUB זה נפלא!

stat -c is crashing on large files

When using in large files (3GB) get graphics corruption at top of screen.
File access takes 20 seconds or more and then stops.
System hang.
NTFS partition

image

Blocklist command takes a long time, but works OK.
image

Request

I'm sorry A1ive for my english.Can I add from the menu grubfmx64 Static item or button to download BOOTMGR menu on the path /EFI/Microsoft/boot/BCD to boot the WindowsPe.And the same item in the grubfmx32 to boot BOOTMGR menu on the path /EFI/Microsoft/boot/B32

Enhancement: only list files with specific extensions

Most people will use agFM to boot from bootable files or partitions. When using the File Manager there is often a lot of other files in folders and you have to scroll down a lot to find the one you want.
Would it be possible to have a switch (e.g. F7) which toggles between showing all files and just showing bootable files (files with 'rules' extensions??) ?
Ideally I would like the default to be 'Show all files=disabled', or a way of configuring the default setting with an external file.

What files\folders are required for bootable media?

After building filemanager, there are no instructions on what files\folders are required to be copied to bootable media - e.g. USB drive.
For instance, UEFI booting does not work if copy \secureboot folder contents to \EFI\BOOT folder because it says grubfmx64.efi is missing on UEFI-boot even though it is in the root.
What other files are needed and where should they be placed?
Is \arch folder required to be on bootable media?
Please give folder structure (or better yet, .sh and .cmd file which copies correct files to a partition).
For UEFI-booting, a FAT32 partition is required. Can a 2nd partition be created to hold payload files (e.g. NTFS, exFAT, ext2/3/4)? Presumably NTFS will be most compatible for Windows Install ISOs?
image
P.S. Very nice work! :-)

Logo Design Offering as Open Source Contribution

Hello Sir. I'm an Icon and Logo Designer. I'm happy to see an open source project, So, I want provide a logo for you. Would you mind if I propose a new logo design to improve visualization of your project as my Open Source Contribution?

Regards,

wimboot.sh assumes root is (cd)

To boot using a .cfg file for MBR booting we need to set root=cd

menuentry "Strelec Win 10 64-bit (wimboot)" --class=nt6 {
	set "grubfm_file=(${grubfm_device})/SSTR/strelec10x64Eng.wim"
	set root=cd
	source (memdisk)/boot/grub/rules/wim/wimboot.sh
	read
}

This is because wimboot.sh assume root is (cd)

set lang=en_US;
if [ "$grub_platform" = "efi" ];
then
  loopback wimboot ${prefix}/wimboot.gz;
  wimboot @:bootmgfw.efi:(wimboot)/bootmgfw.efi \
          @:bcd:(wimboot)/bcd \
          @:boot.sdi:(wimboot)/boot.sdi \
          @:boot.wim:"${grubfm_file}";
elif [ "$grub_platform" = "pc" ];
then
  terminal_output console;
  set enable_progress_indicator=1;
  loopback wimboot /wimboot;
  linux16 (wimboot)/wimboot;
  initrd16 newc:bootmgr:(wimboot)/bootmgr \
           newc:bootmgr.exe:(wimboot)/bootmgr.exe \
           newc:bcd:(wimboot)/bcd \
           newc:boot.sdi:(wimboot)/boot.sdi \
           newc:boot.wim:"${grubfm_file}";
fi;

你好,提交个建议

建议增加自定义规则生成启动菜单的功能:
很多Linux发行版的iso文件里都有一个grub/grub2菜单配置文件,

目前各发行版最新版本的菜单路径:
Debian的是 \BOOT\GRUB\GRUB.CFG
Arch的是 \LOADER\ENTRIES\ARCHISO_X86_64.CONF
Deepin的是 \BOOT\GRUB\GRUB.CFG

只要找到这个文件,就可根据该文件修改出适合【grub2引导ISO的菜单】
而这个文件的放置也是有规律,一般置于EFI BOOT GRUB LOADER等任一目录内,
人工来找肯定是找得到的,所以我觉得你可以写一个自动化搜索+读取规则的程序,然后让大家一起提交规则

找到后利用程序修改即可。

PS最好能增加挂载iso后,可打开文本的功能,这样便于人工操作

附上修改例子:

只要使用改动主要部分就可以作为【grub2引导ISO启动】的菜单:

① 如Arch里的grub2菜单( "H:\LOADER\ENTRIES\ARCHISO_X86_64.CONF")主要代码:

title Arch Linux archiso x86_64 UEFI USB
linux /arch/boot/x86_64/vmlinuz
initrd /arch/boot/intel_ucode.img
initrd /arch/boot/x86_64/archiso.img
options archisobasedir=arch archisolabel=ARCH_201706

② 按如下改动后可直接用于【grub2引导ISO启动】

menuentry "[9]Arch Linux archiso x86_64 UEFI USB" --hotkey="9" {
set isofile="/0LIVE/Arch/archlinux-2017.06.01-x86_64.iso"
search --set -f $isofile
loopback loop $isofile
linux (loop)/arch/boot/x86_64/vmlinuz archisobasedir=arch archisolabel=ARCH_201706 img_dev=/dev/disk/by-name/Win10 img_loop=$isofile earlymodules=loop
initrd (loop)/arch/boot/intel_ucode.img
initrd (loop)/arch/boot/x86_64/archiso.img
}

本例子:
ISO文件:"C:\0LIVE\Arch\archlinux-2017.06.01-x86_64.iso"
C盘卷标:Win10
ISO挂载后卷标为:ARCH_201706

主要是在菜单里添加了 loopback功能、指定iso文件所在位置(所在分区+路径)

希望该程序越做越好。

UEFI boot using partnew supported?

Ubuntu x64 ISO does not boot using map option when UEFI64 booting.
Is partnew implemented?
It should be possible to generically boot most Linux ISOs without cheat codes or loopback.cfg files, by using partnew and map commands?

file info option can take a long time

Calculating CRC32 on large files can take many minutes.
Suggest asking user first if file > 200MB in size?
'CRC32 (Y/N)'
image

Also file size does not seem correct ??

partnew prompt Y/N does not work on QWERTZ keyboard

Is it possible to change the question to use a different answer key (e.g. 1 = Yes) or maybe a number key so a German user can use the English version? QWERTZ and AZERTY keyboards need to be considered. I know I can compile for a different language but it is awkward to supply multiple versions in different languages. Also one system may have a US keyboard but the next system may have a QWERTZ or AZERTY keyboard, etc.

Are you working on a multi-language version?

P.S.
It would be nice for agFM to pick up the settings for language and keyboard from some sort of user config file (\grubfm_config.sh ?). The user could set the required keyboard, timezone, language, theme folder, text mode, text colours, splashimage, etc. and could maybe also allow us to add our own extensions and rules without needing to recompile?

For instance, I would like a range of file extensions .imgPTN to be recognised and to automatically run my own .sh script when one is selected. i.e. \xxx\yyyy.imgPTN and \xxx\yyy.imgPTN23 and \xxx\yyy.imgPTN23auto ,etc. will all run the same .sh file. Is this possible?

query: cannot use chainloader to boot bootx64.efi after partnew

menuentry "Install Windows10x642018_04-02.imgPTN23 English Partnew 1" --class=nt6 {
   set "grubfm_file=(${grubfm_device})/_ISO/WINDOWS/WIN10/Windows10x642018_04-02.imgPTN23"
  partnew --type=0x0C --file="${grubfm_file}" (${grubfm_disk}) 1
set root=(${grubfm_disk},msdos1)
set grubfm_file="(hd0,msdos1)/EFI/BOOT/BOOTX64.efi"
set gfxpayload=keep
chainloader -b -t "${grubfm_file}"
}

Ptn1: NTFS (but replaced by partnew command with FAT32)
Ptn2: FAT32 grub2 files

  1. UEFI64 boot to File Manager
  2. Run above menu
  3. Get error 0x8000000000000002
    I have tried various chainloader commands but get NULL file or above error.

If I UEFI-boot again (after partnew command) and use File Manager to select the \efi\boot\bootx64.efi file (which uses chainloader -b -t grubfm_file) it boots fine!!!

Any idea why I need to reboot ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.