Ich habe meinen eigenen hochspezifizierten Linux-Desktop in dem Artikel "Ich habe einen hochspezifizierten Linux-Desktop mit Intel NUC + SSD 2 TB + DRAM 32 GB erstellt" erstellt. Als ich [zukünftige Probleme] vorstellte (https://qiita.com/y-vectorfield/items/2fcbc669a43fe0d0cb15#%E4%BB%8A%E5%BE%8C%E3%81%AE%E6%94%B9 % E8% 89% AF% E4% BA% 88% E5% AE% 9A% E8% A6% 81% E4% BA% 88% E7% AE% 97% E3% 81% A8% E3% 81% AE% E7 Ich schrieb, dass ich mich der Herausforderung stellen möchte, eine GPU-Maschine mit eGPU zu erstellen, indem ich die Tatsache ausnutze, dass sie Thunderbolt 3 als% 9B% B8% E8% AB% 87 unterstützt. Wir konnten aus verschiedenen Glücksgründen ein Budget zusammenstellen, so dass wir alle notwendigen Teile haben. In diesem Artikel möchte ich eGPU als ersten Schritt des Deep Learning Workstation-Konvertierungsplans für hochspezifizierte Linux-Desktops mit eGPU einrichten.
Externe GPU, dh eine externe GPU. Ursprünglich für Laptops mit nur einer GPU mit integrierter CPU entwickelt, wird ein Computer mit unzureichender Grafikleistung über eine Hochgeschwindigkeits-Kommunikationsstandardschnittstelle mit einer GPU mit höherer Leistung verbunden, um die Grafikleistung zu verbessern. Ist der Zweck. Kürzlich hat der Apple Store eine eGPU-Einheit (integrierte AMD Radeon) für das MacBook verkauft. Sie können die Grafikleistung verbessern, indem Sie sie an ein kompatibles MacBook anschließen. Dieses Mal möchte ich eine eGPU auf einem Desktop und einem Linux-Computer verbinden, um daraus eine Workstation für Deep Learning zu machen. Die zum Verbinden verwendete Schnittstelle ist Thunderbolt 3.
Die Vor- und Nachteile von eGPU werden nachfolgend beschrieben.
Die diesmal verwendete eGPU ist ein Kit, das eine GPU, die ursprünglich als Grafikkarte verkauft wurde, in eine eGPU umwandelt. Die Kosten für eGPU sind wie folgt.
Arten von Teilen | Modellnummer | Hersteller | Preis | Bemerkungen |
---|---|---|---|---|
Grafikkarte | NVIDIA Geforce RTX 2080 SUPER GALAKURO GAMING |
Expertenorientiert | ¥74,800. | NTT-Kauf bei X Store |
eGPU-Umrüstsatz | Razer Core X RC21-01310100-R3J1 |
Razer | ¥36,080. | Online bei PC Studio gekauft |
Gesamt: 110.880.. Insgesamt mit PC: 218.065 Yen. (Wenn PayPay berücksichtigt wird: 173.604 Yen.)
Die GPU hat NVIDIAs Geforce RTX 2080 SUPER (fachkundig) gekauft, da seine Verwendung als Workstation für Deep Learning das wichtigste Ziel der Konstruktion ist. Ursprünglich hatte ich vor, 2070 SUPER zu kaufen, was zwei Ränge niedriger ist, aber da es im NTT-X Store erhältlich war, kaufte ich die GPU spontan.
(Verkaufsseite des NTT-X Store ab 18. Februar 2020)Es ist die drittgrößte GPU von oben (nach TITAN RTX, RTX 2080 Ti) in der Geforce-Serie, die von NVIDIA als Allzweck-GPU verkauft wird. ~~ Ehrlich gesagt kann die Verwendung der 80er-Serie in einer Umgebung, in der mit einer Thunderbolt 3-Verbindung nicht die volle Leistung verfügbar ist, hinsichtlich der Kostenleistung die schlechteste sein. .. .. ~~
Es ist ein Kit zum Konvertieren einer Grafikkarte in eine eGPU. Ich fand es, als ich mich fragte, welches Hersteller-Kit ich kaufen sollte, um eine eGPU zu bauen, die mit dem Barebone-Intel NUC verbunden ist, mit dem ich meinen eigenen PC [die Website] hergestellt habe (https://nucfan.com/choose-egpu-for- Es wurde in Intel-Nuc /) eingeführt. Ist es nicht ein Produkt, das in Bezug auf Preis, Leistung und Zuverlässigkeit des Herausgebers ausgewogen ist? (Meine persönliche Meinung) Alle inländischen Online-Shopping-Sites sind jedoch ausverkauft, und immer mehr Sites sind mit einem höherwertigen USB- und LAN-Port ausgestattet und verkaufen nur Modelle, die 20.000 Yen höher sind. Ich fand es schließlich im Versandhandel des Personal Computer Studios und kaufte es. Es gibt ein billiges Kit, das in China hergestellt wird. Wenn Sie jedoch einen Fehler machen und den 2080 SUPER zerstören, ist er nicht in Mode. Deshalb habe ich ein Produkt gekauft, das von einem Grafikhersteller verkauft wurde, auch wenn es etwas teuer ist.
Ich war ehrlich fassungslos, als ich das eigentliche Produkt sah, das mir zugesandt wurde. Das Endergebnis ist, dass die eGPU viel größer ist als der PC selbst. : Schrei:
Das eigentliche Einrichtungsverfahren wird unten beschrieben. Es ist leicht zu beschreiben, aber bis ich herausgefunden habe, wie man es baut, war es die Geschichte des Kampfes: schreien_katze :. (Treiberinstallationsprozess usw.)
Docken Sie Geforce RTX 2080 SUPER (im Folgenden RTX 2080SP) an Razer Core X (im Folgenden Core X) an und konvertieren Sie es in eGPU. Die Installation ist nicht schwierig, da Sie nur den Deckel des Core X öffnen, RTX 2080SP im internen PCI-Steckplatz installieren und das Netzkabel (8-polig, 6-polig) anschließen. Aufgrund der großen Gehäusegröße ist die Verarbeitbarkeit jedoch schlecht oder der Steckplatz schlecht Es kann schwierig sein zu überprüfen, ob es in ist. Stellen Sie nach dem Zusammenbau noch keine Verbindung zum PC her. Anschließend wird beschrieben, wie Sie das CUDA Toolkit einrichten und die eGPU mit dem NVIDIA-Treiber ausführen. Das Einrichten mit einer seltenen Konfiguration mit zu wenigen Dokumenten ist jedoch nicht einfach und wird von Trial & Error nach mehrmaliger Wiederherstellung und Neuinstallation des Treibers gefunden. : dancer :: dancer_tone :: dancer_tone2 :: dancer_tone3 :: dancer_tone4 :: dancer_tone5:
: unschuldig: Wie man ab März 2020 eine eGPU einrichtet. : warning: Es soll als reine Linux-Maschine eingerichtet werden.
Ich habe viel nach dem Setup gesucht und festgestellt, dass die BIOS-Version des Intel NUC 8i7BEH, die für meinen eigenen PC verwendet wurde, alt war (0064) und die neueste Version 0077 war. Anscheinend scheint 0064 die Version zu sein, bevor die RTX-Serie verkauft wurde, also habe ich beschlossen, sie zu aktualisieren.
Der für diese Konstruktion verwendete Intel NUC ist ein UEFI-kompatibles Modell, und der sichere Start ist möglicherweise aktiviert. Deaktivieren Sie in diesem Fall zuerst den sicheren Start und richten Sie ihn dann ein. Um mit aktiviertem Secure Boot einzurichten, müssen Sie den Schlüssel registrieren. Derzeit gibt es keine Garantie dafür, dass die eGPU ordnungsgemäß funktioniert. Daher ist sie deaktiviert. Wenn Sie jedoch in Zukunft Ihr Verständnis für Secure Boot und UEFI vertiefen, möchte ich das Setup ausprobieren, wenn Secure Boot aktiviert ist.
: Warnung: Wenn Sie den oben genannten Vorgang ausführen, ist ein Dual-Boot mit Windows nicht möglich. : Schrei:
Installieren Sie einen NVIDIA-Treiber namens NVIDIA-Treiber, um den RTX2080SP zu betreiben. Wenn Sie das BIOS nicht so einstellen, dass UEFI Treiber von Drittanbietern laden kann, lädt UEFI den NVIDIA-Treiber nicht und Sie können den RTX 2080SP nicht verwenden.
Wenn Sie zwei oder mehr PCs haben, ist es praktisch, sich bei dem PC anzumelden, der mit SSH eingerichtet werden soll. Installieren Sie OpenSSH Server, damit Sie sich mit SSH anmelden können. (Da das Betriebssystem möglicherweise nicht die neueste Version ist, werden wir auch ein passendes Upgrade implementieren.)
sudo apt install -y openssh-server
Ich denke, dass die auszuwählende Umgebung je nach Ihren Vorlieben und Ihrer Umgebung unterschiedlich sein wird, z. B. die Methode zum Anmelden ohne Kennwort mithilfe einer Schlüsseldatei und die Methode zum Anmelden mit einem Kennwort. Bitte beachten Sie die Artikel im Internet für jede Einstellungsmethode.
Verbinden Sie die eGPU mit dem PC-Gehäuse. Wenn Sie Ihren PC starten, dreht sich der Lüfter mit einem dröhnenden Geräusch. Dies ist keine Fehlfunktion, sondern ein Vorgang, der auftritt, weil die Hauptfunktionen wie die Lüftersteuerung nicht funktionieren, weil die Zertifizierung des Thuderbolt 3-Geräts nicht abgeschlossen wurde. Wenn die GUI aktiviert ist (Desktop-Version), wird ein Bildschirm angezeigt, in dem Sie zur Kennwortauthentifizierung aufgefordert werden. Geben Sie das Kennwort ein, und die Explosion wird beendet. Diese Methode kann bei Verwendung der CLI nicht verwendet werden. Daher wird beschrieben, wie Sie sich auch in der CLI-Umgebung authentifizieren.
Verwenden Sie den Befehl bolctl
, um die UUID eines Thunderbolt 3-Geräts (Core X in diesem Artikel) herauszufinden. Die folgende Anzeige erscheint. Notieren Sie sich uuid.
$ boltctl
● Razer Core X
├─ type: peripheral
├─ name: Core X
├─ vendor: Razer
├─ uuid: <Einzigartige UUID>
├─ status: connected
│ ├─ domain: domain0
│ └─ authflags: none
├─ connected: <Datum und Uhrzeit der Verbindung>
└─ stored: no
Führen Sie die Authentifizierung mit dem folgenden Befehl aus. Sie werden aufgefordert, das Kennwort einzugeben. Geben Sie also das Benutzerkennwort ein, und Sie sind fertig.
sudo boltctl authorize <Uuid>
Wenn die Authentifizierung abgeschlossen ist, wird die Explosion gestoppt.
Wenn Sie nach der Authentifizierung "Boltctl" ausführen, wird Folgendes angezeigt.
$ boltctl
● Razer Core X
├─ type: peripheral
├─ name: Core X
├─ vendor: Razer
├─ uuid: <Einzigartige UUID>
├─ status: authorized
│ ├─ domain: domain0
│ └─ authflags: none
├─ authorized: <Datum und Uhrzeit des Abschlusses der Authentifizierung>
├─ connected: <Datum und Uhrzeit der Verbindung>
└─ stored: no
Die Authentifizierungsinformationen werden nicht so gespeichert, wie sie sind, und die Authentifizierungsinformationen gehen beim Herunterfahren verloren (Rückkehr der Explosion). Stellen Sie daher die automatische Authentifizierung ein.
boltcl enroll --policy auto <Uuid>
● Razer Core X
├─ type: peripheral
├─ name: Core X
├─ vendor: Razer
├─ uuid: <Einzigartige UUID>
├─ dbus path: /org/freedesktop/bolt/devices/<Einzigartige UUID>
├─ status: authorized
│ ├─ domain: domain0
│ ├─ parent: c7010000-0090-8d18-a3c2-b11ccc631023
│ ├─ syspath: /sys/devices/pci0000:00/0000:00:1c.4/0000:02:00.0/0000:03:00.0/0000:04:00.0/domain0/0-0/0-1
│ └─ authflags: none
├─ authorized: <Datum und Uhrzeit der Zertifizierung>
├─ connected: <Datum und Uhrzeit der Verbindung>
└─ stored: <Datum und Uhrzeit der Speicherung der Anmeldeinformationen>
├─ policy: auto
└─ key: no
Wenn Sie eine NVIDIA-Grafikkarte an Linux anschließen, wird der OSS-Versionstreiber Nouveau-Treiber aktiviert, der durch Reverse Engineering des NVIDIA-Treibers implementiert wird. Führen Sie zur Überprüfung den folgenden Befehl aus.
lsmod | grep nouveau
Wenn aktiviert, wird das Jugendstilelement angezeigt. Führen Sie den folgenden Befehl aus, um ihn zu deaktivieren.
sudo sh -c "echo 'blacklist nouveau' > /etc/modprobe.d/blacklist-nouveau.conf"
sudo sh -c "echo 'options nouveau modeset=0' >> /etc/modprobe.d/blacklist-nouveau.conf"
sudo update-initramfs -u
sudo reboot
Fügen Sie das Repository zu Ubuntus apt hinzu und installieren Sie den Treiber. Die Installationsmethode über das offizielle NVIDA-Skript konnte mit der in diesem Artikel getesteten Konfiguration (eGPU-Konfiguration) nicht ordnungsgemäß ausgeführt werden.
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
ubuntu-drivers devices
vendor : NVIDIA Corporation
driver : nvidia-driver-440 - third-party free recommended
driver : nvidia-driver-435 - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
Installieren Sie zum Zeitpunkt der Installation die empfohlene Version.
sudo apt install nvidia-driver-xxx
sudo reboot
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.64 Driver Version: 440.64 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 208... Off | 00000000:07:00.0 Off | N/A |
| 0% 38C P8 16W / 250W | 0MiB / 7982MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
Als ich die eGPU einrichtete, blieb das X-Window-System hängen (dh die GUI wurde nicht gestartet) und ich habe viel gearbeitet, aber es hat sich überhaupt nicht verbessert. Nimm den Rest. Ich habe mich gefragt, ob die gesamte Investition bisher auf Wasserblasen zurückzuführen ist: schreien :, aber eine Community, die die Verbreitung von eGPU fördert, wurde ins Leben gerufen, und diese Community Lösung wird auf der Seite veröffentlicht. War dort. In Übersee beginnt diese Art von Community sehr schnell. Dieses Mal wollte ich meine Englischkenntnisse wirklich verbessern und aktiv teilnehmen können. Wenn Sie den eGPU Switcher einrichten, können Sie auch den Videoausgang auf dem Motherboard verwenden, um die eGPU nach Bedarf ein- und auszuschalten.
sudo add-apt-repository ppa:hertg/egpu-switcher
sudo apt update
sudo apt install -y egpu-switcher
sudo egpu-switcher setup
sudo reboot
Führen Sie danach die angezeigten Optionen (GPU-Auswahl usw.) aus und starten Sie neu, um das X-Window-System auf der eGPU zu starten. Schließen Sie nach dem Neustart das Kabel an den Ausgangsanschluss auf der Grafikkartenseite an, und die GUI wird auf dem Display angezeigt. (Empfohlene Verbindung vor dem Booten)
Found 2 possible GPUs...
1: NVIDIA Corporation Device 1e81 (rev a1) (7:0:0)
2: Intel Corporation Device 3ea5 (rev 01) (0:2:0)
Would you like to define a specific INTERNAL GPU? [y/N]: y
Choose your preferred INTERNAL GPU [1-2]: 2
Choose your preferred EXTERNAL GPU [1-2]: 1
[info] Saved new configuration to /etc/egpu-switcher/egpu-switcher.conf
[info] Automatically detecting if egpu is connected...
[info] EGPU is connected.
[info] Create symlink /etc/X11/xorg.conf -> /etc/X11/xorg.conf.egpu
Created symlink /etc/systemd/system/multi-user.target.wants/egpu.service → /etc/systemd/system/egpu.service.
[success] Done... Setup finished
$ nvidia-smi
Sun Mar 15 17:37:20 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.64 Driver Version: 440.64 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 208... Off | 00000000:07:00.0 On | N/A |
| 0% 30C P8 17W / 250W | 240MiB / 7973MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1324 G /usr/lib/xorg/Xorg 18MiB |
| 0 1446 G /usr/bin/gnome-shell 49MiB |
| 0 1627 G /usr/lib/xorg/Xorg 96MiB |
| 0 1772 G /usr/bin/gnome-shell 72MiB |
+-----------------------------------------------------------------------------+
Sie können es mit dem folgenden Befehl installieren.
sudo apt install -y nvidia-cuda-*
sudo reboot
Ich habe festgestellt, dass bei der Installation mit dieser Methode das CUDA 9.1 Toolkit installiert wird. Ich möchte das neueste CUDA-Toolkit hier installieren, daher wird es endlich hier veröffentlicht offizielle NVIDIA-Website Installieren Sie nach der Methode.
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub
sudo apt update
sudo apt -y install cuda
Registrieren Sie nach der Installation den folgenden PFAD in .bashrc
.
export cuda_version=$(/usr/local/cuda/bin/nvcc -V | grep "Cuda compilation" | awk '{print $5}' | awk '{sub(",.*","");print $1;}')
export PATH=/usr/local/cuda-${cuda_version}/bin:$PATH
export CPATH=/usr/local/cuda-${cuda_version}/include:$CPATH
export LIBRARY_PATH=/usr/local/cuda-${cuda_version}/lib64:$LIBRARY_PATH
Erstellen Sie nach dem Neustart die folgende Testquelle und führen Sie sie mit nvcc
aus.
hello.cu
#include <stdio.h>
__global__ void helloFromGPU()
{
printf("Hello World from GPU\n");
}
int main(void)
{
printf("Hello World from CPU\n");
helloFromGPU <<<1, 10>>>();
cudaDeviceReset();
return 0;
}
Bauen und ausführen
$ nvcc hello.cu
$ ./a.out
Hello World from CPU
Hello World from GPU
Hello World from GPU
Hello World from GPU
Hello World from GPU
Hello World from GPU
Hello World from GPU
Hello World from GPU
Hello World from GPU
Hello World from GPU
Hello World from GPU
Neueste architekturkompatible Version(2020/3 Derzeit)
$ nvcc -arc sm_75 hello.cu
$ ./a.out
Hello World from CPU
Hello World from GPU
Hello World from GPU
Hello World from GPU
Hello World from GPU
Hello World from GPU
Hello World from GPU
Hello World from GPU
Hello World from GPU
Hello World from GPU
Hello World from GPU
Referenz: https://developer.nvidia.com/cuda-gpus
lspci
Überprüfen Sie nach Abschluss des Setups den Status mit dem Befehl lspci
. Zu diesem Zeitpunkt wird der Name der GPU möglicherweise nicht korrekt wiedergegeben. Führen Sie in diesem Fall den Befehl update-pciids
aus, um den Namen korrekt wiederzugeben.
Referenz: https://www.nemotos.net/?p=3176
$ lspci | grep -i nvidia
07:00.0 VGA compatible controller: NVIDIA Corporation Device 1e81 (rev a1)
07:00.1 Audio device: NVIDIA Corporation Device 10f8 (rev a1)
07:00.2 USB controller: NVIDIA Corporation Device 1ad8 (rev a1)
07:00.3 Serial bus controller [0c80]: NVIDIA Corporation Device 1ad9 (rev a1)
$ sudo update-pciids
Downloaded daily snapshot dated 2020-03-07 03:15:01
$ lspci | grep -i nvidia
07:00.0 VGA compatible controller: NVIDIA Corporation TU104 [GeForce RTX 2080 SUPER](rev a1)
07:00.1 Audio device: NVIDIA Corporation TU104 HD Audio Controller (rev a1)
07:00.2 USB controller: NVIDIA Corporation TU104 USB 3.1 Host Controller (rev a1)
07:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU104 USB Type-C UCSI Controller (rev a1)
Ich werde hinzufügen, wie die Bibliothek cuDNN für die Hochgeschwindigkeitsberechnung von Deep Neural Network installiert wird.
Gehen Sie zur Download-Seite (https://developer.nvidia.com/rdp/form/cudnn-download-survey). Zum Herunterladen ist eine Registrierung der Mitgliedschaft erforderlich. Klicken Sie beim ersten Herunterladen auf "Jetzt beitreten", um sich als Mitglied zu registrieren.
Klicken Sie nach Abschluss der Registrierung auf "Anmelden", um sich auf der Download-Seite anzumelden. Aktivieren Sie "Ich stimme den Bedingungen der cuDNN-Softwarelizenzvereinbarung zu". Eine Liste der herunterladbaren cuDNNs wird angezeigt. Laden Sie die Version von cuDNN herunter, die Ihrem Betriebssystem und der von Ihnen installierten CUDA-Version entspricht.
Das Folgende ist ein Beispiel für "cuDNN v7.6.5 (18. November 2019) für CUDA 10.2". Klicken Sie auf den Link "cuDNN Library for Linux", um den Download der "tar file" zu starten.
Wechseln Sie in das Verzeichnis, in dem die Quelle gespeichert ist, und entpacken Sie die TAR-Datei.
tar xvf cudnn-10.2-linux-x64-v7.6.5.32.tgz
Ein Verzeichnis namens "cuda" wird erstellt und Dateien werden darin erweitert.
cuda/
├── NVIDIA_SLA_cuDNN_Support.txt
├── include
│ └── cudnn.h
└── lib64
├── libcudnn.so -> libcudnn.so.7
├── libcudnn.so.7 -> libcudnn.so.7.6.5
├── libcudnn.so.7.6.5
└── libcudnn_static.a
/ usr / local / cuda-Store
cudnn.h im Verzeichnis
includeim Verzeichnis <CUDA_VERSION>
und die Quelldateien in cuda / lib64
im Verzeichnis lib64
. Damit ist die Installation von cuDNN abgeschlossen.
Wir haben eine eGPU mit Razer Core X und NVIDIA Geforce RTX 2080 SUPER erstellt, sie an einen Linux-Computer angeschlossen und verschiedene Dinge eingerichtet. Diesmal war es eine Bauarbeit, die sowohl die Stärke als auch die Schwäche von OSS erlebte. In Zukunft möchte ich diese Workstation voll ausnutzen, indem ich den Jupyter Lab-Server mit Docker und die Umgebung von K8S aufbaue.
Reference [Mein Memorandum-etwas-](https://orebibou.com/2016/02/linuxunix%E3%81%A7%E6%96%87%E5%AD%97%E5%88%97%E3% 81% 8B% E3% 82% 89% E7% 89% B9% E5% AE% 9A% E9% 83% A8% E5% 88% 86% E5% 8F% B3% E3% 81% 8B% E3% 82% 89% E3% 83% BB% E5% B7% A6% E3% 81% 8B% E3% 82% 89% E4% BD% 95% E5% 80% 8B% E3% 80% 81% E3% 80% 87 / # i-6)
Recommended Posts